linux案例分析.docVIP

  • 19
  • 0
  • 约3.46万字
  • 约 50页
  • 2016-06-25 发布于江西
  • 举报
linux案例分析

内核启动过程 图1 内核启动流程 系统上电后,从位于0XFFFF0的BIOS开始启动,BIOS收集系统的资源信息,如内存大小等; BIOS将引导扇区读入0X7C00处,并将控制权交给引导扇区程序bootsect.S; bootsect.S将其自身拷贝至0X90000处,bootsect.S将内核影像解压拷贝至0X100000处,并将控制权交给内核映像的入口startup_32(head.S); head.S将内核空间和用户空间的2个页表分别映射到相同的0-8M物理内存中,这样在系统启动过程中从内核空间和用户空间都可以访问到相同的一段内存,通过setup_idt设置初始状态的中断向量表,设置CPU的GDTR和IDTR,在head.S结束处调用start_kernel; 在start_kernel中首先调用setup_arch,在setup_arch中首先统计BIOS收集的内存信息,同时设置系统第一个进程的相关控制结构,并设置系统内存管理的相关数据结构; 在start_kernel里面调用kernel_thread(init, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGNAL)创建系统第一个可以参与调度的进程,也是系统所有进程的父进程init,最后在start_kernel内调用cpu_idle进入CPU的空转进程; 在内核线程init内继续执行系

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档