本文共 1145 字,大约阅读时间需要 3 分钟。
保护模式定义:
“保护”:用硬件对每个任务使用的内存空间进行保护,阻止其他任务的非法访问。 特点如下: A 采用虚拟存储管理,启用分段和分页机制。允许关闭分页机制 B 段内偏移地址32位,每个段最大232B=4GB,每个程序最多可以使用16K个段,理论上的虚拟地址空间为4GB×16K=64TB C 采用32位地址寄存器,如EBX,ESI,EIP,ESP等。 D 4个特权级:0,1,2,3 。 0级具有最高的特权,可以执行所有指令,建立和维护各种表格,管理整个系统,供操作系统进程使用 3级最低,3级任务只能访问操作系统分配给它的内存区间, 不能执行“特权指令”,访问IO设备的权限也受到限制。 供用户程序使用。
• 逻辑地址通过分段管理机构转换为32位的“线性地址”。 • 16位段寄存器内存放的不再是20位段起始地址的高16位,而 是这个段的一个编号,称为“段选择符(Segment Selector)”。 • 使用这个“段选择符”查找“段描述符表(Segment Descriptor Table)”,得到这个段的32位起始地址,加上32 位的偏移地 址,得到这个存储单元的32位“线性地址”。
• 32位线性地址通过分页管理机构转换为32位/36位的物理地址 • 所有的存储器以4KB为单位划分成“页(Page)”。 • 线性地址被划分成“页号”和“页内地址” 两部分,根据页号查找 “页表” ,得到这个页在内存真实的起始地址,加上页内地址, 得到该存储单元的物理地址。 • 如果通过查表发现该页还在硬盘中,则还要首先启用“换页”机制,把这个页调入内存。
段描述符表 由若干个段描述符组成,每个段描述符记录一个段的相关信息,如这个段的起始地址,段的长度,段的属性等 全局段描述符表(Global Descriptor Table, GDT)整个计算机内只有一张,存放操作系统使用的各种段的信息。 局部段描述符表(Local Descriptor Table, LDT)每个任务都有一张局部段描述符表,记录这个任务使用的段的信息。 中断描述符表(Interrupt Descriptor Table, IDT)记录“中断服务程序”的位置信息。
控制寄存器
控 制寄存器 | CRx | BIT31 | BIT30—BIT12 | BIT11—BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 |
CR0 | PG | 0000000000000000 | ET | TS | EM | MP | PE |
CR1 | 保留 |
CR2 | 页故障线性地址 |
CR3 | 页目录表物理页码 | 000000000000 |
转载地址:http://rpnfb.baihongyu.com/