当前位置:首页 > 学习频道 > 计算机

计算机5.7.180x86存储管理的特点

日期:2016-03-24 10:55:38 来源:大学生学习网

  5.7.180x86存储管理的特点

80x86微处理器有实地址、保护虚地址和虚拟8086 三种模式的存储管理机制。

实地址模式是CPU初始化后工作的基本模式,它相当于一个高速的8086CPU。在实地址模式下,系统32位地址总线只能使用低20位(即 A19~A0),可寻址的有效地址空间为1MB。实地址模式下不支持虚拟存储器管理方式,程序只能在实地址空间内运行,由于CPU中用来寻址的寄存器是 16位,为了能寻址1MB的内存空间,实地址模式存储器采用分段的存储结构进行管理。但这种分段方式与虚拟存储器中的分段方式概念不同,前者指的是对实存 (内存)空间的分段,而后者指的是对虚存空间的分段。

保护虚地址模式引入了虚拟存储器的概念,可支持多任务操作。在保护模式下,32 位CPU可访问的物理存储空间为4GB(232字节),程序可用的虚拟存储空间为64TB(246字节)。保护模式支持4种特权级,可以隔离和保护操作系 统的核心代码不受用户软件的破坏,防止应用程序之间的干扰。

虚拟8086模式是一种既有保护功能又能执行16位微处理器软件的工作方式。虚拟8086模式的工作原理与保护模式相同,但程序指定的逻辑地址解释与8086微处理器相同。虚拟8086模式可以看做是保护模式的一种子方式。

80x86微处理器的实地址存储器管理方式已在第2章中做过详细介绍,本节重点讨论保护模式和虚拟8086模式存储器管理方式。

5.7.280x86保护模式存储管理

80x86微处理器工作在保护模式时对存储器的管理有两个特点:一是引入了分段分页虚拟存储器管理机制、二是引入了对存储器的保护机制。

1.分段分页存储器管理

32位微处理器的虚拟存储空间最大可达64TB(246字节),使用46位虚拟地址,采用分段分页管理机制,段的最大长度为4GB,段数最大可达16K 个。页的大小因CPU不同而异:80386/80486每页固定在4KB。Pentium允许页面扩大到4MB,由控制寄存器CR4中的第4位PSE来控 制页的大小。当PSE为1时,页面大小为4MB;当PSE为0时,页面大小为4KB。

分段分页存储器工作原理与上节介绍的相同:首先 将虚拟地址空间分成若干个大小不等的逻辑段,逻辑地址由间接指向段基址的16位段选择符和32位段内偏移量两部分组成,并由分段机制将46位逻辑地址转换 为32位线性地址(线性地址空间是一个不分段的、连续的地址空间地址空间的转换),然后再将线性地址空间等分为固定大小的若干页,将线性地址用页基址和页 内偏移量表示,以页为单位进行地址映射,并由分页机制将32位线性地址转换为32位物理地址。

2.分段方式中的地址转换

分段方式中的地址转换原理如虚线左侧部分所示。程序中的逻辑地址由16位段选择符(通过段选择符可获得32位段基址)和32位段内偏移量构成。逻辑地址 中的16位段选择符在程序执行时装载到相应的段寄存器CS、DS、SS、ES、GS、FS中,用来选择逻辑地址空间中的一个特定的段;32位偏移量由指令 中的寻址方式给出。

段选择符16位长:13位索引(Index)、1位表选择位(TI)和2位请求特权级(RPL)。其中,请求特权级不用于段选择,即16位中只有14位用于段选择,可寻址16K个逻辑段,加上每个段最大可达4GB,使32位微处理器的虚拟存储空间可达64TB。

由程序给出的逻辑地址通过描述符表中的描述符数组进行转换。逻辑地址在段寄存器CS、DS、ES、SS、FS、GS中的选择符用做在全局描述符表GDT 或局部描述符表LDT中索引段描述符。每当段选择符装入段寄存器时,由索引指向的段描述符自动从TI位所选定的GDT或LDT中取出,段描述符中的32位 段基址与逻辑地址中的32位偏移量相加即得到32位线性地址。若不启用分页机制(控制寄存器CR0的PG0)时,线性地址就是物理地址。

3.分页方式中的地址转换

当控制寄存器CR0的PG位置1时,就启用了分页存储器管理机制,它自动地把线性地址空间中的任何一页映射到物理空间的一页,将线性地址转换成物理地址。

分页方式中的线性地址到物理地址的转换是由驻留在内存中的页表来完成的。为了节省页表所占的内存空间,32位CPU采用两级页表机构:第一级用210个 表项构成页目录表,每项4个字节,共有1024项,占4KB内存,其物理基址由CR3控制寄存器提供;第二级也是由210个表项构成页表,每项也是4个字 节,最多1024个页表,占4KB内存。这样,两级页表组合起来只占8KB内存,即可描述220个表项。