版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章存放器管理1实方式存放器管理2保护方式存放器管理3保护及任务切换4虚拟8086方式80X86的存储器管理第1页
存放器管理是微处理器提供对系统存放器资源进行管理机制。目标:方便软件程序对存放器应用。8086CPU管理存放器只有一个方式:实方式80286CPU管理存放器有两种方式:实方式保护虚地址方式80386以上CPU管理存放器有三种方式:实方式保护虚地址方式虚拟8086方式系统复位后初始化,进入实地址方式。80X86的存储器管理第2页5.1实方式存放器管理一、存放器分段结构软件运行时,指令与数据装入内存中,指令与数据含有相对独立性,各程序之间也含有相对独立性,为便于管理,它们各占据相对独立内存空间:一个程序可拥有几个段,不一样程序占据不一样几个段,形成内存分段管理结构。80X86的存储器管理第3页分段好处:便于程序编写,逻辑地址使用方便,灵活。存放器便于管理,支持程序动态定位。预防程序,数据相互覆盖。80X86的存储器管理第4页二、物理地址形成实方式下,程序对存放器访问采取分段地址,分段地址由一个段值和一个有效地址偏移量值组成,又称逻辑地址:
段值:偏移量80X86的存储器管理第5页段值由段存放器内容决定,表示一个物理段起始地址,又称段地址起始地址=段值×10H有效地址偏移量EA,其值为寻址字节距离基地址(段地址)距离。最大值为64K,即段最大空间。物理地址=段值×10H+偏移地址比如:某存放单元逻辑地址为:1BA4:204E其实际地址应为:1BA40+204E=1DA8E80X86的存储器管理第6页三、实方式特点:1只使用地址总线低20位,寻址空间为1MB。2采取分段存放器结构。3无保护机制,存放空间任何区域都可被运行到任何程序上,运行程序不分特权级别。4不能实现多任务,是系统复位向保护虚地址方式过渡一个方式。80X86的存储器管理第7页5.2保护方式存放器管理
系统开启或复位后,首先进入实方式。在实方式下,初始化GDT和IDT及两级页表,加载CR3和CR0,使PE位置1,进入保护虚地址方式。保护方式下存放器管理分为:
存放器分段管理
存放器分页管理
80X86的存储器管理第8页一、特点:1、引入了保护机制,使段大小得以扩充,但段使用受到限制。2、结合分段机制,引入了虚拟存放器概念。3、支持多用户多任务操作系统。80X86的存储器管理第9页虚拟存放器:基于存放器分段结构,把外存作为内存延伸进行统一管理所组成存放器空间。任何时候系统只需把与正在运行程序相关一小部分虚拟地址空间映射到内存,其余部分仍留在外存上,内存和外存统一组成虚拟存放空间。是一个能提供比实际内存大得多存放器空间技术。80X86的存储器管理第10页
虚拟地址空间由存放器分段机构和分页机构进行管理。分段机构将虚拟地址变换为线性地址分页机构将线性地址变换为物理地址线性地址=段基址+偏移量80X86的存储器管理第11页
在保护方式下,一个存放单元地址也是由段基地址和段内偏移量组成,但段基地址并不由段存放器直接取得。保护方式下专门有一个8字节描述符来描述段基地址、限量和段其它属性,而描述符则保留在由段描述符组成表格即描述符表中,在描述符表中取出某段描述符即可取得该段全部信息(包含段地址)。80X86的存储器管理第12页保护方式下逻辑地址被称为虚拟地址,段地址能够不在实存放器上。保护方式下段存放器被称为段选择器,其内容为段选择符(子),虚拟地址由段选择子(16位)和地址偏移量(32位)组成。虚拟地址格式为:段选择子:地址偏移量80X86的存储器管理第13页二、保护方式下存放器分段管理1、保护方式下寻址机制在保护方式下,存放器寻址机制和实方式不一样。保护方式下某一个存放单元用虚拟地址表示,虚拟地址中选择子为一操作系统定义指向相关段信息一个指针。依据选择子即可得到该段段基址。若存放器启用分页机制,还须经分页机构将线性地址变换为物理地址。80X86的存储器管理第14页
CPU详细寻址过程以下:加载段存放器查段描述符表取段描述符取段基址线性地址=段基址+偏移量32位段基址和32位段内偏移量形成地址称为线性地址。80X86的存储器管理第15页4GB偏移量选择子段基址界限存取权32位段基址32位线性地址32位界限加载寻址过程示意图段描述符80X86的存储器管理第16页2、描述符(1)在保护虚地址方式下每一个段都有一个对应描述符。段描述符是描述某一个段各种信息特殊字段。段描述符由8个字节组成,包含了该段32位段基址和20位段限量及相关属性。(2)段描述符分类80X86的存储器管理第17页描述符分为两大类,以下列图所表示:描述符段描述符门描述符普通段描述符特殊段描述符数据代码堆栈(地址向下扩展)非堆栈(地址向上扩展)TSS描述符LDT描述符任务门描述符调用门描述符中止门描述符陷阱门描述符说明:TSS:任务状态段描述符LDT:LDT描述符门:用于程序间转移,任务间转移一个接口80X86的存储器管理第18页段限量(16—19)段限量(0—15)基地址(0—15)基地址(16—23)基地址(24—31)PDPLDTGD0AVL类型1514131211109876543210说明:段基址32位段限量20位其它12位在80286上,这一字必须置为0,方便向上兼容段描述符格式域描述G粒度;P出现;D缺省;DPL描述符特权级;AVL可用;DT描述符类型;80X86的存储器管理第19页
段基地址:用来确定段在存放器起始地址。对80286,段基地址为24位,段可在16MB线性空间任何字节处起始;对80386和80486,段基地址为32位,段可在4GB线性空间任何字节处起始。
段限量:用来确定段尺寸。对80286,段限量为16位无符号数,段最大尺寸为64KB;对80386和80486,段限量由上表中20位无符号数和表中粒度G共同确定。若G设为字节粒状,段限量以字节为单位,若设为页粒状,段限量以页为单位,一页为4KB,段尺寸为4KB-4GB。80X86的存储器管理第20页G位(1位):粒度位,在80386,80486中,它用来指定段单位。当G=0时,段限量以字节为单位,段上边界为1MB。当G=1时,段限量以页为单位,段上边界为4GB。DT位(1位):描述符类型位。当DT=1时,表示为段描述符;当DT=0时,表示为一个特殊描述符或门描述符。
DPL位(2位):为描述符特权级域,用来实现保护而不用于地址生成。4级特权。0特权级最高;3特权级最低。80X86的存储器管理第21页
P位(1位):为存在位。当P=1时,表示描述符描述段存在于内存放器中;当P=0时,表示描述符描述段不存在于内存放器中。
D位(1位):缺省操作尺寸位,只在80386,80486中使用。当D=0时,表示操作数和有效缺省值为16位;当D=1时,表示操作数和有效缺省值为32位。AVL位(1位):可用位,只在80386,80486中使用。用来确定是否允许对存放器映象I/O口实现保护。80X86的存储器管理第22页段类型代码段(ST=1)数据段(ST=0)ST1C0EWARAST位设置决定怎样解释其它域可访问(1=YES)可读(1=YES)一致(1=YES)向下扩展(1=YES)(对正常数据E=0)可写(1=YES)可访问(1=YES)
类型(4位):用来区分不一样段描述符格式。当DT=1时,表示为段描述符80X86的存储器管理第23页类型说明类型说明0只读8只执行1只读,已访问9只执行,已访问2读/写10执行/读3读/写,已访问11执行/读,已访问4只读,向下扩展12只执行,一致码段5只读,向下扩展,已访问13只执行,一致码段,已访问6读/写,向下扩展14执行/读,一致码段7读/写,向下扩展,已访问15执行/读,一致码段,已访问存放段描述符类型数据段代码段80X86的存储器管理第24页段存放器段类型只读读/写只执行执行/读DS,ES,FS,GS是是否是SS否是否否CS否否是是相容段存放器和段类型80X86的存储器管理第25页类型域值位设置描述符00000保留10001可用16位TSS20010LDT3001116位TSS忙4010016位调用门5010116位任务门6011016位中止门7011116位陷阱门81000保留91001可用32位TSSAH1010保留BH101132位TSS忙CH110032位调用门DH1101保留EH111032位中止门FH111132位陷阱门说明:2,5,8-F用于386其它用于286特殊段描述符及门描述符格式以下:当DT=0时,表示为为一个特殊描述符或门描述符80X86的存储器管理第26页3、描述符表段描述符表是包含段描述符表格。有三种段描述符表:全局描述符表(GDT)局部描述符表(LDT)中止描述符表(IDT)
在整个系统中,全局描述符表和中止描述符表各只有一个,而局部描述符表有若干个,每一个任务对应一个。80X86的存储器管理第27页(1)全局描述符表(GDT)
全局描述符表包含是每一个任务都能访问段描述符。包含操作系统使用代码段,数据段,堆栈段描述符,各任务TSS段描述符以及系统中全部任务、关于LDT描述符等。表中最多包含8192个(213)描述符,每个描述符占8个字节。表格程度64KB(213×23)。80X86的存储器管理第28页(2)局部描述符表(LDT)
局部描述符表包含是某一个任务都能访问段描述符。包含代码段,数据段,堆栈段描述符,也可包含此任务使用一些控制描述符。这些描述符为每一个任务单独全部。每个局部描述符表组成一个段,也有一个描述符描述,该描述符放在GDT中。表中最多包含8192个(213)描述符,每个描述符8个字节。表格程度64KB(213×23)。80X86的存储器管理第29页(3)中止描述符表(IDT)理论上最多包含8192项描述符,每项描述符8个字节。表格程度64KB,但对32位处理器,最多只能处理256个中止向量,故中止描述符表最多包含256项中止描述符。80X86的存储器管理第30页说明:系统GDT和LDT均是一个长度不定数据结构,它们各自最少包含一个,最多包含8192个段描述符。GDT中第一个描述符为空描述符,普通不用。80X86的存储器管理第31页4段选择器定义:保护方式下,段选择器是一个16位指向操作系统定义段信息指针。高13位作为索引,低3位为特征位。80386/80486CPU段选择器有6个:CS;SS;DSES;FS;GS80X86的存储器管理第32页段选择器索引TI全局描述符表局部描述符表TI=1TI=0012315RPL说明:全局描述符表第一个项目不用,为空描述符。8192项8192项80X86的存储器管理第33页说明:
RPL:请求特权级别,共4级。RPL=00b时,选择器请求特权级最高;RPL=11b时,选择器请求特权级最低。80X86的存储器管理第34页TI:表格指示,和索引配合使用。当TI=0时,选择器指向段是系统全局地址空间一部分,此时与高13位索引一起指向全局段描述表GDT中一项。当TI=1时,选择器指向段是一个特定程序或任何局部地址空间一部分,此时与高13位索引一起指向局部段描述表LDT中一项。80X86的存储器管理第35页在保护方式下,对80286,偏移量为16位,每个段最大为64KB,可提供虚拟存放空间最大为1GB。(2×213×216=230)80X86的存储器管理第36页对80386和80486,偏移量为32位,每个段最大为4GB,可提供虚拟存放空间最大为64TB。
(2×213×232=246)80X86的存储器管理第37页5、描述符表存放器是用来保留描述符表(GDT、IDT、LDT)基地址和限量存放器。描述符表存放器分为全局描述符表存放器GDTR、中止描述符表存放器IDTR和局部描述符表存放器LDTR,结构以下:全局描述符表存放器GDTR限量基地址80286-24位16位80386/80486-32位80X86的存储器管理第38页局部描述符表存放器LDTR限量基地址16位80286-24位16位80386/80486-32位选择器系统开启初始化时,GDT基址和限量将加载至全局描述符表存放器GDTR,执行某一任务时,将加载能找到该任务局部描述符表选择子至局部描述符表存放器中。该任务在存放器中位置由GDT中LDT描述符确定。80X86的存储器管理第39页
当系统初始化时,GDT中针对LDT描述符段选择子将置入LDTR中,LDT描述符中基址及限量自动置入LDTR高速缓存中(限值只用低16位),于是处理器便依据此高速缓存值来确定局部描述符表起始地址和段限量。80X86的存储器管理第40页说明:(1)全局描述符表存放器基地址指出全局描述符表在存放器中起始位置,16位限量使GDT表最多为64KB。(2)局部描述表在存放器中位置是由GDT中描述符确定,该LDT描述符在GDT中寻址又由LDTR中16位段选择器确定。80X86的存储器管理第41页说明:GDT只有一个,LDT是每个任务都有一个,当前LDT为正在运行任务对GDTR读写用LGDT和SGDT指令对LDTR读写用LLDT和SLDT指令
下列图表明了GDTR,LDTR与描述符关系:
基址GDT基址LDT最大8192最大8192
GDTRLDTR001531150310015LDTR高速缓存器01230123LDT边界值边界值80X86的存储器管理第42页6.段存放器
保护方式下,每个段存放器都有一个16位可见部分(称为段选择器)和一个程序无法访问不可见部分(88位,称为段描述符高速缓存器)。可见部分装段选择子,不可见部分装段基地址,限量和访问权限。一旦执行指令,段选择子将加载到段选择器(可见部分)中,CPU会自动将段选择子指向段描述符内容装入段描述符高速缓存器(不可见部分)。80X86的存储器管理第43页说明:段选择器与段描述符对应关系以及段描述符详细内容共同决定了虚拟地址到线性地址转换关系,改变段选择器与段描述符对应关系或段描述符详细内容便会改变虚拟地址到线性地址转换关系。80X86的存储器管理第44页16位选择符32位基地址32位段限11位其它属性CS16位选择符32位基地址32位段限11位其它属性SS16位选择符32位基地址32位段限11位其它属性ES16位选择符32位基地址32位段限11位其它属性FS16位选择符32位基地址32位段限11位其它属性GS段存放器段描述符存放器16位选择符32位基地址32位段限11位其它属性DS80X86的存储器管理第45页三、存放器分页管理
存放器分页管理是把线性地址空间和物理地址空间都看成由页组成,且线性地址空间任何一页均可映射到物理地址空间任何一页,页尺寸是固定。每个页面为4KB,且每个页面首址均为1000H整数倍。在80386和80486中,当控制存放器CR0中PG=0时,禁止分页;当PG=1时,允许分页,此时把4GB线性地址空间划分为220个页面,在80286中,没有配置分页管理。80X86的存储器管理第46页1、页目录表和页表
在分页管理下,线性地址必须转换为页内物理地址。线性地址到物理地址转换是依据存放器线性地址经过查询页目录表和页表来实现。80X86的存储器管理第47页
分页管理机制将线性地址空间转化到物理地址空间页时:线性地址低12位在分页转换过程中直接作为物理地址低12位使用,线性地址高20位由分页管理机制中转换函数经过对常驻内存页表查询来转换成对应物理地址高20位。80X86的存储器管理第48页对页表查询分两步进行,即查询一个两级表。第一级表为页目录表,第二级表为页表,页目录表有1024个页目录项,每项32位,是一个指针,它指向另一个相同数据结构页表(即为该页表起始地址,其低12位未用)。页表含1024项页帧,每项32位,是一个指针,它指向某一页(即为该页起始地址,其低12位未用)。页目录表和页表均为4KB,其首址为1000H整数倍,页面和其它每一页均对齐在4KB边界处。80X86的存储器管理第49页页目录表/页表表项格式以下:3112119876543210PR/WU/S00AD00AVL页基地址说明:P位:该位为存在位。当P=1时表示该项里页地址映射到物理存放器中一页;当P=0时表示该项页地址没有映射到物理存放器中。R/W位:R/W位为读/写位,用于实现页保护,不包括转换。80X86的存储器管理第50页U/S位:U/S位为用户/监控程序位,用于页级保护,不包括转换A位:A位为访问位,若目录项中A=1时表示该项所指出页表已被访问过;若页表项中A=1时,表示该项所指出页表已被访问过。D位:为页面重写标志位,当页表项中D=1时表明该项所指出存放器中页已被写。AVL位:该域为可用域,共3位,供系统软件人员使用。80X86的存储器管理第51页页目录页表页帧页目录项页表项目地址CR3(控制存放器)31222112110目录索引域表索引域偏移量线性地址线性地址到物理地址转换以下列图所表示:页目录表偏移地址=页目录索引地址页表偏移地址=页表索引地址页目录表起始地址:系统初始化后加载CR3得到80X86的存储器管理第52页页目录表中所寻址物理地址=目录表基地址+页目录表索引×4页表中所寻址物理地址=页表基地址+页表索引×4要寻址存放单元最终物理地址=页帧基地址+线性地址中12位偏移量80X86的存储器管理第53页线性地址到物理地址转换举例例:设某存放单元线性地址为25674890H,CR3=28345XXXH,求该存放单元物理地址。求解过程以下:首先,将线性地址25674890H分成以下列图所表示分成三个域:0010010101100111010010001001000001112212231目录索引(10位)页表索引(10位)偏移量(12位)因为CR3=28345XXXH,所以页目录基地址=28345000H。线性地址中为0010010101B,则页目录表中所寻址物理地址=目录表基地址+偏移地址×4=28345000H+254H=28345254H。设目录表中寻址项内容为0021H,表明寻址项对应基地址0000H,P位及A位为1,则表明被寻址页表在存放器中,且对应目录项已被访问过。线性地址中索引地址为1001110100B。则页表中物理地址=页表基地址+页表索引地址×4=0000H+9D0H=00D0H。设页表中所寻址项内容为34567021H,则页帧基地址=34567000H,要寻址存放单元最终物理地址=页帧基地址+线性地址中12位偏移量=34567000H+890H=34567890H。
线性地址25674890H分解80X86的存储器管理第54页
为了提升页转换处理速度,在80386和80486CPU内部设计了页转换高速缓冲存放器(TLB),80386TLB以下列图所表示:线性地址0111214153117位3位XX有效属性标识0…..01位3位17位TLB入口12位386DX=20位填充0386SX=12位
386TLB结构标识块数据块(32个页表地址)01234567Way0Way1Way2Way30113112Way0Way1Way2Way3替换块说明:属性中3位为U/S:用户/管理员位R/W:读/写位D:修改位替换块:指定下一次写入TLB位置页转换高速缓冲存储器80X86的存储器管理第55页小结保护虚拟地址方式下,从虚拟地址到物理地址转换,需要经过分段和分页两级转换,以下列图:
虚拟—物理地址转换
从上图可知,从虚拟地址到物理地址两级转换中段机制是必须要用,而分页机制则依据需要被启用或禁止。假如禁用分页机制,则段机制得到线性地址直接作为物理地址,不然,由段机制得到线性地址还必须用页表进行转换才能得到物理地址。015031031段选择子
偏移量
虚拟地址
线性地址段机制分页机制物理地址031(分页被禁用)80X86的存储器管理第56页5.3保护及任务切换对多任务、多用户系统中资源管理进行保护:预防程序间、任务间相互干扰;预防对存放器非法操作,预防对页非法操作;对段部件进行保护检验,对页部件进行保护检验;保护不但仅在不一样任务间进行,而且也在同一任务内进行。每次存放器访问都必须进行段级别保护检验,在允许分页情况下,还要进行页级别保护检查。80X86的存储器管理第57页一、不一样任务间保护1、任务间在存放空间上彼此隔离首先,把每个任务放置在不一样虚拟地址空间,然后,再在每个任务中定义一组独立映射表,完成相互间各个不一样虚拟—物理地址转换。各应用程序间经过各自LDT实现相互隔离和保护。80X86的存储器管理第58页2、操作系统保护将操作系统与各应用程序隔离,又要为各应用程序所共享。所以操作系统存放在一个单独任务中并位于虚拟空间公共区域,称为全局地址空间。不一样任务有不一样局部地址空间,公共区域分配了一个相同虚拟地址空间。不一样任务定义有对物理地址转换函数,即使访问相同虚拟地址,转换物理地址不一样;可确保任务间隔离。相反,每个任务可访问全局地址空间相同虚拟地址来取得相同物理地址,从而实现公共代码和数据共享。操作系统与各应用程序隔离经过特权级实现80X86的存储器管理第59页CODE-DCODE-ECODE-CDATA-CCODE-ADATA-ACODE-B特权级0特权级1特权级2特权级3任务之间保护DATA-BDATA-DDATA-E说明:这里虚线表示不一样任务,段之间隔离。80X86的存储器管理第60页、段级别保护段由段描述符描述和定义,依据段描述符提供参数和信息进行3种保护检验。类型检验程度检验特权检验80X86的存储器管理第61页1、类型检验:依据段描述符4位类型域上定义参数,处理器将进行段第一个保护检验,即只要把描述符选择器加载到段存放器,处理器就要检验描述符类型信息是否适当。当段存放器被加载时,所适合段类型必须相同。不然产生异常,同时只有访问类型与段类型相同,才能操作,不然产生异常。80X86的存储器管理第62页类型说明类型说明0只读8只执行1只读,已访问9只执行,已访问2读/写10执行/读3读/写,已访问11执行/读,已访问4只读,向下扩展12只执行,一致码段5只读,已访问,向下扩展13只执行,一致码段,已访问6读/写,向下扩展14执行/读,一致码段7读/写,向下扩展,已访问15执行/读,一致码段,已访问存放器段描述符类型数据段代码段80X86的存储器管理第63页段存放器段类型只读读/写只执行执行/读DS,ES,FS,GS是是否是SS否是否否CS否否是是相容段存放器和段类型80X86的存储器管理第64页2、程度检验A.实方式下,段程度为64KB。保护方式下,段程度由段描述符程度域指出。B.段描述符中E=1,为向下扩充段,惯用于堆栈段。E=0,正常数据段,为向上扩充段。对堆栈段,当程度=0时,向下扩充段有最大尺寸。C.程度检验使用于存放段和系统段中段描述符表。80X86的存储器管理第65页3、特权检验微处理器保护机制订义4级特权。其中最里层特权级别最高称为特权级0,其它特权由里向外级别递减。0级:操作系统内核域,域内程序能够直接访问全部系统资源。1级:用于系统服务。2级:用于用户扩展。3级:用于用户程序。80X86的存储器管理第66页核级别0(最高)级别1级别2级别3系统服务扩展应用程序高低INTEL特权环型模型80X86的存储器管理第67页段级别保护中,处理器与3种特权级别相关:当前特权级(CPL):
由CS最低2位决定。(任务特权)描述符特权级(DPL):由段描述符DPL域
(描述符特权)决定。请求者特权级(RPL):由段选择器低两位(选择子特权)决定。
若RPL低于CPL,则CPL特权级降为和RPL相等。检验对象:任务,存放段,门,任务状态段描述符特权级。80X86的存储器管理第68页特权检验包含下面几个情况:(1)数据访问程序访问数据段条件
特权级CPL、RPL中较低级别必须高于或等于被访问段特权级DPL
不然将产生一个普通保护异常,向操作系统汇报访问违反了特权规则。
80X86的存储器管理第69页访问普通规则0级操作系统关键,有权访问任务中全部数据存放段;1级操作系统其余部分有权访问2级和3级全部数据存放段;3级应用程序只能访问本身处于3级数据存放段。所以0级操作系统关键数据存放器得到保护,整个操作系统也得到保护。80X86的存储器管理第70页CODE-DCODE-ECODE-CDATA-CCODE-ADATA-ACODE-B特权级0特权级1特权级2特权级3特权级访问范围DATA-BDATA-DDATA-E80X86的存储器管理第71页(2)控制转移3种方式:段内转移直接转移到另一代码段段间转移经过调用门段间转移段内转移
近程跳转指令JMP或近程调用指令CALL及返回指令RET引发转移,不改变特权级,系统只作程度检验。80X86的存储器管理第72页直接段间转移最简单段间转移,使用有远程标号跳转指令或调用及返回指令。例:远程标号给出一个48位远指针(16位选择子和32位偏移量)。16位选择子→CS存放器,同时段描述符→CS段存放器段描述符高速缓冲器。然后进行保护检验:DPL(远程)=CPL(当前),且目标段是一个存在可执行代码段,或DPL高于等于CPL,且目标段是一个存在,一致可执行代码段,可实现这么控制转移。
一致可执行代码段是一个尤其存放段,用段描述符类型域中ST=1及C=1来标志。用来存放多个特权级程序共享例程。
直接段间转移实现是同一特权级同一任务转移。80X86的存储器管理第73页
经过调用门段间转移门描述符简称为门,门是系统实现控制转移到不一样特权级主要工具。
DT=0为门描述符,DT=1为存放段描述符门种类:调用门、陷阱门、中止门、任务门各门功效:任务门:用于任务切换。中止门、陷阱门:用于中止。调用门:用于段间控制转移。80X86的存储器管理第74页调用门1)CALL指令使用调用门,使程序转移到更内层特权级2)RET指令只能转移到外层特权级3)JMP指令仅转移到同级特权级80X86的存储器管理第75页代码段选择器PDPL类型1514131211109876543210说明:对80286,大多数为0。调用门格式域描述P存在;DPL描述符特权级;计数要拷贝至目标栈字节数或双字节数;0000计数偏移量(高)偏移量(低)80X86的存储器管理第76页利用调用门可使应用程序调用内层例程,如操作系统。调用门提供了指向目标地址段描述符选择子和目标地址偏移量。使用CALL和JMP指令时,要进行门检验及目标代码段特权级检验;还要对描述符存在位及门中偏移量是否在目标代码段中越限等情况进行保护检验。80X86的存储器管理第77页CODE-CCODE-ACODE-ECODE-DGATE-AGATE-BGATE-EGATE-CCODE-B特权级0特权级1特权级2特权级3特权级和门其间调用说明:这里虚线表示违反特权规则操作。80X86的存储器管理第78页(3)堆栈切换1)CALL指令经过调用门向内层程序转移时,不但切换特权级,而且也需要切换栈。2)采取调用门执行CALL指令时,能够实现向内层栈转移,这对保护程序很主要。若在调用门中要求目标代码段为当前特权级或一致代码段,使用调用门进行程序转移时就不会发生特权级转移和栈切换。3)往外层返回:CALL指令经过调用门把外层程序转移到内层,RET指令把程序从内层转向外层,并将堆栈从内层切向外层。80X86的存储器管理第79页切换到内层栈CopiedOuterSSOuterESPP1P2P3P4OuterCSOuterEIPP1P2P3P4调用后,返回前ESP指针调用前ESP指针0返回后ESP指针Limit0内层栈外层栈栈向下增加Limit向内调用向外调用80X86的存储器管理第80页特权规则:
若控制转移要求特权级别发生改变,则必须经过门。若使用JMP指令产生段间控制转移,则只能在同一特权级别中进行。若使用CALL指令产生段间控制转移,则既可是同一特权级别内,也可转移到更高特权级。在同一任务内处理中止,遵照CALL指令相同特权规则。80X86的存储器管理第81页任务CPL与指向门选择子RPL必须同时小于或等于门DPL(即任务CPL特权级高于或等于门DPL)。门目标段特权必须高于或等于任务CPL特权,控制转移后目标段特权级别作为新CPL。并不切换任务返回指令,只能将控制返回到含有相同或更低特权级别代码段。任务切换能够由JMP、CALL或INT指令完成。若切换时包括任务门或任务状态段时,它们DPL必须低于或等于原来任务CPL。80X86的存储器管理第82页三、页级别保护
1、页级别保护主要针对可寻址域限制和类型检验。进行保护检验项目存放在页表项及页目录项中。页表项及页目录项中U/S及R/W位用于实现页级别保护。2、级别保护中级别(2级,U/S)监督级别(U/S=0):包含操作系统,特殊系统软件,以及保护系统数据。监督级别页对任何页都有读/写/执行访问权(R/W=1)。用户级别(U/S=1):包含应用程序及其数据。用户级别页可要求为读/写/执行访问权(R/W=1)或读/执行(R/W=0)。3、页级别保护是在段级别保护之后起作用。4、页保护属性用页目录项及页表项两级属性组合来计算。80X86的存储器管理第83页U/SR/W用户访问权限系统访问权限00/读/写/执行01/读/写/执行10读/执行读/写/执行11读/写/执行读/写/执行页级保护属性80X86的存储器管理第84页四、任务切换任务是一个单个,连续执行线程。80386,486支持多任务运行,但任何时刻只有一个任务运行。CPU按一定管理方式在各任务间切换。任务切换可由一个中止或任务间调用指令、跳转指令、返回指令来开启,而任务定义及任务切换简化和控制由任务状态段和任务门来实现。80X86的存储器管理第85页1、任务状态段TSSTSS存放相关任务主要信息,TSS由操作系统为每个任务所建,其内容包含:链接字段,内层栈指针,相关地址映射基存放器,存放器保留区域及其它字段。TSS中保留了任务存放器状态完整映象。TSS能够确保任务挂起或恢复。TSS中内容由操作系统依据需要写入。80X86的存储器管理第86页I/O映射地址0000000000000000T0000000000000000任务LDT选择器0000000000000000GS0000000000000000FS0000000000000000DS0000000000000000SS0000000000000000CS0000000000000000ESEDIESIEBPESPEBXEDXECXEAXEFLAGSEIP保留0000000000000000CPL2SSCPL2ESP0000000000000000CPL1SSCPL1ESP0000000000000000CPL0SSCPL0ESP311615064H60H5CH58H54H50H4CH48H44H40H3CH38H34H30H2CH28H24H20H1CH18H14H10HC8432位任务状态段80X86的存储器管理第87页1)链接字段建立链接链详细过程以下:A任务执行中,由CALL指令或中止执行,产生任务A到任务B切换。A任务被挂起,任务B被激活。B链接字段指向ATSS。B任务到任务C切换是一样道理。C执行时,EFLAGS存放器中NT位置1。一样CTSS段中链接字段指向BTSS,因为任务C嵌套在任务B中,而任务B嵌套在任务A中,任务B执行时,EFLAGS存放器NT位也应置1。ANT=0表示任务没有嵌套在另一个任务中,并表示链接结束,且任务ATSS段链接段不会被访问。返回时,因为NT=1,返回指令将沿着链接字段恢复到链上前一个任务中去执行。80X86的存储器管理第88页任务A任务B任务CEFLAGSNT=0NT=1NT=1NT=1TR任务状态段链接链80X86的存储器管理第89页2)内层栈指针TSS中有3个内层栈指针,全是48位全指针,依次存放在TSS中偏移量为4、12、29开始区域中,分别指向0级、1级、2级堆栈栈顶。
发生向内层转移时,把对应内层栈指针装入到SS及ESP存放器,方便切换到内层堆栈,且把外层栈指针压入内层栈中,方便向外层返回恢复用。TSS段内层栈指针没有3级。假如任务在3级被挂起,堆栈不切换。TSS段中内层栈指针只能读不能写。80X86的存储器管理第90页3)相关地址映射基存放器它含有在任务间改变转换函数能力,是保护机制一部分,使任务之间得到相互隔离。80X86的存储器管理第91页4)存放器保留区域位置:20H-5FH作用:保留通用存放器,处理器,控制存放器及段存放器内容。特点:当前任务切换时,保留当前值,方便再次切换,切换回原任务时,各存放器值可由保留区域读出。
80X86的存储器管理第92页5)其它字段TSS中偏移量从66H开始区域存放I/O许可位图。TSS中偏移量位64H处字是为任务提供尤其属性。80X86的存储器管理第93页2、TSS描述符,任务门描述符及任务存放器
1)TSS描述符是描述TSS描述符,为系统描述符,任何时候都可访问,位于全局描述符表(GDT)中。TSS描述符中DT=0且类型域为1011B。TSS描述符特权级别DPL用来限制JMP指令或CALL指令对TSS描述符访问。DPL通常设置为0,方便对TSS描述符访问限制在有特权程序上。80X86的存储器管理第94页TSS描述符有忙和闲两种状态,以类型域第2位加以区分,任务切换到忙TSS则产生一个异常。2)任务存放器任务存放器TR与一个段存放器格式相同。用来存放当前任务TSS描述符选择子。
当把当前任务TSS描述符选择子加载入TR时,当前任务TSS基地址及程度值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026意大利时尚品牌行业当前市场地位分析及扩大经营评估发展报告
- 2026四川九洲投资控股集团有限公司招聘网络安全(保密)工程师1人笔试参考题库及答案详解
- 2026年哈尔滨市卫生行政系统事业单位人员招聘考试备考试题及答案详解
- 2026年固原市环境系统事业单位人员招聘考试备考试题及答案详解
- 2026年合肥幼教集团熙岸雅轩幼儿园夜班门卫招聘笔试备考题库及答案详解
- 2026年肇庆市文化和旅游系统事业单位人员招聘考试备考试题及答案详解
- 2026年盐城市烟草系统事业单位人员招聘考试备考试题及答案详解
- 2026年南阳市应急管理系统事业单位人员招聘考试备考试题及答案详解
- 电商运营数据监测与分析系统方案
- 2026年太原市文化和旅游系统事业单位人员招聘考试备考试题及答案详解
- 高考考务人员培训系统考试试题答案
- 2026上海市大数据中心招聘10名笔试参考题库及答案解析
- 四川省达州市(2026年)辅警招聘公安基础知识考试题库及答案
- (二模)青岛市2026年高三年级第二次适应性检测语文试题(含答案)
- 15 青春之光 课件(共23张)
- 产科孕产期管理诊疗常规
- 变电站工程构架吊装方案
- 马克思主义基本原理概论:5.3 资本主义的历史地位和发展趋势
- 全国28个省、直辖市、自治区革命老区县市名单
- 身份证标志台帐
- 2023级四川省通用技术会考试题及答案
评论
0/150
提交评论