第10章保护模式及其编程教程文件

上传人:sunfu****g7806 文档编号:138065336 上传时间:2020-07-13 格式:PPT 页数:163 大小:556.50KB
返回 下载 相关 举报
第10章保护模式及其编程教程文件_第1页
第1页 / 共163页
第10章保护模式及其编程教程文件_第2页
第2页 / 共163页
第10章保护模式及其编程教程文件_第3页
第3页 / 共163页
第10章保护模式及其编程教程文件_第4页
第4页 / 共163页
第10章保护模式及其编程教程文件_第5页
第5页 / 共163页
点击查看更多>>
资源描述

《第10章保护模式及其编程教程文件》由会员分享,可在线阅读,更多相关《第10章保护模式及其编程教程文件(163页珍藏版)》请在金锄头文库上搜索。

1、第10章 保护模式及其编程,10.1 保护模式基础 10.2 虚拟内存管理 10.3 特权级保护 10.4 任务 10.5 中断和异常 10.6 虚拟8086模式 10.7 操作系统类指令,10.1 保护模式基础,在保护模式下: 寻址高达4GB的物理地址空间 支持存储器分段管理机制和分页管理机制 支持多任务 支持4个特权级和配套的特权检查机制 区分不同级别的代码,10.1.1 32位CPU内部结构,CPU有8个处理单元:执行单元、分段单元、分页单元、总线单元、指令预取单元、指令译码单元、高速缓存单元和浮点运算单元。,1总线单元,总线单元是CPU与存储器和I/O的接口 总线接口对外提供:32位(

2、或64位)数据总线、32位(或36位)地址总线以及控制总线 总线单元负责完成所有外部总线操作,能够产生控制地址锁存器和数据总线收发器工作的控制信号。,3指令译码单元,指令译码单元接收FIFO队列的输出 指令译码单元将接收到的机器代码指令译 码为微代码指令,并供执行单元使用,4执行单元,执行单元取出译码后的指令并执行该操作, 包括: 算术逻辑单元ALU 寄存器组 专用乘法器 移位器 控存(ROM),5分段和分页单元,分段和分页单元负责地址产生、地址转换 和对总线接口单元的段检查。 CPU存储器管理的分段单元用硬件进行高速地址计算,完成逻辑地址到线性地址的转换和保护性检查; 分页单元实现保护模式下

3、的分页机制,它可以将线性地址转换成物理地址,并由总线单元输出。,6浮点运算单元,浮点运算单元集成在80486及以上的CPU中; 对于80386,需要另外一个数学运算协处理器80387来执行浮点运算。,7高速缓存单元,高速缓存单元将最近被访问的内存单元的内容保存在CPU内部的Cache中。 下次访问这些内存单元时,CPU直接访问Cache就可以存取这些单元的内容。 由于Cache的访问速度比内存快,高速缓存单元能够显著提高程序的运行速度。,10.1.2 三种运行模式,CPU具有三种运行模式:实模式、保护模式 和虚拟8086模式 ,关系如下:,1实模式,CPU被复位(加电)时,自动进入实模式。 实

4、模式不支持硬件上的多任务切换 CPU不能对内存进行分页管理 实模式也不支持特权级 DOS操作系统运行于实模式下,2保护模式,实模式下对一系列的寄存器进行设置,就可以进入保护模式。 CPU提供了段式和页式内存管理功能 CPU支持多任务和特权级 Windows/Linux操作系统运行于保护模式下,3虚拟8086模式,虚拟8086模式是为了在Windows/Linux系统中执行DOS程序而设计的,它是一种经过“修改”的保护模式。,4特权级,在保护模式下,CPU有4个特权级(03),操作系统运行在高的特权级(0)上,而应用程序运行在低的特权级(3)上。,10.1.3 寄存器,32位CPU支持的寄存器有

5、以下几种: 1通用32位寄存器 分别是:EAX,EBX,ECX,EDX,ESI,EDI, EBP,ESP。 主要用于算术运算、逻辑运算以及对内存操作数的寻址。,2标志寄存器,标志寄存器EFLAGS也扩展为32位 ,位11到位0和8086完全相同。这里主要扩展了4个标志位: V86模式位VM(位17) 此位为1时,表示当前CPU正工作在V86模式下; 此位为0,表示当前CPU工作在实模式或保护模式下。 嵌套任务位N(位14) 当前的任务嵌套在其他任务中,此位为1,否则为0 恢复位RF(位16) I/O域IOPL(位13和12),3指令指针寄存器EIP和堆栈指针寄存器ESP,指令指针寄存器EIP,

6、它总是下一条要执行的指令的偏移地址,偏移地址指的是这条指令在代码段中的位置。 堆栈指针寄存器ESP,用于存放当前堆栈段中栈顶的偏移地址。 他们的低16位分别是IP和SP,4调试寄存器DR,调试寄存器提供高级的调试功能 例如:可以设置一个数据断点,在程序访 问某个数据时激活调试程序。,5测试寄存器TR,测试寄存器提供对TLB的测试。,6全局描述符表寄存器,全局描述符表GDT是用来定义全局存储器空间的一种机制,它用段描述符说明一个全局存储器中的段,每个GDT最多含有8192个描述符(8192864KB)。 用全局描述符表寄存器GDTR指出GDT的位置和大小。,GDTR是48位的寄存器。其最低16位

7、是限长,给出GDT的字节大小;其高32位是基址,指出GDT在物理存储器中存放的基地址。 例如:GDTR=0E003F0003FFH,则说明GDT的地址为0E003F000H,长度为3FFH+1=400H。其中可容纳400H/8=80H个段描述符。,7中断描述符表寄存器,中断描述符表IDT中保存着中断门描述符; IDT最多包含256个门描述符,CPU最多支持256个中断。 中断描述符表寄存器IDTR是48位的寄存器。其最低16位是限长,给出IDT的字节大小;其高32位是基址,指出IDT在物理存储器中存放的基地址。,中断描述符表寄存器,例如: IDTR=0E003F40007FFH,则说明IDT的

8、地址为0E003F400H,长度为7FFH+1=800H。其中可容纳800H/8=100H个中断门描述符。,8局部描述符表寄存器,局部描述符表LDT含有与系统中某一个任务相关的各个段的描述符; 局部描述符表寄存器LDTR并不直接指出LDT的位置和大小,而是指向一个LDT描述符,由LDT描述符指出LDT的位置和大小。,9任务寄存器TR,任务寄存器TR在保护模式的任务切换机制中使用。 TR是16位的选择符,其内容为索引值,它选中的是TSS描述符。 任务状态段TSS中包含启动任务所必需的信息。它在存储器的基地址和限长(大小)由TSS描述符指出,TSS描述符放在全局描述符表GDT中,而TR内容指出了T

9、SS描述符在GDT中的顺序号。,10控制寄存器,存在着4个系统控制寄存器CR0CR3。CR0的低5位是系统控制标志,被称为机器状态字MSW。MSW中各位的含意: PE:保护模式允许标志 等于0为实模,等于1为保护模式 MP:运算协处理器存在位 等于1表示系统中有运算协处理器。,MSW中各位的含意(续),EM :等于1时系统用软件模拟器执行数学运算 TS:任务切换标志。 当任务切换时,自动设置此位为1 PG: 等于1时,存储器管理单元允许分页; 等于0时,分页功能被关闭,线性地址等于物理地址。,11段寄存器CS,DS,ES,SS,FS,GS,32位CPU有6个段寄存器,比16位CPU增加了FS和

10、GS两个段寄存器。 在实模式下,它们的用法和16位CPU相同 在保护模式下,段寄存器不直接存放段基址,而是存放一个索引,由索引从GDT或LDT中找到段描述符,从而确定关于这个段的全部描述信息。这个索引被称为段选择符。,段寄存器(续),选择符的格式如下 RPL :请求特权级,2位二进制数字,求特权级是将要访问的段的特权级。 TI :表指示符。为0时,从GDT中选择描述符;为1时,从LDT中选择描述符。 Index:索引。指出要访问描述符在段描述符表中的顺序号。,10.1.4 显示CPU寄存器的值,要取得GDTR,IDTR,TR,LDT寄存器的值,分别使用SGDT,SIDT,STR,SLDT指令,

11、这些指令将寄存器的内容保存到内存单元中。 程序举例:cpuregs.asm,10.2 虚拟内存管理,如果程序要访问的内容不在内存中,CPU会产生一个异常,由操作系统的存储器管理程序来处理,将所需的内容装入内存中。这就是所谓的虚拟存储器,它并不完全是真正的内存空间,也称做虚拟内存。,10.2.1 段式内存管理功能,将虚拟地址转换为线性地址,由CPU的分段部件完成。 虚拟地址:程序指令中使用的地址,由段和偏移两个部分组成 线性地址:段的基地址再加上偏移量 物理地址:从微处理器引脚上输出的地址信号,虚拟地址到线性地址,再到物理地址的转换过程,3段描述符,段描述符用于描述代码段、数据段和堆栈段。段描述

12、符的格式如图 :,段描述符,段描述符位于GDT或LDT中,占64位, 由以下几个部分组成: 段基址(32位) 限长(20位) 访问权限(8位) 属性(4位),访问权限字节,访问权限字节定义如下 P:存在位 等于1时表示该段己装入内存; 等于0时表示该段没有在内存中,访问这个段会产生段异常。 DPL:描述符特权级,说明这个段的特权级,访问权限字节,S:描述符类型位 为1时,这个段为代码段、数据段或堆栈段; 为0时,为系统段描述符。 E:可执行位,区分代码段和数据段 S=0且E=1时,这是一个代码段,可执行。 S=0且E=0时,这是一个数据段或堆栈段,不可执行。 E=0时,后面的两位为ED和W;

13、若E=1时,后面的两位为C和R。,访问权限字节,ED:扩展方向位 为0时,段从低地址向高地址扩展,偏移量小于等于限长。 为1时,段从高地址向低地址扩展,偏移量必须大于限长。 W:写允许位 为0时,不允许对这个数据段写入; 为1时,允许对这个数据段写入。,访问权限字节,C:一致位 为0时,这个段不是一致代码段 为1时,这个段是一致代码段 R:读允许位 为0时,不允许读这个段的内容 为1时,允许读这个段的内容 A:访问位 为1表示段已被访问过 为0表示段未被访问过。,属性位,属性位包括G、D、AVL等 G:粒度位。 G1时,限长以页为单位; G0时,限长以字节为单位。 D:默认操作数宽度。 D1时

14、,为32位数据操作段; D1时,为16位数据操作段。 AVL:可用位。 这一位保留给操作系统或应用程序来使用,段描述符高速缓存,在读写内存单元时,CPU需要检查段描述符的内容是否和当前操作相一致,CPU的运行效率极大地降低。为解决这个问题,CPU在内部设置了段描述符高速缓存。 在指令执行过程中,只有段寄存器的值发生改变时,才需要到GDT或LDT中装入段描述符。如果段寄存器的值不改变,高速缓存中的段描述符可以被直接引用,这样就避免了到主存中频繁读取段描述符。提高了CPU的效率。,10.2.2 页式内存管理功能,段式内存管理是将形如DS:EBX的虚拟地址,由DS的段基址再加上偏移部分,就得到了线性

15、地址。 分页管理将分段管理机制得到的线性地址转换为物理地址。 使用分页机制的好处: 可以把每个活动任务当前所必需的少量页面放在内存中,而不必将整个段调入内存,从而提高了内存的使用效率。,1分页,页的长度固定为4KB 页与页之间没有重叠 页式内存简化了存储器管理 不能充分地利用内存 ,会产生碎片,2线性地址到物理地址的映射,线性地址按页为单位映射到物理地址 每一个线性页面只能映射到一个物理页面上 多个线性页面可以映射到同一个物理页面上,3线性地址转换为物理地址的过程,32位线性地址被划分为3个部分: 页目录索引(10位),对页目录的索引 页表索引(10位),对页表的索引 字节索引(12位),线性

16、地址在页面内的偏移。,线性地址转换为物理地址的过程图,线性地址转换为物理地址的过程,以PDBR的值作为页目录的基地址,定位到页目录 。 用线性地址中的页目录索引(10位)在页目录表中找到一个页表描述符。 页表描述符的高20位给出了页表的基地址 。 线性地址中的页表索引(10位),指示了被访问的页在页表中的序号。 页描述符的高20位给出了物理页面的基地址。 物理页面的基地址再加上线性地址中的12位字节索引,便得到32位线性地址对应的32位物理地址。,4片内转换检测缓冲器TLB,为了提高转换效率,CPU内部设置了片内转换检测缓冲器TLB,其中保存了32个页描述符,它们都是最近使用过的。 在从线性地址转换为物理地址时: 如果线性地址的页描述符已在TLB中,则无需再经二级转换就可以直接引用。 如果线性地址的页描述符没有在TLB中,则需要访问页目录表和页表来取得页表描述符和页描述符,最后将这个页描述符存在TLB中。,5页表项,页表项就是在分页转换时用到的页表描述 符和页描述符,它们都是32位的,其格式: 页表项的低12位提供保护功能和统计信息。 U/S位、R/W位、P位实现页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

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