您的位置:首页 > 其它

写操作系统(六)执着 实模式与保护模式对比学习

2009-02-16 03:05 267 查看
通过向各位老师和前辈学习,下面是我对实模式与保护模式的总结。

1.实模式(Real Mode):16 bit processor modes。
     在前面所写的代码均为bit 16实模式
         特点:
(1)      Memory Address = (Segment Address * 16(decimal)) + Offset             物理地址=段地址*16+偏移地址
(2)      限制1MB的内存       由于地址总线为20位,所以寻址范围为1MB
(3)      限制段的最大长度为64k    由于偏移地址由16位寄存器给出,所以寻址范围为64K
(4)      没有虚拟存储/代码保护    由于实模式会出现Overlapped Segment,即段之间重叠,这样很容易越界
(5)      实模式下多为单任务,且由于寻址范围的限制,功能少。
2.保护模式(Protected Mode):32 bit processor modes
     编写一个强大的内核,必然会用C之类的语言,而C是须32位的环境
特点:
(1)      地址由DT按“段地址”查到相应描述符,得到的真实地址+偏移
(2)      32位地址线,拥有4GB的寻址
(3)      实现虚拟存储和代码保护
 

3. 实模式下程序运行的条件的满足:
(1)         运行所需的指令用CS寄存器配合IP寄存器通知CPU指令的内存地址。
(2)         运行所需的数据由DS,ES,FS,GS,SS等不同用途的寄存器指定不同用途的数据在内存中的位置。
(3)         运行时所要调用系统服务子程序,用中断机制完成                                                                                     
4.   实模式与保护模式的最大区别:地址转换方式
(1)         实模式下,公式为:段寄存器=ES,段基址=ES*0X10,偏移地址=DI,物理地址=段基址+偏移地址(左移四位加偏移)。
(2)         保护模式下,选择子=ES,段基址=全局描述符中选择子指定描述符,偏移地址=DI,物理地址=段基址+偏移地址。
(3)         总结,映射方式的不同。实模式=左移四位;保护模式=查全局或局部描述表。
5.  实模式转变为保护模式的变化
(1)         数据段:是实模式下代码段,数据段,堆栈段,终端服务程序的统称
(2)         描述符:用来描述数据段,为8个字节,第5个字节说明说明描述符类型。描述符组成在一起成为描述符表,即地址转换表。
(3)       选择子:为2个字节,第2位表RPL,第三位说明是GDT还是LDT,最高13位描述符在描述表中的地址,13位的寻址范围恰为:8k。
6.    GDT/LDT的位置。GDR表示GDT在内存中的段地址和段限:段地址32位,段限16位=48位(即最大的段为64k,每个描述符为8k,所以共有64k/8=8k个)。同样,LDR表示LDT在内存的位置,但由于,LDR本身也是数据段,它须有描述符,且该描述符放在GDT中,因此,LDR只是比DS,ES等多了一个“选择子”,用于GDT中获得LDT的地址。
7.    中断服务的位置。中断/陷阱描述符构成中断描述符表(IDT),由全地址寄存器IDTR(48b=32+16)存放。注,虽然亦可有8k项,即8k个中断,但是x86之提供256个中断。
8.     由保护模式实现多任务的支持的理由:CR3寄存器(共32位,第12均为零)用于存放一级页表的内存地址。CR3会被当作任务环境的一部分当任务被切换时被存入到TSS数据段中。TSS数据段有一个 TSS描述符,存放于GDT中。另外,TR寄存器用于存放描述符的选择子。
9.      分页机制的作用:解决不同任务之间访问内存冲突的问题,即实现由逻辑地址向物理地址映射。方式为“页表”(两级页表):
(1)         TSS:实现多任务起着重要的作用,通过它实现任务的切换,它将保存被切换出的任务的当前环境。
(2)         控制寄存器:用于控制和确定处理器操作模式以及当前模式
CR0:处理器当前模式和状态的系统控制标志。
CR1:保留。
CR2:含有导致错误的地址,页故障线性地址寄存器。
CR3:页目录基址。存放一级页表。
10.       总结:保护模式比实模式多了什么?
(1)         寄存器 GDR,LDR,IDR,TR,CR3
(2)         数据段,描述符表(GDT,LDT),任务数据段(TS),页表
(3)         机制,权限检测(利用选择子/描述符/页表项的属性位),线性地址到物理地址的映射
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  任务 存储 终端 语言 x86 c