第1章 Pentium保护模式存储管理

上传人:飞*** 文档编号:7886388 上传时间:2017-08-10 格式:PPT 页数:67 大小:1.72MB
返回 下载 相关 举报
第1章  Pentium保护模式存储管理_第1页
第1页 / 共67页
第1章  Pentium保护模式存储管理_第2页
第2页 / 共67页
第1章  Pentium保护模式存储管理_第3页
第3页 / 共67页
第1章  Pentium保护模式存储管理_第4页
第4页 / 共67页
第1章  Pentium保护模式存储管理_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《第1章 Pentium保护模式存储管理》由会员分享,可在线阅读,更多相关《第1章 Pentium保护模式存储管理(67页珍藏版)》请在金锄头文库上搜索。

1、,吉林大学计算机科学与技术学院 制作,微型计算机原理与接口技术(第2版),北京:科学出版社 出版,赵宏伟 于秀峰 黄永平 秦贵和,第1章 Pentium保护模式存储管理,1.1 虚拟存储器及其工作原理 虚拟存储器又称为虚拟存储系统。虚拟存储器是为满足用户对存储空间不断扩大的要求而提出的,随着用户程序复杂性的增加,占用存储空间越来越大。其解决办法是,可扩大主存,但是造价高,空间利用率很低,并不是好的途径。采用虚拟存储器,可较好地解决这个问题。虚拟存储器这个概念是1961年由英国曼彻斯特大学的Kilburn等人提出的,并于20世纪70年代广泛应用于大中型计算机之中,现在的微型计算机也都采用了这种技

2、术。虚拟存储器是由主存储器、辅助存储器、辅助硬件和操作系统管理软件组成的一种存储体系。它把辅助存储器作为主存储器的扩充,对应用程序员来说,好像计算机系统有一个容量很大的主存。虚拟存储系统的目标是为了增加存储器的存储容量,它的速度接近于主存,单位造价接近于辅存,因此性能价格比很高。,表1.1.1 虚拟存储器和Cache存储器的比较,1.1.1 地址空间及地址,在虚拟存储器中有3种地址空间及对应的3种地址。3种地址空间分别是虚拟地址空间、主存地址空间、辅存地址空间。虚拟地址空间:又称为虚存地址空间,是应用程序员用来编写程序的地址空间,与此相对应的地址称为虚地址或逻辑地址。主存地址空间:又称为实存地

3、址空间,是存储、运行程序的空间,其相应的地址称为主存物理地址或实地址。辅存地址空间:也就是磁盘存储器的地址空间,是用来存放程序的空间,相应的地址称为辅存地址或磁盘地址。,1.1.2 虚拟存储器工作原理,存贮管理方式,由于采用的存贮映象算法不同,就形成了不同的存贮管理方式,其中主要有段式、页式和段页式3种。Pentium支持分段存储管理、分页存储管理和段页式存储管理。Pentium微处理器片内存储管理部件负责对物理存储器实施安全可靠且行之有效的存储管理操作。当存储管理部件正常运转时,程序是不能直接对物理存储器进行寻址操作的,只能对一个被称之为虚拟存储器的存储器模型进行寻址操作。Pentium微处

4、理机的存储管理部件由分段部件和分页部件组成。分段部件可以提供多个各自独立的地址空间,而分页部件可以使用少量的随机存储器(RAM)和磁盘存储器去支持一个很大的地址空间模型。由程序提供的地址叫做逻辑地址。分段部件的功能之一就是将逻辑地址转换成一个连续的不分段的地址空间,这个地址空间的地址叫做线性地址。而分页部件的主要功能就是将线性地址转换成物理地址。,1.2 分段存储管理,1.2.1 分段存储管理的基本思想 通常,一个程序由多个模块组成,特别是在结构化程序设计思想提出之后,程序的模块性就更强了。一个复杂的大程序总可以分解成多个在逻辑上相对独立的模块,模块间的界面和调用关系是可以清楚定义的。这些模块

5、可以是主程序、各种能赋于名称的子程序或过程,也可以是表格、数组、树、向量等某类数据元素的集合。模块的大小可以各不相同,有的甚至事先无法确定。但每一个模块都是一个特定功能的独立的程序段,都是以该段的起点为0相对编址。把主存按段分配的存储管理方式就称为段式管理。程序进入内存时,各程序段要求占据相对独立的内存区间。因此,现代微机系统把物理空间分成相对独立的许多内存段,每个内存段放置一个程序段,至此内存段与程序段统一,统称为段。一个程序拥有多个段、不同程序占据不完全相同的几个段。而且管理系统所需要的信息放置在属于系统所有的段中。,1分段存储管理工作过程,2虚拟地址和虚拟地址空间,Pentium微处理机

6、在保护模式下的存储器管理单元使用48位的存储器指针。它分为段选择符(或简称为选择符)和偏移量两部分。该48位存储器指针称为虚拟地址,它在程序中用以规定指令或数据的存储器位置。段选择符16位,偏移量32位。段选择符可放在Pentium微处理机段寄存器中。若要访问存储器中的代码,则段选择符应放在CS中。若要访问存储器中的数据,则段选择符应放在DS、ES、FS、GS、SS中的任意一个。偏移量放在Pentium微处理机的用户可访问的寄存器中。若要访问存储器中的代码,则偏移量放在EIP寄存器中。若要访问存储器中的数据,则偏移量放在EAX、EBX、ECX、EDX、ESI、EDI等寄存器中。由于偏移量是32

7、位长,所以段大小可达4G字节。我们说段大小可达4G字节是因为段大小实际上可变的,它可从1个字节到4G字节。,保护模式下的存储器指针及段选择符格式,3虚实地址转换,Pentium微处理机的分段存储管理机制允许将46位虚拟地址映射到硬件所需的32位物理地址。首先由虚拟地址(也称逻辑地址)段选择符部分的13位索引字段确定段描述符在段表(也称段描述符表)的位置。然后取出段描述符中的32位基地址并与偏移量相加,得到32位的线性地址。如果不启用分页功能,则线性地址就直接作为物理地址。,虚实地址转换示意图,1.2.2 段描述符,段描述符是Pentium微处理机存储管理部件用以管理64T字节虚拟存储地址空间分

8、段的基本元素。一个段描述符对应于虚拟地址空间中的一个存储器段。段描述符是位于主存中的一种数据结构,由系统程序创建,它为处理机提供段的基本信息。所有段描述符均由8个字节组成。段描述符内保存着供处理机使用的有关段的属性、段的大小、段在存储器中的位置以及控制和状态信息。一般说来,各段描述符都是由各种编译程序、各种连接程序、各种装入程序或者是操作系统产生的,而不是由各种应用程序生成的。段描述符按段的性质可分为程序段描述符、系统段描述符和门描述符,如图1.2.4所示。对于不同的描述符,其格式存在差异。,段描述符的分类,1程序段描述符,程序段描述符的格式:(1)基地址字段Pentium微处理机用这个字段来

9、规定某一个段在4GB物理地址空间中的起始位置。段描述符的第24和第7字节组成了32位的基址字段,这个基址可以访问4G(232)字节的主存空间。(2)段界限字段段描述符中的段界限字段是用来定义段的大小规模。段描述符的第0、1字节和第6字节的低4位是20位的段界限字段,该字段的值决定了段的长度,而该字段的值的单位由“G”位决定。“G”位称作粒度位,用来确定段界限所使用的长度单位。(3)粒位G字段段描述符中的这个字段是用来确定段界限所使用的长度单位。段描述符的第6字节的D7位是粒度位G字段。G=0时,段的长度以一个字节为单位。G=1时,段的长度以4K(212)字节为单位。当G=0时,段界限字段值的范

10、围可从1B到1MB(因为段界限为20位)范围。在这种情况下,段界限字段的值可在1B的基础上,每次增值1B。当G=1时,段界限字段值的范围可从4KB到4GB范围。在这种情况下,段界限字段的值可在4KB的基础上,每次增值4KB。,(4)分类S字段 段描述符中的第5字节的D4位“S”字段是用来区分是系统段描述符还是非系统段描述符。当S=0时,是系统段描述符。当S=1时,是非系统段描述符。(5)段存在位P字段P字段表示该段是否在内存中。段描述符的第5字节的D7位是P字段。当P=1时,表示该段在内存中。当P=0时,表示该段不在内存中。 (6)系统可用位AVL字段表示系统软件是否可用本段。段描述符的第6字

11、节的D4位是AVL字段。当AVL=1时,表示系统软件可用本段。当AVL=0时,表示系统软件不能用本段。 (7)特权级DPL字段这个字段用来定义段的特权级。段描述符的第5字节的D6、D5位是DPL字段。DPL字段占有2位,故有4个特权级:00、01、10、11,称作0级、1级、2级、3级。0级的特权最高,1级次之,3级的特权最低。借助于保护机构,用这个字段定义的特权级去控制对这个段的访问。其访问原则是高特权级的程序段可以访问低特权级程序的数据段,反之则不行。,(8)类型TYPE字段段描述符的第5字节的低4位是类型TYPE字段。类型TYPE字段在不同的段描述符中有不同的格式。1)数据段或堆栈段描述

12、符中的类型TYPE字段。数据段或堆栈段描述符中的类型TYPE字段的格式如表1.2.2所示。 E可执行位。当E=0时,是数据段或堆栈段。 ED扩展方向位。当ED=0时,向上扩展(地址增加方向),通常用于数据段。它指明段的地址范围是从基地址向高位地址方向扩展,可以一直扩展到该数据段的上界,上界的界限值是最大值。在数据段内,段界限字段规定了该数据段的上界,使用时,段的偏移量值必须小于等于界限值。当ED=1时,向下扩展(地址减小方向),通常用于堆栈段。它指明从段的最大偏移量处向低位地址方向扩展,可以一直扩展到该堆栈段的下界,下界的界限值是最小值。在向下扩展的堆栈段内,段界限字段规定了该堆栈段的下界,使

13、用时,偏移量的值必须大于界限。在80X86系统中,堆栈向小地址方向生成,堆栈底部的地址最大,随着压入堆栈的数据增多,栈顶的地址越来越小,这就是“向下扩展”的含义,为此,要规定一个界限,使栈顶的偏移量不能小于这个值。, W可写位。当W=0时,不允许写入。当W=1时,允许写入。 A访问位。当A=0时,该段尚未被访问。当A=1时,该段已被访问。2)代码段描述符中的类型TYPE字段代码段描述符中的类型TYPE字段的格式如表1.2.3所示。 E可执行位。当E=1时,是代码段。 C一致性位。所谓一致性检查,就是采用特权级进行控制。当C=0时,表示非一致性代码段,此时忽视段描述符的特权值。当C=1时,表示一

14、致性代码段,需要进行特权级检查。 R可读位。当R=0时,不允许读。当R=1时,允许读。当然,对程序段来说,通常都是“可执行的”。R位取0可防止用户程序对存储器里的“目标程序代码”做手脚。R位为0的描述符只能加载到CS的描述符寄存器,而R位为1的描述符可加载到CS、DS、ES、FS及GS的描述符寄存器,此时,可以读取段内的数据(程序代码)。 A访问位。当A=0时,该段尚未被访问;当A=1时,该段已被访问。,(9)D位/B位字段段描述符的第6字节的D6位是D位/B位字段。这个字段在代码段描述符中叫做D位字段,而在数据段和堆栈段描述符中叫做B位字段。该字段可分为下述三种情况。1)在代码段描述符中,用

15、来指示代码段中缺省的操作数的长度和有效地址长度。当D=1时,说明采用的是32位操作数和32位有效地址的寻址方式。D=0时,则说明采用的是16位操作数和16位有效地址的寻址方式。2)在堆栈段描述符中,用来指示堆栈指针寄存器的大小。当B=1时,使用的是32位的堆栈指针寄存器ESP。当B=0时,使用的是16位的堆栈指针寄存器SP。堆栈段的上界是一个各位均为1的地址。当B=1时,上界地址值为0FFFFFFFFH。当B=0时,上界地址值为0FFFFH。3)在数据段描述符中,用来指示数据段中操作数的长度。当B=1时,使用的是32位的操作数。当B=0时,使用的是16位的操作数。(10)兼容位字段段描述符的第

16、6字节的D5位必须是0,以便与将来的处理器兼容。,程序段描述符的格式,2系统段描述符,系统段描述符中的类型TYPE字段的格式,3门描述符,门描述符用来控制访问的目标代码段的入口点。所谓门是一种关卡,用来控制从一段程序到另一段程序或从一个任务到另一个任务的转移。在转移过程中自动进行保护检查,并控制转移到目的程序的入口。门描述符包括调用门、任务门、中断门和陷阱门。这些门为控制转移提供了一个间接的办法,这一办法允许处理器自动地完成保护检查。它也允许系统设计者控制操作系统的入口点。调用门用于改变特权级别,任务门用于任务切换,中断门和陷阱门用于确定中断服务程序。门描述符的第0、1、6、7字节是一个32位

17、的偏移地址,第4字节是一个字计数,第2、3字节是一个段选择符,第5字节是门描述符的属性。32位的偏移地址指向中断服务程序或其他程序的入口。,门描述符的格式,1.2.3 全局描述符表及寄存器,全局描述符表由段描述符组成。全局描述符表和段描述符都由系统程序产生。描述符表就是描述符的一个阵列,是存放在主存中的一种数据结构。在Pentium微处理机中,全局描述符表寄存器GDTR指定了全局描述符表GDT在内存中的起始地址。全局描述符表是Pentium微处理机进入保护方式后存储器管理系统中的一个重要组成部分。GDTR是Pentium微处理机中的48位寄存器。该寄存器的低2个字节标识为16位界限,它规定了GDT按字节进行计算的地址范围的大小。GDTR的高4个字节标为32位基地址,指示GDT在存储器中开始的物理地址。用装全局描述符表寄存器指令LGDT和存全局描述符表寄存器指令SGDT,可以对全局描述符表寄存器GDTR的内容进行装入和保存的操作。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号