书签 分享 收藏 举报 版权申诉 / 76
上传文档赚钱

类型《微型计算机原理》课件第5章.ppt

  • 上传人(卖家):momomo
  • 文档编号:7873309
  • 上传时间:2024-08-29
  • 格式:PPT
  • 页数:76
  • 大小:1.95MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《微型计算机原理》课件第5章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    微型计算机原理 微型计算机 原理 课件
    资源描述:

    1、第5章 存 储 器 管 理 第5章 存 储 器 管 理 5.1 实方式存储器管理实方式存储器管理 5.2 保护方式存储器管理保护方式存储器管理5.3 保护及任务切换保护及任务切换5.4 虚拟虚拟8086方式方式第5章 存 储 器 管 理 5.1 实方式存储器管理实方式存储器管理5.1.1 存储器的分段结构存储器的分段结构 微处理器运行在实方式时,程序对存储器的访问采用分段地址。分段地址由一个段值和一个有效的地址偏移值组合而成,其表示方式为:段值:偏移量(均以省略后缀H的十六进制形式表示)第5章 存 储 器 管 理 图图 5.1 在分段寻址中组合段和偏移量在分段寻址中组合段和偏移量 存储器高地址

    2、段字节FFFFH段字节0段寻址的存储器区域存储器低地址偏移量确定在段中一个字节偏移量从段字节0处测量安置在10H(16)倍段值地址处第5章 存 储 器 管 理 5.1.2 物理地址的形成物理地址的形成 图 5.2 实方式下物理地址的产成 16位段值0000193016位偏移值153020位物理地址190段:偏移量1BA4:204E+1DA8EH204EHBA40H1第5章 存 储 器 管 理 5.2 保护方式存储器管理保护方式存储器管理 5.2.1 存储器的分段管理存储器的分段管理 1.段选择器段选择器 图 5.3 保护方式段选择器格式 TIRPL索引表中的索引请求者特权级00b=最高特权11

    3、b=最低特权表指示器0=全局描述符表(GDT)1=局部描述符表(LDT)153210第5章 存 储 器 管 理 2.段描述符表段描述符表 图 5.4 段选择器和描述符表 索引TI153210局部描述符表全局描述符表第一个项目不用空描述符TI=1TI=0段选择器第5章 存 储 器 管 理 3.段描述符段描述符图 5.5 描述符的分类 堆栈(通常向下扩展)非堆栈(通常向上扩展)数据代码一般的段描述符特殊的段描述符TSSLDT段描述符任务门调用门中断门陷阱门门描述符描述符第5章 存 储 器 管 理 图 5.6 段描述符格式 基地址(2431)GD0段限量(1619)PDPL类型Base基地址(162

    4、3)基地址(015)段限量(015)15141312 111098765432106在80286上,这一字必须置为0,以便向上兼容420域描述G粒度D缺省AVL可用P出现DPL描述符特权级DT描述符类型DTAVLAVL第5章 存 储 器 管 理 段基地址。该域用来确定段在存储器的起始地址。对80286来说,段基地址24位宽,段可在4 MB线性地址空间的任何字节处起始;对80386和80486来说,段基地址32位宽,分成两部分,由处理器将它们结合在一起,32位段基地址决定了段可在4 GB线性地址空间中的任何字节处起始。可以看出,保护方式下段基地址的设置与实方式下段基地址仅限于被10 H整除的地址

    5、处是大不相同的,使用起来灵活得多。第5章 存 储 器 管 理 段限量。该域用来确定段的尺寸。对80286,段限量为16位无符号数,表示段的最大尺寸为64 KB。对80386和80486,段限量由两部分组成20位的无符号数。但仅就20位的段限量还不能确定出段的尺寸,还需要根据段描述符中粒度D的设置来共同确定。若粒度位设置成字节粒状,则限量以字节为单位,得段的尺寸为1 B1 MB。若粒度位设置成页粒状,则限量以页为单位,一页为4 KB,故段的尺寸为4 KB4 GB。当采用页粒状时,有效地址偏移量的最低12位不必检查。若粒度设置为页,段限量设置为00000H,则该段的有效地址偏移量为0FFFH(40

    6、95)。第5章 存 储 器 管 理 类型。图 5.7 段描述符类型域的定义 ST段类型ST位的设置决定了如何解释其他域代码段(ST=1)1CRA访问(1=yes)可读(1=yes)一致性(1=yes)数据段(ST=0)0EWA访问(1=yes)可写(1=yes)向下扩展(1=yes)(对于正常数据段E=0)第5章 存 储 器 管 理 DT位。这是描述符类型位,用来区分两种类型的段描述符。DT=1,表示为段描述符;DT=0,表示为一个特殊的描述符(或称系统段描述符)或门描述符。DPL。该域为描述符特权级域,用来实现保护而不用于地址生成。第5章 存 储 器 管 理 P。P位为存在位,用来表示描述符

    7、存在于存储器中(P=1)或不存在于存储器中(P=0),它用于地址生成。如果一个描述符所描述的段已移至硬盘上,表明不在内存中,这时P=0。若这种情况下试图将该描述符的段选择器装入段寄存器,处理器便会产生一个段不存在异常(以P=0为标志),并且操作系统中的异常处理程序会把该段重新装入存储器。因而该位的设置使操作系统能够对应用程序实现虚拟存储器的功能。第5章 存 储 器 管 理 AVL。AVL为可用位,只在80386、80486中使用。该位用来确定是否允许系统程序员扩充处理器的保护机制,即是否允许对存储器映象的I/O口实现保护。当AVL=1时,表示该描述符(用来描述存储器映象的I/O段)可被系统软件

    8、使用。当AVL=0时,表示该描述符对应的段选择器不能重新装入和使用。第5章 存 储 器 管 理 D。D位为缺省操作尺寸位,不用于地址生成,只在80386及80486的代码段描述符中被识别。当D=0时,表示操作数和有效地址的缺省值是16位;当D=1时,表示操作数和有效地址的缺省值为32位。当一条单指令具有超越前缀时,可以超越该位设置。G。G位为粒度位,在80386、80486中,它用来指定段限量的单位。G=0,表明段限量以字节为单位;G=1,表明段限量以页为单位,每页4 KB。第5章 存 储 器 管 理(2)特殊的段描述符及门描述符。特殊的段描述符及门描述符。表表5.1 系统段类型域定义系统段类

    9、型域定义 第5章 存 储 器 管 理 4.描述符表寄存器描述符表寄存器 图 5.8 描述符表寄存器 全局描述符表寄存器基地址限量80286-24位80386/80486-32位16位局部描述符表寄存器选择器限量80286-24位80386/80486-32位16位基地址16位(GDTR)(LDTR)第5章 存 储 器 管 理 图 5.9 GDTR、LDTR与描述符表的关系 0123最大8191基址GDT310 150123最大8191基址LDT310 15GDTRLDTR150LDTR高速缓存器00边界第5章 存 储 器 管 理 图 5.10 LDTR同LDT描述符和LDT的关系 0010类型

    10、S=0PLDT 基地址A16A23GD0段限量(169)基地址(2431)LDT基地址A0A15LDT限量015LDT选择器150LDT描述符(在GDT内)访问权LDT限量LDT基地址07150LDT 高速缓存器310LDTR 局部描述符表:LDT (规定任务的局部地址空间。最大64KB)CPUAVL第5章 存 储 器 管 理 5.段寄存器段寄存器 图 5.11 80286段寄存器格式 PDPL11CRA出现描述符特权级段描述符代码/数据PDPL10EDWA访问可读可写一致性数据或堆栈段向下扩展T1RPL段选择器(16位)访问权限(8位)限量用字节表示的段尺寸(16位)63504948 474

    11、03916150可见部分不可见部分基地址用字节表示的段基地址(24位)代码段第5章 存 储 器 管 理 图 5.12 80386和80486段寄存器格式 23222120191817161514 131211109876543210GDPLD未用PDTType未用粒度缺省操作尺寸出现描述符特权级描述符类型类型参数计数(仅用于调用门)T1RPL段选择器(16位)访问权限(24位)限量以字节表示的段尺寸(32位)10390 898887646332 310可见部分不可见部分基地址以字节表示的段基地址(32位)第5章 存 储 器 管 理 5.2.2 存储器的分页管理存储器的分页管理 1.页目录和页表

    12、页目录和页表 分页管理机制在将线性化地址空间的页转换到物理地址空间的页时,由于每个页面的整个4 KB是作为一个单位进行映射的,且每个页面都对齐在4 KB的边界,因而线性地址的低12位在分页转换过程中将直接作为物理地址的低12位使用。分页管理机制中的重定位函数(或称转换函数)实际上是把线性地址的高20位转换成对应物理地址的高20位,并且,这个转换函数是通过对常驻内存的页表查询来完成的。对页表的查询分两步进行,即查询一个两级表来完成。第一级表称为页目录表,它的长度也总是恰好为一页(4 KB),且起始于能被1000H整除的物理存储器地址上。因而页目录表的起始地址为20位(80386SX中为12位),

    13、页目录表可在微处理器4GB(80386SX为16 MB)地址空间内任意安置,只要它对齐在4 KB的边界处即可。第5章 存 储 器 管 理 页目录的4 KB数据结构共存放了1024个项(称为页目录项)。每项4 B,32位,是一个指针,它指向另一个相似的数据结构。这个相似的数据结构即是称为页表的第二级表。它也总是4 KB长,并对齐在4 KB 的边界处。页表的4 KB数据结构又存放了1 024个页表项,每项同样4 B,32位长,且作为物理存储器中页的指针。页目录项和页表项的格式都一样,表示在图5.13中。其中高20位称为页帧地址,低12位定义如下:第5章 存 储 器 管 理 图 5.13 页目录表/

    14、页表的表项格式 页基地址3212AVL0 0DA0 0U/SR/WP3112119876543210第5章 存 储 器 管 理 (1)P位。该位为存在位。P=1表示该项里的页地址映射到物理存储器中的一个页。P=0,表示该项里的页地址没有映射到物理存储器中,或说该项所指页不在物理存储器中。这时,若欲用该项进行地址转换将产生一个页出错异常,并且操作系统中的页出错处理程序将把该项重新装入存储器。如果页目录中,某项的P位清零,则表示对应的页表已被移出存储器。可以说操作系统利用P位提供的信息实现了请求分页的虚拟存储器的能力。(2)R/W位。R/W位为读/写位,用于实现页级保护,它不涉及到地址转换。第5章

    15、 存 储 器 管 理 (3)U/S位。U/S位为用户/监控程序位,用于实现页级保护,不涉及地址转换。(4)A位。A位为访问位,用来表明该项指出的页是否已被读或写。若目录项中A=1,则表示该项所指出的页表已被访问过。若页表项中A=1,则表示该页表项所指出存储器中的页已被访问过。总之,A位的置位由处理器完成,A位的状态可供操作系统软件测试,以便计算不同页的使用频度。第5章 存 储 器 管 理 (5)D位。该位为页面重写标志位,只在页表项中设置,而不在页目录项中设置。当页表项中D=1时,表明该项所指出的存储器中的页已被写。D位的状态可被操作系统软件测试,以便操作系统判断存储器的某页在它最后一次被复制

    16、到磁盘后是否被修改过。(6)AVL域。该域为可用域,共3位,供系统软件设计人员使用。可将与页使用有关的信息放在该域中,帮助分析判断应把哪些页移出存储器。第5章 存 储 器 管 理 2.线性地址到物理地址的转换线性地址到物理地址的转换 图 5.14 线性地址格式 313029282726252423222120191817161514131211109876543210目录索引域(10位)表索引域(10位)偏移量(12位)第5章 存 储 器 管 理 图 5.15 线性地址到物理地址的转换 页目录项页目录页表项页表目的地址目录索引域页帧表索引域偏移量线性地址3122 2112 110CR3(PDB

    17、R)第5章 存 储 器 管 理 图 5.16 线性地址25674890H的分解 0010 0101 01目录索引10 0111 0100页表索引1000 1001 0000偏移量31222112110(10位)(10位)(12位)第5章 存 储 器 管 理 由于CR3=28345XXXH,所以页目录基地址=28345000H。线性地址中目录索引地址为0010010101B,故得页目录表中所寻址项的物理地址=目录表基地址+偏移地址(目录索引地址乘4)=28345000H+254H=28345254H。设目录表中寻址项(从28345254H开始的4个字节)的内容为00200021H,这表明寻址项对

    18、应页表的基地址为00200000H,P位(位0)及A位(位5)为1,该被寻址页表在存储器中,且对应目录项已被访问过。线性地址中的页表索引地址为1001110100B,故得页表中所寻址项的物理地址=页表基地址+页表索引地址4=00200000H+9D0H=002009D0H。又设页表中所寻址项(从002009D0H开始的4个字节)的内容为34567021H,则页帧基地址=34567000H,要寻址的存储单元最终物 理 地 址=页 帧 基 地 址+线 性 地 址 中 的 1 2 位 偏 移 量=34567000H+890H=34567890H。第5章 存 储 器 管 理 4.页转换高速缓冲存储器页

    19、转换高速缓冲存储器 图 5.17 386DX/386SX转换监视缓冲器(TLB)结构 2替换位块Way 0Way 1Way 2Way 3Way 0Way 1Way 2Way 3标记块数据块标记17386DX=20位386SX=12位集173匹配标记3115 1412 11001234567有效属性130012110TLB入口12填充0线性地址集选择第5章 存 储 器 管 理 3.小结小结 图 5.18 虚拟物理地址转换 选择子150偏移量段机制310310310虚拟地址线性地址(分页被禁用)物理地址分页机制第5章 存 储 器 管 理 5.3 保护及任务切换保护及任务切换 5.3.1 不同任务间

    20、的保护不同任务间的保护 不同任务间的保护首先开始于把每个任务放置在不同的虚拟地址空间,然后,再在每个任务中定义一组独立的映射表,完成相互间各不相同的虚拟物理地址转换。这样,一个任务中的虚拟地址空间映射到物理存储器的一部分;另一个任务的虚拟地址空间映射到物理存储器的另外区域。在各任务中定义各自独立的一组映射表时,一般不应使它们所映射的物理存储空间重叠,因而,各任务之间是彼此隔离的。第5章 存 储 器 管 理 为了将操作系统与各应用程序隔离,且为各应用程序所共享,常把操作系统存储在一个单独的任务中,并把操作系统存储在虚拟存储空间的一个公共区域中。然后,再对每个任务按此公共区域分配一个同样的虚拟地址

    21、空间及定义同样的虚拟物理地址转换函数。这样,既可使每个任务能对操作系统进行访问,又可保证操作系统不被各应用程序破坏。通常,称各任务公用的这部分虚拟地址空间为全局地址空间,而称仅被一个任务独占不被其它任务共享的虚拟地址空间为局部地址空间。第5章 存 储 器 管 理 5.3.2 段级别保护段级别保护 图 5.19 段描述符格式 基地址(2431)GD0段限(1619)PDPLDT类型基地址(1623)基地址(015)段限量(015)15141312 111098765432106在80286上,为向上兼容,此字必须置为0420域描述G颗粒性D缺省AVL 可用P存在DPL 描述符特权级别DT描述符类

    22、型AVL第5章 存 储 器 管 理 1.类型检查类型检查 图 5.20 描述符类型域 ST段类型ST位的设置决定如何解释其他域代码段(ST=1)1CRA可访问的(1=yes)可读的(1=yes)一致的(1=yes)数据段(ST=0)0EWA可访问的(1=yes)可写的(1=yes)向下扩展(1=yes)(对于正常数据段E=0)第5章 存 储 器 管 理 表表5.2 存储段描述符类型存储段描述符类型 第5章 存 储 器 管 理 表5.3 相容的段寄存器和段类型 第5章 存 储 器 管 理 2.限度检查限度检查 实方式下,段的限度固定为64 KB。保护方式下,段的限度由段描述符的限度域指出,是不固

    23、定的。对80286来说,限度以字节为单位,16位限度域表明一个段最大尺寸为64 KB。对80386/80486来说,限度域为20位,当描述符中G=0时,限度以字节为单位,一个段最大尺寸为1 MB;当G=1时,限度以页为单位,一页为4 KB,限度=限度域值*4096+4095。因此,若限度域值为0,则该段的最大尺寸为4 KB,程序可访问段内从0到4095的字节。第5章 存 储 器 管 理 除了向下扩充的段以外,所有段的段描述符的限度(化为字节数)都表示从段起始处开始的最大偏移量。当访问存储器操作数时,只要被访问操作数的一部分超出限度,处理器就会发出一般保护异常信号。例如,访问一个双字操作数,其地

    24、址在限度减2处,便会发生异常。当段描述符中E=1时,为向下扩充段,它常用于堆栈段。对向下扩充的段来说,限度表示一个段的最小偏移量。向下扩充堆栈段的合法偏移量范围是从限度的字节数+1直到220-1(对16位段)或232-1(对32位段)。当限度=0时,向下扩充段具有最大的尺寸。第5章 存 储 器 管 理 图 5.21 两种数据段的类型 段外 限度+1偏移量 FFFFH段内 0000H偏移量 限度向上扩展的段ED位=0偏移量FFFFH 限度+1 限度0000H段的有效范围段内限度+1偏移量 FFFFH段外 0000H偏移量 限度向下扩展的段ED位=1偏移量FFFFH限度+1限度0000H段的有效范

    25、围*向下扩展的段通常用作堆栈第5章 存 储 器 管 理 3.特权检查特权检查 图 5.22 Intel的特权环状模型 核级别0(最高特权)系统服务级别1扩展级别2应用程序(用户级别)级别3(最低级别)第5章 存 储 器 管 理 5.3.3 数据访问数据访问 每当一个程序试图访问一个数据段时,便将程序的当前特权级CPL与要访问段的特权级DPL进行比较,只要DPL的特权级别等于或低于CPL(或RPL)的特权级,对该数据段的访问便是允许的。否则便不允许,并产生一个一般保护异常,向操作系统报告该访问操作违反了特权规则。因而,在数据访问时,被访问的数据段的特权级DPL规定了允许访问该段的最外层特权级。由

    26、于数据访问的这一特权级规则使得上节所述特权级的典型用法中,0级的操作系统核心,有权访问任务中的所有数据存储段;1级的操作系统其余部分有权访问2级和3级的所有数据存储段;3级的应用程序只能访问本身的处于3级的数据存储段。反过来,0级操作系统核心的数据存储段却得以保护,不能被操作系统除核心外的其余部分及应用程序访问。同时,整个操作系统也得到了保护,它的数据存储段不允许任何2级和3级的应用程序访问。第5章 存 储 器 管 理 5.3.4 控制转移控制转移 在同一任务中实现控制转移有3种方式:段内转移,直接转移到另一代码段的段间转移和通过调用门的段间转移。1.段内转移段内转移 段内转移通过近程跳转指令

    27、JMP或近程调用指令CALL及返回指令RET(包括直接给出段内偏移量和间接给出段内偏移量)执行。它不会引起特权级的变化,也不需再加载CS段寄存器,只需作限度检查,即检查是否会转移到段外。同时为加速保护检查,限度值已预先装入到段描述符高速缓存器中。第5章 存 储 器 管 理 2.直接的段间转移直接的段间转移 直接的段间转移是最简单的段间转移,它使用具有远程标号的跳转指令或调用及返回指令执行。这时,远程标号直接给出一个48位的远指针:16位选择子和32位偏移量。该16位选择子作为新的选择器值装入CS寄存器时,便将所指向的段描述符装入CS段寄存器对应的段描述符高速缓存器中。接下来应进行保护检查,只有

    28、当远指针所指目标段的描述符特权级DPL与当前特权级CPL(当前正执行程序段的特权级)相等,且目标段是一个存在的可执行的代码段,或目标段描述符特权级DPL高于等于当前特权级CPL,且目标段是一个存在的,一致的可执行代码段时,这种控制转移方能实现。即目标段转移地址的基地址由远指针所指段描述符提供,转移地址的偏移量由跳转或调用指令提供。第5章 存 储 器 管 理 这里所谓一致的可执行代码段是一种特别的存储段,以段描述符类型域中ST=1及C=1来标志。一致的可执行代码段用来存放多个特权级程序共享的例程。例如,存放数值库例程。这样,不同特权级执行的程序可以使用段间调用指令调用库中被共享的例程,并可在调用

    29、程序(主程序)具有的特权级(等于或低于一致可执行代码段的特权级)执行该例程,而不要求改变特权级。因此,可以说直接的段间转移实现的是同一特权级同一任务的转移。控制转移到一致的代码段,将在调用程序(主程序)具有的特权级执行一致代码段中的共享例程,而不在一致的代码段由其DPL表示的特权级上执行共享例程。因而,这种情况下,一致代码段中的DPL用来规定可以转移到该一致代码段的最内层特权级。DPL的这种解释正好与数据访问时相反。第5章 存 储 器 管 理 3.通过调用门的段间转移通过调用门的段间转移 表5.4 系统段和门的类型字段的编码 第5章 存 储 器 管 理 图 5.23 调用门描述符格式 偏移量(

    30、高)*PDPL0类型代码段选择器偏移量(低)域描述P存在DPL描述符特权级别类型指定门类型计数要拷贝至目标栈的字数(16位门)或双字数(32位门)0 0 0计数调用门*对80286,大多数=0第5章 存 储 器 管 理 图 5.24 通过调用门的转移 偏移量 DPL1选择器偏移量基址DPL2基址基址调用门描述符可执行代码段描述符入口点偏移量基址目标代码段CALL或JMP(不用)变址RPL描述表偏移量选择器1 决定谁可以访问门2 决定谁可以访问过程 允话跳转至不一致代码段,如果:较小特权(CPL、RPL)门DPL、目标段DPL=CPL 允许调用或跳转至一致代码段,如果:较小特权(CPL、RPL)

    31、门DPL、目标段DPLCPL计数第5章 存 储 器 管 理 图 5.25 特权级和门及其间的调用 CodeACodeBGateBCodeCCodeEGateECodeDGateCGateA特权级0特权级1特权级2特权级3第5章 存 储 器 管 理 4.堆栈切换堆栈切换 CALL指令通过调用门向内层程序转移时,不仅切换特权级,而且也需要切换栈。为使微机系统安全运行,操作系统应使每个任务为每个特权级别保持一个独立的栈。因而,当通过调用门向内层转移时,必须从主调用程序的外层栈切换到目标的内层栈。内层栈的特权级别由目标代码段描述符的DPL决定。内层栈的栈段寄存器SS及栈指针ESP由任务状态段TSS中适

    32、当(与目标代码段相同特权级)的指针进行初始化。TSS由操作系统为每个任务所建,它包含有由操作系统初始化,且为只读的指向0级、1级和2级的48位栈指针:栈段选择器(SS)和偏移量(ESP)。通常TSS中的ESP指针设置成新栈段的高端限定值,因而在新的特权区总是建立起一个空栈。第5章 存 储 器 管 理 图 5.26 切换到内层栈 Outer SSOuter ESPP1P2P3P4Outer CSOuter EIPLimit栈向下增长调用后、返回前的ESP指针P4P3P2P1Limit返回后的ESP指针调用前的ESP指针内层栈外层栈00向内调用向外返回Copied第5章 存 储 器 管 理 5.向

    33、外层返回向外层返回 CALL指令通过调用门把外层的程序转移到内层的过程(子程序)后,当内层的子程序执行完时,需执行一条段间返回指令RET,把程序再从内层转向外层,并将堆栈从内层切向外层。仍以图526为例说明返回过程。首先,从内层栈中弹出返回地址指针到CS寄存器和EIP寄存器中,并且可以调整内层栈的ESP值(如图5.26中ESP+16,该调整数16为RET 16的操作数),使其跳过CALL指令执行时从外层栈拷贝入内层栈的4个双字参数,指向外层栈指针ESP的压入处。返回地址指针的选择子部分指向要返回的外层栈。选择子的RPL字段确定返回后的特权级。第5章 存 储 器 管 理 5.3.5 页级别保护页

    34、级别保护 图 5.27 页表及页目录项目格式 3130 292827262524232221 20191817161514131211 109876543210页帧地址DAU/SR/WP存在读/写用户/监督者页写通*禁止页高速缓存*访问过用过*可用*只用于80486*页目录项目不定义80386SX不用PCDPWT第5章 存 储 器 管 理 表表5.5 页级保护属性页级保护属性 第5章 存 储 器 管 理 表表5.6 页目录和页表的保护组合页目录和页表的保护组合 第5章 存 储 器 管 理 5.3.6 任务切换任务切换 1.任务状态段任务状态段 图 5.28 32位任务状态段 000000000

    35、0000000I/O映射基址000000000000000T任务的LDT选择器000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000GSFSDSSSCSESEDIESIEBPESPEBXEDXECXEAXEFLAGSEIP保留0000000000000000CPL2的SSCPL2的ESP0000000000000000CPL1的SSCPL1的ESP0000000000000000CPL0的SSCPL0的ESP3116 15064H60H5CH58H54H50

    36、H4CH48H44H40H3CH38H34H30H2CH28H24H20H1CH18H14H10HCH84注:阴影区域是静态的,并在初始化后不改变。其它区域 由每个任务切换时写入。1第5章 存 储 器 管 理 1)链接字段 图 5.29 任务状态段的链接链 NT=0NT=1NT=1任务A任务B任务CNT=1EFLAGSTR第5章 存 储 器 管 理 2)内层栈指针 任务状态段中有3个内层栈指针,均为48位全指针,依次存放在TSS中偏移量为4、12及20开始的区域中,分别指向0级、1级及2级堆栈的栈顶。当发生向内层转移时,便把相应的内层栈指针装入到SS及ESP寄存器,以便切换到内层堆栈,且把外层

    37、栈指针压入内层栈中,以便当内层向外层返回时恢复外层栈用。TSS段的内层栈指针没有指向3级的栈指针(因为3级是最外层的特权级)。如果任务在3级被挂起,由于没有发生特权级转移,堆栈不用切换,且被挂起任务的指针保存在TSS的SS及ESP寄存器映象中。TSS段中的内层栈指针只能读出不能写入,因而,向内层栈切换时总是将内层栈初始化为同样的栈指针。这是因为不可能发生同级内层转移的递归。第5章 存 储 器 管 理 3)有关地址映射的基寄存器 这里所谓有关地址映射的基寄存器是指局部描述符表寄存器LDTR和控制寄存器CR3。LDTR包含当前任务的LDT描述符的选择子。CR3包含页转换机制中页目录表的基地址(起始

    38、地址)。任务切换时,处理器用新任务TSS段中偏移量为60H中的内容(任务的LDT描述符选择子)装入LDTR寄存器。这样,便将局部描述符表LDT变成新任务的LDT,从而也就改变了虚拟地址到线性地址的转换函数。同样,在任务切换时,处理器用新任务TSS段中偏移量为1CH处的内容装入CR3寄存器。这样,就将页目录表变成新任务的页目录表,从而改变了线性地址到物理地址的转换函数。这种在任务之间改变转换函数的能力,也是保护机制的一部分,使任务之间得到相互隔离。第5章 存 储 器 管 理 4)寄存器保存区域 TSS的寄存器保存区位于偏移量为20H5FH的区域,用来保存通用寄存器、处理器控制寄存器及段寄存器的内

    39、容。其中各段寄存器内容都保存在一个32位的双字中,双字的低16位存放16位选择子,双字的高16位为全零。当TSS对应的任务正在执行时,保存区域是未定义的。当前任务被切换时,通用寄存器、处理器控制寄存器及段寄存器的当前值便存入当前任务的保存区域中。这样,当再次发生任务切换,并切换回原任务时,各寄存器的值可由保存区域读出,恢复成该任务切换前的状态,以使原任务能恢复执行。第5章 存 储 器 管 理 5)其它字段 TSS中偏移量从66H开始的区域存放I/O许可位图,它定义了可由TSS对应任务寻址的I/O端口地址。I/O许可位图属于TSS中的附加字段。TSS中偏移量为64H处的字是为任务提供的特别的属性

    40、。80386中只定义了一个调试陷阱属性位T(位于64H处字的最低位),字的其它位为全零。当发生任务切换时,进入任务的T位为1,则在任务切换后,新任务的第一条指令执行之前产生调试陷阱。调试陷阱可使软件在任务之间根据需要有效地共享调试寄存器。第5章 存 储 器 管 理 2.TSS描述符、描述符、任务门描述符及任务寄存器任务门描述符及任务寄存器1)TSS描述符 图 5.30 TSS描述符的格式 基地址(2431)G00限度(1619)PDPL0类型基地址(1623)基地址(015)段限度(015)15141312 111098765432106对于80286上,此字必须为零,以便向上兼容420域描述

    41、G颗粒AVL 可用P存在DPL 描述符特权级别AVL第5章 存 储 器 管 理 2)任务寄存器 任务寄存器TR与一个段寄存器的格式相同,有一个16位的选择器和48位不可见的高速缓存器。16位选择器用来存放当前任务TSS描述符的选择子。当把当前任务TSS描述符的选择子加载入TR中时,TSS描述符提供的TSS段基址和限度值便被高速缓存入TR的48位不可见部分,然后,当前任务TSS的基地址及限度值便从TR的高速缓存器中取得。加载和存储TR寄存器分别采用LTR及STR指令。STR为非特权指令,可在任何特权级程序执行。LTR为特权指令,只能在CPL=0的程序中执行。通常,系统软件初始化时向TR中置入初值

    42、。以后TR值的进一步变化只能由任务切换来进行。第5章 存 储 器 管 理 3)任务门描述符 图 5.31 任务门描述符格式 保留PDPL0类型TSS段选择器保留保留任务门1506420域描述P存在DPL描述符特权级别类型指定门类型计数要拷贝至目的栈的字数(16位门)或双字数(32位门)第5章 存 储 器 管 理 3.任务切换任务切换 1)任务切换的启动 有4种方式用来启动任务切换。(1)远程JMP指令或CALL指令的目标选择器选择了全局描述符表中的TSS描述符。这时目的地址偏移量被忽略。(2)远程JMP指令或CALL指令的目标选择器选择了GDT或LDT中的任务门(目标地址的偏移量被忽略),任务

    43、门中的选择器指向新任务的TSS描述符。第5章 存 储 器 管 理 (3)发生了一个中断,该中断的向量选择了IDT中的任务门,任务门中的选择器指向新任务的TSS描述符。(4)EFLAGS中的嵌套任务位NT=1时,执行返回指令。这时,目的任务的选择器在执行返回指令的任务的TSS链接字中。综上所述,正常的CALL和JMP指令以及中断,如果它们直接或通过任务门间接引用一个TSS描述符,就会变成任务切换指令。IRET指令只有NT=1时才能启动一个任务切换。第5章 存 储 器 管 理 2)任务的切换过程任务的切换过程需经如下5个步骤。(1)特权检查。(2)存在与限度检查。(3)引出任务的状态保存。(4)T

    44、R寄存器加载。(5)引入任务的寄存器加载和任务执行。第5章 存 储 器 管 理 5.3.7 对特权级敏感的指令对特权级敏感的指令 80386指令系统中,某些指令当具有不同特权级的程序执行它们时,会有不同的结果。如果一条指令被赋予了特权,便只能在特权级0执行;如果试图在0级以外的特权级执行该指令,便会产生异常。此外,I/O敏感指令只能在两种情况下执行:执行该指令的程序,其特权级等于或高于EFLAGS寄存器中IOPL域规定的特权级。I/O敏感指令中使用任务状态段TSS中I/O许可位图规定的可由当前任务访问的I/O地址。最后,若需对EFLAGS中某些位进行修改必须在特权级0执行的程序中进行;而若需对

    45、EFLAGS中其它字段进行修改也必须在特权级等于或高于IOPL的程序中进行。第5章 存 储 器 管 理 1.被赋予特权的指令被赋予特权的指令 表表5.7 特特 权权 指指 令令 第5章 存 储 器 管 理 2.I/O敏感指令敏感指令 表表5.8 I/O敏感指令敏感指令第5章 存 储 器 管 理 3.修改修改EFLAGS寄存器内容的指令寄存器内容的指令 状态标志寄存器中的有效字段共有13个,其中的IF、IOPL及VM三个字段,CPU对它们处理时不同于其它字段。首先,IRET、CLI、STI及POPF指令可以用来修改这三个字段。其次,IOPL及VM字段只能由特权级0的程序修改,而IF位只能由特权级

    46、等于或高于IOPL的程序修改。然而,一个特权级低于IOPL的程序执行POPF或IRET指令,试图修改这三个字段中的任一个时,并不产生异常,试图修改的字段也不会被修改,且不给出任何特别的信息。此外,POPF指令执行后不修改VM位,而PUSHF指令执行的结果会将VM位置0。这样,便可避免通过测试来确定系统是否处于虚拟8086方式。第5章 存 储 器 管 理 表表 5.9 EFLAGS字段的特别处理字段的特别处理 第5章 存 储 器 管 理 5.4 虚拟虚拟8086方式方式 80386和80486微处理器除可运行于实方式(模拟8086方式)及虚拟地址保护方式之外,当EFLAGS寄存器中VM位被置位时

    47、,还可运行于虚拟86方式,简称V86方式。在V86方式中,一个或多个8086实方式程序可执行于保护方式环境中。V86方式的目的是为运行于处理器上的8086程序提供独立的虚拟机。一个虚拟机是由处理器能力与称为虚拟机监控程序的操作系统软件组合而创建的一个环境。这样,V86任务执行起来便感觉它是执行在8086上的任务。第5章 存 储 器 管 理 典型的虚拟机配置为:通过虚拟机自身的TSS提供一组虚拟寄存器,并提供一组虚拟存储空间。80386及80486的任务机制有可能使80386以虚拟8086方式执行一个任务的8086程序,以16位保护方式执行另一个任务的80286程序,以及以32位的保护方式执行第三个任务的80386程序,并且,可在这些任务之间不断进行切换。这无疑是一种功能很强的机制。此外,若一个8086程序运行在一个虚拟机环境下,并试图通过中断、异常和I/O 指令访问外部设备,则被称为虚拟机控制程序(或称监控器)的系统软件便模拟此行为或将信息直接传送给硬件。可以说,虚拟机是8086硬件的解释器。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《微型计算机原理》课件第5章.ppt
    链接地址:https://www.163wenku.com/p-7873309.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库