[系列]OS学习-自己写操作系统(4)- 保护模式

第三章 保护模式

非常困难、内容非常多的一章。这一章的学习流程大致:

1.从实模式到保护模式的跳转。熟悉保护模式下寻址流程。GDT的实现,段选择子的实现,熟悉GDT中段描述符的格式,尤其是属性一项。

2.在GDT中,添加一个LDT。

3.从保护模式如何跳转回实模式?

4.CPL,RPL,DPL的关系,深入理解“保护”二字的意义

5.从0优先级,跳转到3优先级,体会“门”、TSS的详细意义

6.开启分页机制,熟悉页目录表基址寄存器cr3,以及页目录表-PDE,页表-PTE,以及32位CPU为什么最大寻址4GB。


下面就每一点说说自己的学习体会:

1.从实模式到保护模式的跳转,熟悉保护模式下寻址流程。GDT的实现,段选择子的实现。

这在上一篇博客中详细说明了。

要弄清楚跳转,就要弄清实模式和保护模式下的区别。

1.实模式下,用CS:IP的方式获得指令地址,然后取指,执行。保护模式下,CS中存放的是“代码段段选择子”,IP继续存放偏移量。所以跳转时一定要把CS里放进“代码段段选择子”。怎么放呢?

使用 jmp dowrd 代码段段选择子:00000000,就可以更改CS中的内容了。

2.可是,CPU怎么知道jmp语句执行时,是保护模式还是实模式?更改32位的cr0寄存器(0号控制寄存器),因此,jmp之前,一定要这样做:

MOV EAX, CR0

OR EAX,1

MOV CR0,EAX

当CR0的最低位为0——CPU在实模式下工作

当CR0的最低位为1——CPU在保护模式下工作

3.在Jmp 段选择子:0这句话之前,应该先把段选择子和对应的段描述符的内容填好。怎么填?看了这段代码,你会一目了然:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值