微型计算机基本原理与应用(第二版)第15章 80x86保护模式原理与结构_第1页
微型计算机基本原理与应用(第二版)第15章 80x86保护模式原理与结构_第2页
微型计算机基本原理与应用(第二版)第15章 80x86保护模式原理与结构_第3页
微型计算机基本原理与应用(第二版)第15章 80x86保护模式原理与结构_第4页
微型计算机基本原理与应用(第二版)第15章 80x86保护模式原理与结构_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第16章80x86/Pentium保护模式原理与结构本章主要内容80x86/Pentium处理器保护模式的基本概念。保护模式的主要数据结构。保护模式的存储管理和地址转换、多任务和保护。保护模式的中断和异常操作。15.1保护模式概述

保护模式是80x86/Pentium最常用的工作模式,通常在开机或复位后,先进入实模式完成初始化,然后便立即转到保护模式。保护模式提供了多任务环境中各种复杂功能以及对复杂存储器组织的管理机制。只有在保护模式下,处理器才能充分发挥其强大的功能和本性,因此,也称保护模式为本性模式。所谓保护,主要是指对存储器的保护,即防止对存储器资源进行未经授权或不正确的访问。概括而言,保护模式具有如下特点:1.在保护模式下,其寻址机制不同于实模式,需要通过一种称为“描述符表”的数据结构来实现对内存单元的访问。描述符表中的描述符含有存储器段的位置、长度、类型及访问权限等信息。2.与实模式下段寄存器的内容即为段的实际基地址不同,保护模式下的段寄存器作为索引“描述符表”的变址寄存器来使用,即由它指向“描述符表”的某一项,而实际的段基址则放在段描述符中,此时段寄存器的内容称为“段选择符”(也称段选择子)。可见,在保护模式下,微处理器访问存储器段时对段寄存器的解释与实模式并不相同。3.在保护模式下,借助于存储器管理部件(MMU)的功能将磁盘等存储设备有效地映射到主存,使逻辑地址空间大大超过实际的物理地址空间。4.可以使用4级保护功能,以此实现程序与程序、用户程序与操作系统之间的隔离和保护,为多任务操作系统提供优化支持。15.2保护模式的主要数据结构15.2.1段描述符在保护模式下,把有关一个段的信息即段基址、限长(段的字节数)、类型、访问权限和其他属性信息存放在8字节长的数据结构中,这种数据结构称为“段描述符”,简称描述符(Descriptor)。有两种类型的描述符:非系统段描述符和系统段描述符。非系统段即应用程序段,也就是通常的代码段、数据段和堆栈段;而系统段包括任务状态段TSS(TaskStateSegment)和各种门,另外,局部描述符表也作为一种系统段。任务状态段是多任务系统中的一种特殊数据结构,它对应一个任务的各种信息。15.2.2描述符表为了查找和识别,把系统中的描述符按线性表的形式来组织,即构成描述符表。描述符表的每一项就是一个描述符。描述符表由操作系统建立,并由操作系统维护和管理。有三种类型的描述符表:全局描述符表GDT、局部描述符表LDT和中断描述符表IDT。全局描述符表GDT含有可供系统中所有任务使用的段描述符。局部描述符表LDT只含有与系统中某一个给定任务相关联的描述符。中断描述符表IDT含有指出各中断服务程序位置及相关属性信息的描述符。采用描述符表带来的优点如下:

1.

可以极大地扩展存储空间。

2.

可以实现虚拟存储。

3.

可以实现多任务隔离。由于描述符表是位于存储器中的,因此系统中分别用一个寄存器来指出其位置,并称该寄存器为描述符表寄存器。共有三个描述符表寄存器,分别是全局描述符表寄存器GDTR、局部描述符表寄存器LDTR和中断描述符表寄存器IDTR。15.2.3段选择符每个段描述符都有一个与之对应的段选择符。在保护模式下,16位段寄存器的内容即为段选择符。段选择符对GDT或LDT提供索引、全局/局部标志以及请求特权级信息。即用段选择符的高13位来选择描述符表中8192个描述符中的一个描述符(213=8192),用段选择符的右数第3位决定是从GDT中还是从LDT中选择描述符,用段选择符的最低两位指出请求特权级。注意,段选择符并不直接指向段,而是指向定义段的段描述符。段选择符的格式及功能如图15.1所示。153201全局描述符表局部描述符表段选择符(16位)图15.1段选择符的格式及功能现对段选择符各字段的含义解释如下:索引:位15~3。在全局描述符表GDT或局部描述符表LDT的8192个描述符中选择一个描述符。处理器将索引值乘8,再加上GDT或LDT的基址,结果用来选择一个段描述符。TI:位2。表指示器,指定要用的描述符表,该位复位时,选择GDT;该位置位时,选择LDT。RPL:位1~0。请求特权级,指定选择符的特权级。特权级为0~3,为0时特权级最高。例15.1

假定LDT的基址为00120000H,GDT的基址为00100000H。如果装入CS寄存器的选择符的值为1007H,那么请求特权级是多少?是GDT还是LDT的段描述符?段描述符的地址是什么?解将选择符用二进制表示,得到CS=0001000000000111B,由于最低两位为11,所以请求特权级RPL=3。

右数第3位(表指示器TI位)为1,说明段描述符位于LDT中。将最左13位的值乘以8,即可得到描述符相对于表基址的偏移量:偏移量OFFSET=0001000000000B×8=1000H;

段描述符地址为:00120000H+1000H=00121000H。15.3

保护模式的存储器管理和地址转换微处理器保护模式的软件体系结构还与存储器的组织和管理密切相关。传统上,是由单独的存储管理部MMU(专门的集成电路芯片)来实现存储管理功能。在这种情况下,如果程序访问的地址不在当前MMU管理范围内,就会出现故障,产生一个出错信号,并将控制交给操作系统,由操作系统运行一些专门的程序进行故障处理。这样,不但会减慢系统速度,而且又给操作系统设计带来麻烦。15.3.1物理地址、线性地址与逻辑地址处理器在其地址总线上实际送出的地址为物理地址。在保护模式下,常规的物理地址空间为4GB(232字节)。该地址空间是平面的,连续地址范围是0~FFFFFFFFH。该物理地址空间可以映射成随机存储器RAM、只读存储器ROM以及存储器映像的I/O地址。PentiumⅡ、PentiumⅢ系列处理器可以将物理地址空间扩展到236字节(64GB),其最大物理地址为FFFFFFFFFH。该扩展是由处理器内部的控制寄存器CR4的第5位即物理地址扩展(PAE)标志来激活。编写程序时,程序中所指定的地址不是物理地址,而是二维的逻辑地址,亦称虚拟地址。分段机制将逻辑地址转换为一维的中间地址,这种中间地址称为线性地址。15.3.2虚拟地址和虚拟地址空间保护模式的存储器管理部件使用48位的存储器指针,它又分为两部分:选择符和偏移量。该48位的存储器指针即为虚拟地址或逻辑地址。如图15.2所示,选择符16位长,偏移量32位长。前面曾谈到选择符可放在80386DX的段选择符寄存器中。

图15.2保护模式存储器指针图15.3说明了16位的选择符又分为13位索引、1位表指示器(TI)和2位请求特权级(RPL)。其中2位的RPL并不用于存储器段选择,因此,16位中只有14位用于寻址,这样,虚拟地址空间可容纳214(16384=16K)个存储器段,每个段最大可达4G字节。

图15.3段选择符格式另外一种查看虚拟地址空间大小的办法是将14位段选择符和32位偏移量结合起来,得到46位虚拟地址,从而80386DX虚拟地址空间可包含246(64T)个字节。15.3.3虚拟地址空间的分段80386DX的存储器管理部件实现了虚存的分段和分页模型。在分段模型中,64T字节虚拟地址空间分成了32T字节的全局存储器地址空间和32T字节的局部存储器地址空间。该划分大致可见图15.4。图15.3中所示的选择符的TI位用来选择是全局还是局部描述符表。每个地址空间最多为8192个存储器段。图15.4虚拟地址空间的划分局部地址空间32T字节全局地址空间32T字节虚拟地址空间64T字节在80386DX的多任务软件环境中,一个应用通常表示为一些任务的集合。这里所说的任务指共同完成某项功能的多个程序的集合。当80386DX启动一个任务时,它可以激活全局存储器段或局部存储器段。该想法如图15.5所示。注意任务1、2、3各自都有一个局部地址空间。这部分存储器中的数据和代码只能被相应的任务访问,即任务2不能访问任务1的局部地址空间中任何信息。另外,所有任务都共享全局地址空间。这部分通常包含被所有任务共享的操作系统资源和数据。任务1的局部地址空间全局地址空间任务3的局部地址空间任务2的局部地址空间图15.5一个任务的全局和局部存储区任务3的虚拟地址空间任务1的虚拟地址空间任务2的虚拟地址空间15.3.4物理地址空间和虚实地址转换80386DX的分段和分页存储管理机制允许将48位虚拟地址映射到硬件所需的32位物理地址。该地址转换过程大致可见图15.6。首先是对虚拟(逻辑)地址进行段转换。然后,如果禁用分页机制,则产生的线性地址就是物理地址。如果允许分页机制,线性地址再经过页转换产生物理地址。选择符偏移量段转换页转换逻辑地址015031PG=0?禁止分页线性地址物理地址允许分页031图15.6逻辑地址到物理地址的转换03115.3.5

段式地址转换假定关闭了分页机制,在这种情况下发生的地址转换过程如图15.7

中的深颜色部分所示。图15.8

表示段转换过程中进行的操作。前面曾指出过80386DX的段选择符寄存器CS、DS、ES、FS、GS和SS提供的段选择符可用来选择是进入全局描述符表还是局部描述符表。当选择符值装入段寄存器时,由TI位选中的描述符表中的描述符自动从存储器取出并装入相应段描述符缓存寄存器中。注意,定义段基址、大小和属性的是描述符而非选择符。选择符偏移量段转换页转换逻辑地址015031PG=0?禁止分页线性地址物理地址允许分页031图15.7禁止分页时逻辑地址到物理地址的转换031图15.8逻辑地址转换为物理地址的操作从图15.8中可看到,80386DX对每个段选择符寄存器都有一个64位的内部段描述符高速缓存寄存器。这些高速缓存寄存器不能被编程者访问。指令执行时它们被透明地装入段描述符。从图15.9可以看到,高速缓存寄存器中的段描述符分为三部分:12位的访问权限信息、32位的段基址和20位的段限长。32位的段基址确定了要访问段的起始位置。对于数据段而言,给数据段描述符高速缓存寄存器装入相应值就实现了从16位选择符到对应的32位数据段基址的映像。

图15.9段选择符寄存器及描述符高速缓存寄存器数据段中操作数的位置由逻辑地址中偏移量来确定。例如,假定下一条执行的指令要求访问数据段中的操作数,并且该指令使用基址寻址方式规定操作数,那么EBX寄存器中装的就是操作数相对于数据段基址的偏移量。图15.10给出了根据段选择符从描述符表中得到段基址然后加上偏移量从而形成32位线性(物理)地址的具体操作过程示意图。由该图可见,先根据段选择符中的TI位选中GDT(TI=0)或LDT(TI=1),再由选择符的高13位提供的索引值在某个描述符表中选中一个段描述符。段描述符提供一个32位的段基址,将此段基址加上偏移量就得到了线性地址。在禁止分页的情况下,线性地址就是物理地址。选择符偏移量逻辑地址01503101215063TI=0TI=1段基址063031线形地址031图15.10线性地址形成过程示意图例15.2

假定在图15.10中的逻辑地址由段选择符0100H和偏移量00002000H组成,从描述符中读出的段基址为00030000H,若禁止分页,则操作数的物理地址是多少?解

逻辑地址=0100:00002000H物理地址=段基址+偏移量=00030000H+00002000H=00032000H15.3.6页式地址转换80386DX的保护模式体系结构也支持存储器地址空间的分页组织。分页存储管理机制在分段存储管理机制下工作,如果允许分页,则80386DX的地址空间组织又有所不同。如果不用分页,则每个段最多可以分配4G字节的物理地址空间,最少1字节。如果用了分页,则物理地址空间被划分成1048496(1M)页,每页4096(4K)字节长。图15.11表示物理地址空间按这种方式的组织形式。4K4K4K4K4K图15.11物理地址空间的分页管理分页存储器的这种固定大小的块有一个缺点,就是存储管理程序每次分配都最少是4K字节,即使它们并不全用。这些未用的存储器区域称为碎片。碎片导致存储器使用效率降低,但是分页大大简化了存储管理程序的实现。从图15.12可以看到,在允许分页的情况下,段转换过程所产生的线性地址不再用作物理地址,它还要经过称为“页转换”的第二个转换过程。图15.12线形地址到物理地址的分页转换选择符偏移量段转换页转换逻辑地址015031PG=0?禁止分页线性地址物理地址允许分页031031图15.13给出了在进行页转换时线性地址的具体格式,它由三部分组成:10位的页目录域,10位的页表域及12位的偏移量域。通过后边的介绍我们将会看到,这三部分分别为页目录项、页表项及页面中的存储单元提供各自的偏移量。图15.13

线性地址格式图15.14显示了一个线性地址怎样转换成对应的物理地址。存储器中页目录表的起始地址由控制寄存器CR3中的页目录基址寄存器(PDBR)确定。PDBR实际上是CR3的高20位,CR3的低12位始终为0,即页目录表的选取总是从4K字节的边界处开始。页目录表为4K字节长,包含1K个32位的页目录项。每个页目录项中的物理基址指向一个物理存储器中的页表。图15.14页式地址转换过程示意图1211031222180386DX转换检测缓冲器(TLB)操作数页表项

物理存储器页目录表(4K,1024项)●●●●●页目录项031PDBR(CR3)●●●页表(4K,1024项)页(4K,字节)页目录项和页表项的格式相同,图15.15给出了它们的具体情形。从图15.14已经看到,它们均可被缓存于转换旁视缓冲器TLB中。图15.15页目录项和页表项格式对页目录项和页表项中所含信息解释:1.物理基址:如为页目录项,则为页表的物理起始地址,即页表基地址;如为页表项,则为页的物理起始地址,即页基地址。注意,页目录项或页表项只提供基地址的高20位(第12位至31位),低12位设定0,这样,页表或页总是定位于4K字节地址的边界处。2.

存在标志位P:若P=1,则对应的页表或页存在于主存储器中;若P=0,则对应的页表或页不在主存储器中,使用时会出现页故障,控制寄存器CR2就是用来保存页故障线性地址的寄存器。产生页故障时,操作系统会将此页表或页从外存(一般为磁盘存储器)调入内存中来,并重新启动刚才引起页故障的指令。当然,这些操作对应用程序而言是完全透明的。3.访问标志位A:当对某一个页表或页进行访问时,处理器将该标志位置1,并保持为1。A位为系统提供本页表或页的使用情况信息,从而帮助操作系统在进行页面调度时选择哪一页应当从内存中调出,一般是选长期未用过的页或近期最少使用的页调出。在实际运行中,当页表或页在一开始装入到内存时,所有页目录项及页表项的A位均被清0。

操作系统定期扫描这些表项,如发现A位为1,就知道对应页表或页被访问过,操作系统据此增加该页对应的“访问次数记录”,当需要调出一页时,长期未用的页和近期使用最少的页被选中。4.页面写标志位D:D位只用于页表项,如果所指页中任一个地址执行了写操作,则该标志位置1。D标志位有时形象地称之为脏位(Dirty)。当一页从磁盘调入内存时,由操作系统的存储器管理软件将D位清0,以后,当对此页进行写操作时,处理器将该位置1,并保持为1。

当选中某页调往磁盘时,若检测到对应的D位仍为0,则说明此页一直没被写过,所以不需要往磁盘重写,从而使调出过程变得十分简单。D位对页目录项无意义。在页式虚存系统中,操作系统可通过A和D位来跟踪页的使用情况。5.用户/系统位U/S:若U/S=0,则用户程序不能访问该页;U/S=1,才允许用户程序读/写该页。这是为了保护操作系统所使用的页面不受用户程序的破坏而设置的。6.读/写标志位R/W:为页表或页指定读、写权限。若R/W=0,为只读;R/W=1,为可读/写。7.

保留位AVL(3位):可被编程者使用。注意页目录项中指定的保护属性对页表所指向的所有页都适用,但是页表项指定的属性只适用于它定义的页。只有在页目录项和页表项中的U/S位都为1时,一个用户程序才能读对应的页;同样,只有两个表项的U/S和R/W都为1时,用户程序才能读/写对应页。如果违反了操作规则,则将引起页故障。例15.3

如果某一活动页的页目录项是F1000007H,页表项是01000005H,则该页被指定的是用户级还是系统级?用户级或系统级所允许的访问权限是什么?解

首先将页目录项用二进制形式表示,得到:F1000007H=11110001000000000000000000000111B

可见,页保护位为U/SR/W=11,即给页指定的是用户级和可读/写权限。再将页表项用二进制形式表示:

01000005H=00000001000000000000000000000101B

发现:U/SR/W=10,它定义页为用户级,只读。由于页表项定义的页属性更具有约束性(更严格),所以它是有效的。即用户软件(应用程序)只能读取该页中的数据。15.3.7转换旁视缓冲器TLB(快表)转换旁视缓冲器TLB实际上是置于处理器内部的小型高速缓冲存储器,在采用分页机制进行线性地址到物理地址转换时,用以缓存从存储器中读出的页目录项和页表项。与通常的高速缓存(Cache)技术相同,TLB也是基于程序访问的局部性原理进行工作的。TLB中共可缓存8至1024个最近使用过的页表项,通过操作系统的跟踪来实现这些表项的保持和更新。在操作系统的技术术语中,常将TLB称为“快表”,而把主存中的页目录表或页表称为“慢表”。15.4

多任务和保护80x86/Pentium微处理器实现了多任务的软件体系结构。这里的多任务是指其硬件允许软件系统中存在多个任务并能够以分时的方式执行。也就是说,程序控制在经过一固定的时间间隔后从一个任务切换到另一个任务。比如,任务可以循环方式(round-robin)执行,即最近执行的任务回到要执行任务清单的末尾。尽管该过程是以分时的形式进行,但处理器执行起来还是会让用户觉得所有任务都是同时运行。当一个任务调入运行时,它既有全局存储器资源又有局部存储器资源。局部存储器地址空间按任务进行划分,即每个任务一般都有它自己的局部存储器段。全局存储器中的段可被所有任务共享。从而,一个任务可以访问全局存储器中的任意一段。如图15.5所示,任务1、2、3既有专用地址空间又有全局地址空间。15.4.1保护和特权级可以在保护模式的软件系统中加入防护措施以防止任务的存储器资源未经授权或不正确访问,这种存储器防护措施称为保护。80x86/Pentium处理器的硬件实现了一种保护机制,在多任务环境下,该机制对任务的局部和系统资源的访问作了限制,使得各个任务之间隔离开来。段、页和描述符是80x86/Pentium处理器保护机制的关键元素。当采用分段存储器管理模型时,段是具有特定保护属性的虚拟存储器地址空间中的最小单位。其保护属性由段描述符中的访问权限信息和段限长字段定义。另外,在存储器访问过程中硬件保护机制要执行一系列检查,例如类型检查、限长检查、地址域限制、过程入口点限制以及指令集限制等。为了实施特权级检查,处理器识别下述三类特权级:①描述符特权级DPL。每一个描述符包含一个描述符特权级DPL。它存放在段或门描述符的DPL字段中。它表明了什磨样的特权级程序可以使用这个段。②当前特权级CPL。CPL是当前正在执行的程序或任务的特权级,它保存在CS寄存器的第0和1位。任何时候,处理器总是在某一个特权级上运行,当前特权级CPL确定了正在执行的程序或任务的特权级。当程序控制被转移到不同特权级的代码段时,处理器就改变CPL。

如果CPL比所访问段的特权级DPL低,就会产生异常。用公式表示,即要求:

CPL≤DPL③请求特权级RPL(requestorprivilegelevel)。RPL是分配给段选择符的特权级,保存在段寄存器的第0和第1位。请求特权级表明了程序要求以什磨样的特权级来访问这个段。它和DPL的关系类似于CPL和DPL的关系,即要求:

RPL≤DPL处理器将RPL与CPL一道检查,确定是否允许访问某个段。可用统一的公式表示,即应满足:

MAX(CPL,RPL)≤DPL图15.16不同特权级访问数据段举例内核图15.17保护环0级1级2级3级操作系统数据库管理等应用程序任务A的局部地址空间任务B的局部地址空间任务C的局部地址空间全局地址空间15.4.2保护模式的中断和异常操作为了支持任务和虚拟存储器等功能,在工作于保

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论