保护虚拟模式与存储管理补充知识.ppt_第1页
保护虚拟模式与存储管理补充知识.ppt_第2页
保护虚拟模式与存储管理补充知识.ppt_第3页
保护虚拟模式与存储管理补充知识.ppt_第4页
保护虚拟模式与存储管理补充知识.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

保护虚拟模式与存储管理补充知识,内容提要: 1.32位X86的内部结构,原理及基本工作方式。 2.虚拟存储系统原理,Windows与LINUX存储管理与多任务机制,寄存器组,基本结构寄存器,系统级寄存器,浮点寄存器,调试测试寄存器,1.基本结构寄存器,AH A,31,16,15,X AL,8,7,0,BH B,X BL,CH C,X CL,DH D,X DL,SI,DI,BP,SP,EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP,CS,SS,DS,ES,FS,GS,IP,FLAGS,指令指针IP,标志寄存器EFLAGS,通用寄存器,段寄存器,代码段,堆栈段,数据段,系统级寄存器,4个控制寄存器,4个系统地址寄存器,P G,C D,N W,.,A M,W P,.,N E,1,T S,E M,M P,P E,Intel保留,页故障线性地址寄存器,页目录值,P C D,P W T,控 制 寄 存 器,CRO,CR1,CR2,CR3,31,24,23,18,16,15,8,7,0,CR0: PE:保护虚拟地址方式的允许位。PE=1,保护方式;PE=0,实方式. PG:分页允许位。PG=1,允许分页部件工作(PE=1);反之禁止。 CD:片内CACHE无效位。若CD=1,片内CACHE不命中时,则不需将所 需信息读入CACHE. NW:片内CACHE非写直达位。NW=0,数据写入CAHCE的同时也写入主存,否则只写入CACHE. WP:页写保护位。WP=1,禁止任何特权级的程序对只读页面进行写入操作。 AM:对界检查控制位。 NE:数据异常位。TS:任务切换位;EM:仿真协处理器位;MP:监视协处理器位 CR2:保留所检测到的上一个页面故障的32位线性地址。 CR3:12-31位保留着一级页表(页目录)的物理基址。PWT,PCD可对CACHE进行控制。,系统地址寄存器又称作保护方式寄存器,仅能在保护方式下使用。 GDTR:全局描述符表寄存器,48位,高32位是全局描述符表的线性基地址,低16位是界限。 如:(GDTR)=0800,0000,0FFFH,则全局描述符表的第一个地址为0800,0000H,末地址为0800,0FFFH,表大小为1000H. IDTR:中断描述符表寄存器,48位,高32位是中断描述符表的线性基地址,低16位是界限。 LDTR:局部描述符表寄存器,用于存放LDT的线性基地址、界限、属性和16位的选择符。 只有16位的选择符是可见的,其它的由硬件自动装入内容。 TR:任务状态寄存器,存放当前正在执行的任务的线性基地址、界限、属性和16位的选择符。只有16位的选择符是可被访问。,3.调试与测试寄存器,8个调试寄存器,5个测试寄存器,断点0线性地址,断点1线性地址,断点2线性地址,断点3线性地址,保留,保留,调试状态寄存器,调试控制寄存器,0,31,DR0,DR7,Cache测试控制,Cache测试数据,Cache测试状态,TLB测试控制,TLB测试状态,0,31,TR3,TR7,DR0-DR3用于设置数据存取和代码执行断点; DR7是调试控制寄存器,用于选择调试功能和设置断点; DR6用于指明断点的当前状态。 测试寄存器用于测试自身的片内CACHE和转换用旁视缓冲区(TLB)。,微处理器的地址空间,1.存储地址空间,虚拟空间,线性空间,物理空间,虚拟空间又称逻辑空间,是应用程序员编写程序的空间。246(64TB),物理空间又称主存空间,是存储器的实际空间。232(4GB),80486采用段页式虚拟存储器。将程序按逻辑结构分段,每段再分为若干大小相同的页;主存空间也划分为若干同样大小的页。建立相应的段表和页表,分两级查表实现虚实地址转换。以页为单位调进或调出主存,按段共享与保护程序与数据。80486 段号为16位,段内地址为32位,因此最多可将整个虚拟空间分为64K段,每段4GB。,2.输入输出(I/O)空间,80486有两个独立的物理空间:储存空间、I/O空间,4GB,64K,物理存储空间,物理I/O空间I/O,00000000H,FFFFFFFFH,00000000H,0000FFFFH,可访问,不可访问,工作模式简介,实地址模式,保护虚拟模式,两种工作模式:,2.3.1.实地址模式,1.存储空间及实地址模式下的编址,实地址模式下的存储空间为220,及1M字节。 物理地址的形成方式:段寄存器内容左移4位加上有效地址。 如:CS内容为1000H,IP为8888H,则实地址模式下的物理地址为: 1000H16+8888H18888H,在实地址模式下,有两个物理存储空间是需要保留的: 地址0000,0000H-0000,03FFH是中断向量区,每个中断向量占用4个字节; 地址FFFF,FFF0HFFFF,FFFFH为系统初始化区,当加电或复位时,物理地址 自动置为FFFF,FFF0H。,2.保留的地址空间,保护虚拟地址模式,80486工作在保护虚拟地址模式时,充分发挥了80486所具有的存储管理功能和硬件支撑的保护机制,为多用户操作系统的设计提供有力的支持。同时在保护方式下,80486也允许运行已有的8086、80286、80386的软件。,1.保护概念 在程序运行过程中,应防止应用程序破坏系统程序、某一应用程序破坏其它应用程序、错误地把数据当作程序运行等情况的出现。为避免出现这些情形所采取的措施称作“保护”。,操作系统内核,系统服务及接口,应用程序,0,1,2,3,80486 4级特权保护,特权规则:特权级P存储在某段上的数据,只能由不低于P的特权级访问;具有特权级P的的程序或过程只能由不高于P级上执行的任务调用。,2.存储空间 在保护方式下,80486可为每个任务提供232(4GB)字节的物理空间,并允许程序在246(64TB)的逻辑空间中运行。,3.虚拟86环境 80486允许在实方式下和保护方式下执行8086的应用程序。有了虚拟86方式,486允许同时执行8086操作系统和8086应用程序以及486操作系统和486应用程序。 在虚拟86方式下,还可以与实方式相同的形式使用段寄存器,以形成线性基地址。通过使用分页功能,就可以将虚拟86方式下的1M地址空间映象到486的4GB的物理空间的任何位置。,存储系统,存储系统的基本概念 为了解决速度、容量、价格之间的矛盾,人们提出存储系统的概念,如图, M1速度最快,容量最小,每位价格最高; Mi速度大于Mi+1 , Mi容量小于Mi+1 , Mi每位价格高于Mi+1 ;整个存储系统访问速度近似于M1 ,每位价格近似于Mn ,容量不小于Mn.,虚拟存储器是为了增加存储系统的存储容量; CACHE是为了提高存储器的速度。,虚拟存储器 基本概念 由主存储器和辅助存储器共同组成。速度接近于主存,每位价格与辅存相近。,1.地址空间与地址 虚拟存储器有3种地址空间及对应3种地址。 虚拟地址空间是应用程序员编写程序的地址空间。其地址称为虚地址。 主存空间称为实存地址空间,是存储、运行程序的空间,其地址称为主存物理地址。 辅助地址空间也就是磁盘存储器的地址空间,是用来存放程序的空间,其地址称辅存地址。,工作原理,逻辑地址,地址变换,物理地址,外地址变换,辅存地址,替换算法,I/O机构,主存储器,辅助存储器,段式存储器 一个程序由多个模块组成,特别是在结构化程序设计思想提出后,程序的模块性就更强了。组成程序的模块大小可以各不相同,但每个模块都是一个特定功能的独立程序段。当某程序段从辅存调入主存,只要由系统赋予该段一个基址,就可以把基址和每个单元在段内的相对位移量组合在一起,形成这些单元在主存中各自的实际地址。,1.地址映像与变换 在段式存储器中,每个程序都有一个段描述符表(段表),段表的一行称作段描述符,段描述符用来描述模块的基本状况,其基本内容包括基址、界限和访问控制等。基址是装入模块的首地址,界限指该段的长度。,模块3,模块2,模块1,模块0,3K,3K,1K,0.5K,6K,2K,0K,1K,0,1K,1.5K,3K,6K,8K,程序空间,主存空间,段表,基址,界限,访问控制,地址映射,80486的虚地址空间为246即64TB,此空间编程的逻辑地址有46个二进制位,其中低32位是偏移量,高14位是段寄存器中的215位的内容。,二维的虚拟地址必须转换成一维的物理地址,主存中的程序才能执行。 每个任务都有一个虚拟空间。为了避免多个并行任务的多个虚拟地址空间直接映射到同一个物理地址空间,采用线性地址空间隔离虚拟地址空间和物理地址空间。线性空间由一维的线性地址构成,线性地址空间和物理地址空间对等。线性地址空间32位长,4GB。 虚拟地址到物理地址的映射函数在每个任务任务中进行定义,随着任务的切换,映射函数也切换。两个不同的任务,尽管虚拟地址相同,但实际物理地址可以不同。,段寄存器152位,偏移量,.,描述符,.,逻辑地址,32位线性地址,段表,物理地址,45,32,31,0,段描述符与段描述符表 (1)段描述符格式 一个段描述符格式由8个字节组成,是位于主存中的一种数据结构,由系统程序创建。,段界限 70,段界限 158,基址 70,基址158,基址2316,基址3124,P,DPL,S,TYPE,G,D/B,AVL,段界限1916,0,D0,D7,0,7,G:为粒度位,用来确定段界限所使用的长度单位。G=0,以字节为单位;G=1,以4KB(212)为单位。 P:是存在位,P=1表示该段在主存中。AVL:是用户的操作系统可用位。 D/B:在代码段,为D位,D=1,采用32位操作数和寻址方式,反之16位 在数据段,B=1时,PUSH,POP,CALL都使用ESP,反之用SP,S:80486的段可被设置为系统段(S=0)和非系统段。系统段描述有关操作系统的表格、任务和选通门等信息,非系统段又细分为代码段和数据段。 DPL:特权级别 S=1时,第5字节又称访问权字节,该字节中的TYPE字段中的各位定义如下:,P,DPL,S=1,E=0,E=1,ED,C,W,R,A,E:可执行位。E=0,数据段;E=1,代码段。 ED:扩展方向位。ED=0,向上扩展,即偏移量必须小于等于界限;ED=1,向下扩展。 W:可写位。W=0,不允许写。 R:可读位。R=0,不允许读 A:访问位。A=0,该段尚未被访问 C:相容位。C=1,遵循描述符特权级;C=0,忽略描述符特权级 E位将段分为代码段及数据段,代码段决不允许写。,(2)段描述符表 段描述符表也是位于主存中的一种数据结构,由系统程序创建。分为全局描述符表(GDT)和局局描述符表(LDT). LDT存放给定任务有关的描述符,所以每个任务都有一个独立的LDT,其中含有自己的代码段、数据段和堆栈段等,任务切换时LDT也切换;通过LDT可使各任务的私有段与其它任务项隔离,达到保护的目的。 GDT存放系统所有任务的描述符,如操作系统使用的代码段和数据段、任务状态段以及各个LDT的描述符。整个系统中GDT只有一张。任务切换时,不切换GDT.通过GDT可使各任务需要使用的端能被共享。,(3)选择符 LDTR中的16位选择符不直接给定LDT的位置,而是指向GDT中的某个描述符。 保护模式下,段寄存器中的内容也称为选择符。选择符不直接确定存储器地址,而是指向一个段描述符。选择符由请求特权字段(RPL)、表指示(T)和索引组成。索引乘8就是相对GDT或LDT首地址的偏移量。,索引,T,R,PL,选择符(段寄存器),选择符,界限,基址,界限,基址,LDT,LDT,LDT,LDTR,GDT,GDTR,T=1,T=0,CPU内部还设置了一个段描述符高速缓冲寄存器堆,对程序员是透明的。当选择符值装入寄存器时,处理器会将响应的描述符中的内容自动装入其中,以供地址变换时使用,避免在地址变换时需要不断地访问主存中的段描述符。,选择符,CS,SS,DS,ES,FS,GS,段寄存器,段描述符高速缓冲寄存器堆(不可见),基址,段界限,段属性,FS,ES,DS,SS,CS,GS,模块3,模块2,模块1,模块0,选择符,界限,基址,LDTA,LDTB,界限,基址,模块C,模块B,模块A,选择符,界限,基址,模块1,模块B,模块2,模块3,模块A,模块0,C,GDTR,LDTR,LDTR,GDT,LDTA,LDTB,程序A,程序B,模块位置,页式存储器 页式存储器把主存空间和辅存空间都划分为多个相同尺寸的定长块,每块称作一页,并按顺序编号。80486的页面尺寸定为4K(212) 虚拟空间中的页称虚页;主存空间中的页称实页。,1.虚拟空间与实存空间 地址变换就是如何将虚页号转化为实页号,虚页号,页内偏移,实页号,页内偏移,虚地址,实地址,0,11,32,12,主存空间,虚存空间4G,1.地址映象与地址变换 段式存储器将虚地址转化为32位线性地址,页式存储器通过页转换逻辑将线性地址转化为物理地址。在80486的页式存储器中,虚拟地址就是线性地址,由20位虚页号和12位页内偏移地址组成,物理地址由20位实页号和12位页内偏移地址组成,但实页号仅在实际存在的主存储器的地址范围内选取。,地址映象与地址变换 在页式存储器中,每个任务都有页表作为虚拟空间映象到物理空间的中介,3页,2页,1页,0页,3,2,1,0,程序空间,页表,主存空间,虚页号,主页号,控制信息位,组成页表的行称作页表项,页表项主要由页面基址和控制信息位组成,主页号指明页面的基址,由于页面号是顺序编制,虚页号可省略。页式存储器通过页表项对页面进行管理。页表本身也是一页。存储在主存中。 80486的页表项由4字节组成,页表尺寸为212,一个页表只有1024个页表项,只能管理1024个页面。80486页式存储器的4GB的虚拟空间被分为220个页面,需要220个页表项对其进行管理。一张页表无法容纳这么多的页表项。,X86采用二级页表方法进行管理,第一级页表称为页表目录,页表目录的页表项指明第二级页表中各项的基址。这样,虚页号分为页表目录和页表。,页目录索引,页表索引,页内偏移,实页号,页内偏移,实地址,页表0,页表1,页表目录表,CR3,虚地址,线性地址,虚页号,页表目录和页表都存放在主存中,页表目录表的基址由控制寄存器CR3的高20位*212指定。,3.页表项及其控制作用 页表项格式如图,页面基址,AV,AI,L,0,0,A,P C D,P W T,U/S,R/S,P,页表项由32位组成,高20位是页面基址,页表中该字段就是实页号,在页目录表中,页面基址 212相应页表的首址;低12位用来说明页(页表)的控制状态信息。 P:存在位,P=1,表示该页在主存中。在地址变换过程中,若发现P=0,则表示需立即访问的页不在主存,这种情形称作页面失效(页面故障),此时系统会作如下处理: 1)若主存还有空间,操作系统将要访问的页调入主存,且将P置1 2)如果主存没有空间,就根据一定的替换算法将主存中的某页调入辅存,再将要访问的页调入主存。 D:修改位,该位只在页表中起作用,D=1,表示内容被修改。 A:访问位,若该页被访问过,A=1。D和A为替换算法和多机系统的实现提供了方便。 U/S,R/W分别是“用户/系统”位和“读/写”位。这两位与标志寄存器中的WP位配合使用,实行页面级保护。 PCD和PWT是对CACHE的控制方式位。 AV,AI,L允许系统程序任意使用。,2.转换用旁视缓冲区(TLB) 80486设置了一个TLB,可容纳32个页表项的高速缓存,自动将最近被访问的页面所对应的页表项保存起来。又称快表,存于主存中的页表称慢表。,X86的段页式存储器 段式存储器的特点是模块性好,但主存利用率不高,且对辅存的管理比较困难; 页式存储器的特点是主存利用率高,且对辅存的管理容易,但模块性差。 段页式存储器把主存空间分成固定尺寸的页面,程序按模块分段,每个段按主存的页面尺寸分成若干页面。 段页式存储器对多用户系统非常有用,逻辑结构特别清楚。每个用户都有一个逻辑名(用户号),程序可按程序段编写,每个程序段又可分为页而存入内存。,用户号,段号,页目录索引,页表索引,页内偏移,实页号,页内偏移,实地址,页表目录,页表,段描述符表,WINDOWS95 及WINNT进程地址空间的划分,0FFFFFFFFH,0C0000000H,0BFFFFFFFH,080000000H,07FFFFFFFH,00400000H,003FFFFFH,00001000H,000000FFH,00000000H,VXD;内存管理器,文件系统使用的1GB, WIN32所有进程共享,可读写,内存映射文件使用的1GB,有WIN32 DLL, 16位应用程序和内存分配使用,可读写,WIN32 进程私有空间,DOS和16位WINDOWS使用,DOS和16位WINDOWS使用,0FFFFFFFFH,08000000H,07FFFFFFFH,07FFF0000H,07FFEFFFFH,000010000H,0000FFFFH,00000000H,操作系统使用2GB,不可存取,非法指针指向的64KB,不可存取,WIN32进程私有,NULL指针使用的64KB,3.4 Linux在X86上的虚拟内存管理,Linux支持很多硬件运行平台,常用的有:Intel X86,Alpha,Sparc等。对于不能够通用的一些功能,Linux必须依据硬件平台的特点来具体实现。,LINUX的分段策略 Linux在X86上采用最低限度的分段机制,其目的是为了避开复杂的分段机制,提高 Linux在其他不支持分段机制的硬件平台的可移植性,同时又充分利用X86的分段机制来隔离用户代码和内核代码。因此,在Linux上,逻辑地址和线性地址具有相同的值。由于X86的GDT最大表长为64KB,每个段描述符为8Byte,所以GDT

温馨提示

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

评论

0/150

提交评论