Linux-0.11 启动流程分析

时间:2021-10-15 13:33:28

作者:admin

来源:纯净之家


  以上就是系统大全给大家介绍的如何使的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击系统大全官网吧。


当PC上电后,80x86架构的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字节代码(boot

Linux-0.11 启动流程分析

tup.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纯净版

系统下载排行榜71011xp

提取码
XGZS
关闭 前往下载