Linux-0.11 启动流程分析
系统教程导读
收集整理了【Linux-0.11 启动流程分析】操作系统教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含869字,纯文字阅读大概需要2分钟。
系统教程内容图文
【当PC上电后,80×86架构的CPU将自动进入实模式(指寻址采用和8086相同的16位段和偏移量,最大寻址空间1MB,最大分段64KB。可以使用32位指令。32位的x86 CPU用做高速的8086),并从地址0xF000:0xFFF0开始自动执行代码(这个地址通常是BIOS ROM中的地址)此条代码是一个远跳转指令:jmp far 0xF000:0xE05B。这时BIOS开始执行某些系统检测及设定(POST上电自检、中断例程、系统设置程序等等,并在物理地址0处开始初始化中断向量。此后,它将可启动设备的第一个扇区(磁盘引导扇区,512字节)读入到内存绝对地址0x0000:0x7C00处 即31KB,并跳转到这个地方开始执行。被读入的文件就是用8086汇编编写的(boot/bootsect.s)。
bootsect.s 将会把自己移动到内存绝对地址0x90000(576KB)处,并把启动设备后2KB字节代码(boottup.s)读入到内存0x90200处,而内核的其他部分(systen模块)则被读入到内存地址0x10000(64KB)开始处,
setup.s 程序将会把system模块移动到物理内存起始位置处。负责从BIOS中获取系统数据,并将这些数据放到系统内存的适当位置。接下来加载中断描述符表寄存器(idtr)和全局描述符表寄存器(gdtr),开启A20地址线,重新设置两个中断控制芯片8259A,将硬件中断号重新设置为0x20~0x2f。最后设置CPU的控制寄存器CR0(机器状态字),从而进入32位保护模式,并跳转到位于system模块最前面部分head.s程序继续执行。
head.s程序执行完成后,已经正式完成了内存页目录和页表的设置,并重新设置了内核实际使用的中断描述表idt和全局描述符表gdt。另外还为软盘驱动程序开辟了1KB字节的缓冲区。 】
【本文来自http://www.win7cn.com/如需转载请注明!推荐:win7纯净版】
系统教程总结
以上是为您收集整理的【Linux-0.11 启动流程分析】操作系统教程的全部内容,希望文章能够帮你了解操作系统教程Linux-0.11 启动流程分析。
如果觉得操作系统教程内容还不错,欢迎将网站推荐给好友。