by pascal4123(http://pascal4123.cublog.cn)
root Linux启动引导程序
电源打开后,80x86 CPU进入实模式,并从
0xFFFF0处执行代码,这通常是BIOS的地址。
BIOS执行某些系统的检测,并在物理内存0处初始化中断向量。此后 把启动设备的
MBR(磁盘第一个扇区,512字节)复制到0x7C00处,并跳转到这里。
1:实模式 寻址采用和8086相同的16位段和偏移量,最大寻址空间1MB,最大分段64KB。可以使用32位指令。32位的x86 CPU用做高速的8086。
3:保护模式 寻址采用32位段和偏移量,最大寻址空间4GB,最大分段4GB (Pentium Pre及以后为64GB)。在保护模式下CPU可以进入虚拟8086方式,这是在保护模式下的实模式程序运行环境。
linux最前面的部分boot/sect.s,被bios读入0x7c00处,它被执行时将自己移到0x90000处(?),并把启动设备后2k(setup.s)读入到0x90200,并把控制权移交给setup.s中的代码,内核其他部分(system模块)则被读入到0x10000处,随后移动到内存起始处0x0000,这样system模块代码地址也即物理地址,便于对内核代码和数据的操作。
阅读(747) | 评论(0) | 转发(1) |