以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 操作系统原理 』 (http://bbs.xml.org.cn/list.asp?boardid=63) ---- Linux 操作系统启动部分的主要执行流程 (http://bbs.xml.org.cn/dispbbs.asp?boardid=63&rootid=&id=25061) |
-- 作者:enorm -- 发布时间:12/6/2005 9:37:00 PM -- Linux 操作系统启动部分的主要执行流程 当PC 的电源打开后,80x86 结构的CPU 将自动进入实模式,并从地址0xFFFF0 开始自动执行程序代码,这个地址通常是ROM-BIOS 中的地址。PC 机的BIOS 将执行某些系统的检测,并在物理地址0 处开始初始化中断向量。此后,它将可启动设备的第一个扇区(磁盘引导扇区,512 字节)读入内存地址0x7C00 处,并跳转到这个地方。启动设备通常是软 驱或是硬盘。这里的叙述是非常简单的,但这已经足够理解内核初始化的工作过程了。 Linux 的最最前面部分是用8086 汇编语言编写的(boot/bootsect.s),它将由BIOS 读入到内存0x7C00处,当它被执行时就会把自己移到绝对地址0x90000 处,并将启动设备(boot/setup.s)的下2kB 字节的代码读入内存0x90200 处,而内核的其它部分(system 模块)则被读入到从地址0x10000 开始处,因为当时system 模块的长度不会超过0x80000(即512KB),所以它不会覆盖在0x90000 处开始的bootsect 和setup 模块。在系统加载期间将显示信息"Loading..."。然后控制权将传递给boot/setup.s 中的代码,这是另一个实模式汇编语言程序。启动部分识别主机的某些特性以及vga 卡的类型。如果需要,它会要求用户为控制台选择显示模式。然后将整个系统从地址0x10000 移至0x0000 处,进入保护模式并跳转至系统的余下部分(在0x0000 处)。此时所有32 位运行方式的设置启动被完成: IDT、GDT 以及LDT 被加载,处理器和协处理器也已确认,分页工作也设置好了;最终调用init/main.c 中的main()程序。 |
-- 作者:reallyh -- 发布时间:12/7/2005 4:16:00 PM -- 顶个 |
-- 作者:reallyh -- 发布时间:12/7/2005 4:17:00 PM -- 顶个 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
5,539.063ms |