您的位置:首页 > 其它

Intel 80386的保护模式

2010-10-04 23:41 916 查看
1. 实地址模式

当CPU通电或RESET时,cr0的PE位置0, 进入实地址模式。这里不在赘述。

2. 保护模式

80386提供分段和分页两种存储管理模式

● 分段管理的特点:对存储空间的逻辑划分,优点:对模块化(结构化)程序设计方式提供了很好的支持; 缺点:① 段长可变不固定, 管理更复杂、② 空间碎片较多、③ 访问字节数 ∕传输字节 可能很小

● 分页管理的特点:对存储空间的物理划分,优点:① 页面长度固定,管理机构简单、② 访问字节数/传输字节通常更大; 缺点:① 一个页面内的程序或数据可能不具有完整意义, 不利于结构化程序设计、② 存在“内零头”(内部碎片)

硬件上支持两种存储管理方式, 吸收两种模式的优点, 为不同的操作系统提供了更多支持。

(1)分段管理

80386的数据代码段描述子的格式:




G:粒度位: 0:段长以字节为单位;1:段长以页面为单位

访问权字节:P(1)、DPL(2)、S(1)、E(1)、ED/C(1)、W/R(1)、A(1)共8位,与80286相同。E:0 (数据段, ED有效);1 (代码段, C有效);ED:1:段向上生长;0:段向下生长。且W/R为0 数据段不能写;1 数据段可以写。C:1: 一致性代码段(可不同特权级共享),当CPL≥DPL时,代码段只能执行;0: 非一致性代码段, 要求访问和被访问代码段特权级相同。且W/R为0 数据段不能写;1 数据段可以写。

(2) 分页管理

CR0寄存器中的PG位=0,不允许分页,经分段部件出来的地址(即线性地址=物理地址);

如果PG=1,则允许分页,经分段部件出来的线性地址仍为虚地址,必须经分页部件转换成物理地址。

[1] 分页的寻址过程

从虚地址到实地址的转换过程。目标:根据线性地址, 得到物理页面基地址以及该页面内的偏移量。 于是,基于简单查表的转换机构的不可行性。

所以,我们建立二级查表机制:

◆ 第一级表:称为页目录, 共1024项, 称为页目录项。每一项用来指示一个二级表(的基地址);

◆ 第二级表:称为页表, 共1024项, 称为页表项。每一项用来指示一个页面地基地址。

由此可得:二级表共可以指示1024×1024个页面的基地址, 即1M个页面的基地址。

80386中,页目录只有一个,大小为4K,常驻内存;页表1024个,不常驻内存。二级表的地址转换过程:将虚拟地址的高20位分成两部分, 分别用于指示两种不同表的表项(作为表内的偏移量)。 如下图所示:




(3)页目录项和页表项的组成

● 页目录项



● 页表项



1M个页,每个页面的长度4K。实际访问时基地址单位量的增/减跨越4K空间,因此,前20位仅表示A31~A12,低12位自动补0。

CR3寄存器所提供的页目录基地址也只给了20位基地址,用于查找常蛀内存的页目录使用。

控制位:

D 修改位:页目录项的D位无意义;页表项D位为1表项所对应的页面在内存中已被修改。在换页时, 需要将内存中的这个页面先写回磁盘。页表项D位为1表示未作修改换页时不必写回磁盘。
A 访问位:页目录项A位为1则对应的页表已被访问过、为0则对应的页表未被访问过(操作系统可用该位并结合时钟对页表实施LRU淘汰算法);页表项A位为1表示对应的页面已被访问过、为0表示对应的页面未被访问过(操作系统可用该位并结合时钟对页面实施LRU淘汰算法)。

P 存在位为1表示对应的页表或页面在内存空间;为0表示对应的页表或页面不在内存空间。

U/S R/W 与(当前)程序特权级 CPL 的配合使用:




(4) TLB表(Translation Lookaside Buffer, 快表 )

针对页地址转换的Cache,工作原理:




TLB表的结构 — TLB表的每一项组成:




32个表项构成一个4路8组的矩阵




转换过程描述:

用线性地址高20位的低3位(D14D13D12)经译码选中某一组(比如5组);用高17位与4路的5组(有4个5组)中所含的线性地址的高17位同时匹配(用比较电路可以实现), 哪一路匹配, 就选中那一路的5组,被选中的组送出物理基地址并与线性地址的低12位(即页内偏移) 形成物理地址
3.80386的I/O及保护

(1) 端口寻址

端口独立寻址方式

低16位地址寻址64K空间(8位端口)

2个连续8位端口可组成一个16位端口; 4个连续8位端口可组成一个32位端口

(2)寻址方式

I/O指令的寻址方式:直接寻址和间接寻址。

直接寻址:指令中直接给出以立即数方式的端口地址, 范围是0~255。

间接寻址:端口地址由寄存器(DX)来指示, 寻址范围0~65536(64K)。

(3)I/O保护

当系统工作在保护模式下, I/O操作受到特权级权限的保护。

执行I/O指令时,必须在数值上满足:CPL≤IOPL (标志位寄存器)

在应用程序中, 通过调用操作系统实现I/O操作, 操作系统具有最高的特权级, 可通过操作系统实现对系统I/O资源的统一管理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: