【我的笔记】引导

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和一个分区表。

【我的笔记】引导_第1张图片
【我的笔记】引导_第2张图片

显存在0xB800??????????????????????????????????????????


4、引导程序bootloader将操作系统(内核)读入到内存中。

(1)内核应该存放在1M以上。(1M=0x100000) 内核是ELF文件

访问1M以上的内存 --> 先将处理器切换到保护模式。(将CR0.PE置1)

【我的笔记】引导_第3张图片

(2)切换到保护模式之前建好GDT表(全局描述符表),至少一个代码段一个数据段

【我的笔记】引导_第4张图片
【我的笔记】引导_第5张图片
【我的笔记】引导_第6张图片

5、传参的两种方式:①(约定内存)堆栈   ②寄存器

6、控制器初始化

内存初始化:①重新做GDT表 --> 引导程序中只做了两个段并且引导程序完成后就回收了,内存GDT有内核代码段、内核数据段、用户代码段、用户数据段、任务状态段(用于中断切换)

②做好中断控制器(一开中断就来了)

你可能感兴趣的:(【我的笔记】引导)