当前位置: 起动盘 >> 起动盘优势 >> 应聘50家大厂总结的高频面试题湖南长沙
一.uboot启动流程
1.硬件初始化:U-Boot首先进行硬件初始化,包括CPU、内存、外设等的初始化工作,以便后续的代码能够正确运行。
2.加载U-Boot镜像:U-Boot启动时会从存储介质如闪存、SD卡)读取U-Boot镜像并加载到RAM中。
3.启动执行U-Boot镜像:将读取到的U-Boot镜像复制到RAM中,然后跳转到U-Boot代码的入口地址开始执行。执行U-Boot代码可以进行更多初始化和配置工作
4.配置和检查环境变量:U-Boot通常使用环境变量来保存系统的配置信息,例如启动参数、IP地址、MAC地址等。在启动过程中,U-Boot会读取环境变量信息并进行检查和配置,以确保系统的正确性。
5.加载内核镜像:U-Boot会根据环境变量中定义的内核映像位置和参数,从存储介质中加载操作系统内核映像到内存中。6.启动执行内核镜像:内核镜像加载完成后,U-Boot会将控制权交给内核,并开始执行内核代码,从而启动整个系统。
二.内核启动顺序
内核启动顺序可以简单地概括为以下三个阶段
1.体系结构初始化:内核在启动时首先进行一系列的体系结构初始化工作,包括处理器芯片、存储器、总线、中断控制器、时钟、串口、以太网等硬件的初始化。这样,操作系统可以使用这些硬件功能来进行后续的工作。
2.启动加载程序(bootloader):bootloader是一种引导加载程序,其作用是从存储介质(硬盘、U盘、CD等)中读取内核映像文件,并把内核载入内存并启动内核执行。常用的bootloader有GRUB、U-Boot等
3.内核初始化和启动:内核被加载入内存后,开始执行启动代码,它会先进行各种初始化工作,建立操作系统的基本环境和数据结构,然后进行系统设置和设备驱动程序的初始化,最终启动系统的第一个进程通常是init进程。
三.线程和进程哪个更费资源,为什么
具体来说,与进程相比,线程所需的内存空间更少上下文切换效率更高,且同一进程内的多个线程可以共享该进程所拥有的资源,包括代码段、堆和文件描述符等。
另一方面,进程所需要的资源相对较多,包括地址空间、文件描述符、信号处理器、用户ID和组ID等。在创建进程时,需要为其分配独立的内存空间、打开标准输入输出等文件描述符,并且还需要进行一些额外的初始化工作,这些操作会占用相对较多的系统资源
综上所述,线程比进程更节省资源,不仅因为线程所需的内存空间更小,而且其创建、切换和销毁等操作成本更低。但是,在某些情况下,进程比线程更加可靠和安全,因此在选择使用线程或进程时,需要根据具体的应用场景来进行权衡和选择。
最后,给大家分享一下嵌入式开发的学习资料,有需要的评论区扣哦