1、计算机加电or Reset后:
处理器工作在实模式、分页机制关闭
CS(代码段寄存器)选择符为0xF000、基址为0xFFFF0000,EIP初值为0x0000FFF0
第一条指令地址为0xFFFFFFF0,位于一块Flash Memory中,,是一个长跳转指令,是BIOS入口。
2、①BIOS有两个地址0xFFFFFFF0和0xFFFF0,访问的地方相同,为一个长跳转指令。
②保护模式中,指令地址=CS段基地址+EIP;实模式中,指令地址=CS<<4+EIP。
系统开机时在实模式,采用保护模式的计算方式,因为只有CS被重载之后才会是用实模式计算地址。
③0xFFFFFFF0处的长跳转 --> CS=0xf000,IP=0xe05b,所以下一条指令在0xfe05b。
之后按照实模式地址计算方式。
3、BIOS将系统基本配置信息记录在BIOS数据区0~4KB
BIOS将引导设备第一扇区(主引导记录MBR)读到内存0x7C00处,然后执行第一上去上的引导程序。(制度一个扇区,若一个扇区不够再自己读)
磁盘第0扇区主引导记录MBR:一段引导程序bootloder和一个分区表。
显存在0xB800??????????????????????????????????????????
4、引导程序bootloader将操作系统(内核)读入到内存中。
(1)内核应该存放在1M以上。(1M=0x100000) 内核是ELF文件
访问1M以上的内存 --> 先将处理器切换到保护模式。(将CR0.PE置1)
(2)切换到保护模式之前建好GDT表(全局描述符表),至少一个代码段一个数据段
5、传参的两种方式:①(约定内存)堆栈 ②寄存器
6、控制器初始化
内存初始化:①重新做GDT表 --> 引导程序中只做了两个段并且引导程序完成后就回收了,内存GDT有内核代码段、内核数据段、用户代码段、用户数据段、任务状态段(用于中断切换)
②做好中断控制器(一开中断就来了)