Orange'S:一个操作系统的实现 读书笔记-2
2013/05/01
###第三章
因为引导扇区空间有限,所以借用Freedos的引导扇区,通过Freedos来调试程序。
从实模式跳转为保护模式的步骤:
- 将DESC_CODE32初始化
- 把GDT的物理地址填充到GdtPtr中
- 将GdtPtr指示的6字节加载到gdtr
- 打开A20地址线
- 将cr0的第0位置置为0
- 跳转至保护模式
GDT/LDT均为描述表。
特权级由CPL、DPL、RPL三者控制。
代码段之间的转移分为两类:
- 通过JMP和CALL直接转移
- 通过某个描述符间接转移
分页机制:物理地址 = f(线性地址)
可以调用中断15H来知道机器有多少内存。
异常:
- Fault 可更正的异常,一旦更正产生,程序可以不失连续性地继续执行,Fault之前的状态会被保存,返回地址为产生Fault的指令。
- Trap 发生在trap命令执行之后立即被报告的异常,它也允许程序或任务不失连续性地执行,返回地址为产生Trap之后的指令。
- Abort 不总是报告精确异常位置发生的异常,它不允许程序或任务继续执行,而是用来报告严重错误的。
发送中断:
OCW1:被写入IMR 判断此终端是否应被丢弃。
EOI:每次中断处理结束 发送一个EOI给8259A,以便继续接受中断。