微机原理 操作模式_第1页
微机原理 操作模式_第2页
微机原理 操作模式_第3页
微机原理 操作模式_第4页
微机原理 操作模式_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、第11章操作模式 主讲:董毅 11.1 实模式综述(回顾) n实模式下的存储器地址由16位的段寄存器与16位 的偏移量寄存器配对组成,两者结合起来构成逻 辑地址。 q【问题】段寄存器的最大值与偏移量寄存器的最大值都 可为0FFFFH,此时的物理地址为(0FFFFH16) 0FFFFH=10FFEFH100001111111111101111B, 使 得第21条地址线A20为1,但8086只有20位地址,说明 已经超出了8086的可寻址空间范围。 【解决办法】 n在8086中就存在着所谓地址环绕的问题,超出20位 地址的进位“1”将被忽略,因此10FFEFH实际的物理 地址将被定位到存储器的0F

2、FEFH处。 n80286的地址线有24位,80386/80486/奔腾系列等微 处理器的地址线至少有32位,因此地址100000H及其 随后的大量空间都是实际存在的,不会环绕到 00000H处,但它超出了1MB的空间限制,进入了扩 展存储器的空间。为了严格兼容8086实模式, 80286/80386/ 80486/奔腾系列都采取了一种附加闸 门控制的办法,通过专门的电路设计对A20地址线进 行控制,称为“A20 gate”。当闸门电路保持A20线为 0电平时,系统就能仿真8086的地址环绕。 MS DOS的内存管理 n可使用1MB空间,分成两段: q00000H9FFFFH为基本内存或称常规

3、内存,容量640KB, DOS与用户程序只能存放在这个区段。 q0A0000H0FFFFFH为保留内存区,共384KB,保留给基本 输入输出系统(BIOS)与系统总线功能扩展接口卡上的存储器 使用,例如显示卡上的视频BIOS、显示缓冲区以及系统启动 网卡上的启动ROM等。 n1MB以外的区间是扩展内存区XMS(Extended Memory Specification),属保护模式存储器寻址 (Protected Mode Memory Addressing) 的空间,MS DOS无法直接管理,仅可用作RAM一类的虚拟磁盘 等,这是实模式的致命缺陷。 MS DOS的内存管理 n对于80286以

4、后的微型计算机,在扩展内存管理程序 HIMEM.SYS的驱动控制下,当逻辑地址处在 0FFFF:0010H0FFFF:FFFFH范围内,亦即物理地 址在1MB之外的100000H10FFEFH空间段时,MS DOS系统能真正访问到扩展内存的这个区间。于是原 来1MB的空间限制就被突破而增加了64KB。这个区 间就称高端内存区(High Memory Area,HMA) q它可以存放DOS的常驻程序,从而使基本内存区中原驻这些 程序的空间释放出来,用户程序区就增加了几十KB可贵的空 间。为了达到这一目的,MS DOS系统配置文件 CONFIG.SYS中必须有以下两条语句: HMA配置 nDEVI

5、CE=C:DOSHIMEM.SYS 装载扩展内存驱动程序 nDOS=HIGH 让DOS使用高端内存区 图11.1 80286/386/486/Pentium系列内存配置示意图 10FFF0 10FFEF 100000 FFFFF A0000 9FFFF 00000 0 扩 展 内 存 高 端 内 存 区 保 留 内 存 常 规 内 存 实 模 式 下 寻 址 的 存 储 器 保 护 模 式 下 可 寻 址 的 存 储 器 n例例11.1 A20地址线由92H端口的bit 1控制, 该位为0时A20地址线关闭而产生地址环绕, 系统操作于实模式为1时打开A20地址线可 访问到1MB以上的空间,系统

6、操作于保护模式。 编写打开与关闭A20地址线的宏指令。 1.打开A20地址线 2.EnableA20 MACRO 3. PUSH AX 4. IN AL,92H 5. OR AL,00000010B 6. OUT 92H,AL 7. POP AX 8. ENDM 9.关闭A20地址线 10.DisableA20 MACRO 11. PUSH AX 12. IN AL,92H 13. AND AL,11111101B 14. OUT 92H,AL 15. POP AX 16. ENDM 11.2 保护模式下的存储器分段管理 n通俗地讲,所谓“保护”就是在充分利用微处 理器资源的基础上,保护各类程

7、序既高效率又 高可靠地运行。 q例如Windows操作系统就必须而且只能在保护模式 下运行。 微处理器的保护 1.存储器的区域保护功能存储器的区域保护功能 对存储器实施分段管理,尽量禁止对存储器进行非 法访问,或者程序失控时产生异常中断以便采取必 要的补救措施等。在多任务系统中,通过局部描述 符表LDT为各任务定义不同的虚拟空间,使任务之 间在区域上进行隔离,互不干扰,即使某一任务出 错也不致于影响其他任务的执行等。 2.特权级保护功能特权级保护功能 为各种类型的存储器段附加一个访问权级别,为程 序赋予不同的级别,例如定义操作系统的特权级别 最高,而用户应用程序级别最低,使操作系统不会 转移到

8、可靠性差的用户程序模块中去,而用户程序 则绝对不能随意修改操作系统的数据,这样就保障 了操作系统的安全。 11.2.1 控制寄存器与存储器管理寄存器 nCR0CR4 共5个控制寄存器 1.CR0实际上在80286 CPU中就已经开发,但当时只使用了 它的低位部份作为机器状态字MSW,在32位微处理器中它 有许多重要的新的定义。 2.CR1 由80386/80486定义,但至今一直未使用,这是为今 后开发更新的产品所保留的资源,这样的设计考虑就为产品 的兼容性创造了条件。 3.CR2是页故障线性地址寄存器,80386/80486即使用了该寄 存器。 4.CR3的高位字用作存储器分页管理时页目录基

9、地址寄存器, 低位字只使用了两位,80386/80486即使用了该寄存器。 5.CR4则是奔腾新增加的控制寄存器。主要用于存储器的分页 管理与虚拟中断等一些增强功能。 表11.1 CR0CR4控制寄存器中各位的定义 表11.1 CR0CR4控制寄存器中各位的定义 存储器管理寄存器(Memory management registers) n全局描述表寄存器GDTR n中断描述表寄存器IDTR n局部描述表寄存器LDTR n任务寄存器TR n【说明】 qGDTR与IDTR在系统中是唯一的,由CPU内部寄存器来实现, 它们分别用于存放全局描述符表和中断描述符表的表格基地 址与段界即表格大小。 qL

10、DTR与TR在系统中同局部任务相匹配,不是唯一的,每个 任务有各自的LDTR和TR,因此由内部高速缓冲存储器来实 现,用于存放各个任务的局部表格参数。 11.2.2 虚拟存储器 n保护模式与实模式的寻址方法有实质性的不同。 逻 辑 地 址 15 0 15 0 20 位基地址 虚 拟 地 址 15 0 31 0 32 位基地址 段基址 左移 4 位 偏移量 20 位物理地址 段选择器 段管理部件 偏移量 32 位线性地址 虚拟存储器 n虚拟存储器是指磁盘等外部存储体,“虚拟” 作为主存储器使用。在保护模式下的虚拟地址 空间可以达到246=64TB。 q假设有以下传送指令: MOV ES:ABC_

11、OFF, EAX 同实模式相比,该指令在保护模式下有以下明显差 别 n偏移量ABC_OFF可以是16位/32位,依16位/32位指令而 定 n段寄存器ES中装载的已不是段基地址,而是段选择器。 11.2.3 描述符表的概念 n描述符描述符 在保护模式下,将虚拟存储器分成许 多大小不等的存储“段”,每个段都由一个8 字节长的描述符来描述,说明该段所处的基地 址位置,该段的大小,该段存放的内容是数据 还是指令代码?以及读/写等其他一些属性。 n描述符表描述符表 系统再将这些段描述符有机地组织 成线性表,这种表就称为描述符表。描述符表 分全局描述符表(Global Descriptor Table,

12、GDT) 与局部描述符表(Local Descriptor Table,LDT) 两类。 描述符表的概念 n全局描述符表全局描述符表GDT 该表是面向系统全局的, 为系统中的各个任务共享,对应的存储器空间 一般处理公共数据、公用过程调用与中断过程 以及装载操作系统等。此外,该描述符表还包 括对各个局部描述符表的描述。在一个系统中 只有唯一的1个全局描述符表,因此GDT只需 有表格基地址和表格的大小就能在主存储器中 定位了。 描述符表的概念 n局部描述符表局部描述符表LDT 该表是面向具体任务的, 每个任务拥有一个独立的局部描述符表。同该 表对应的存储器空间存放着各自的代码与数据, 达到各个任务

13、在区域上实现隔离的目的。局部 描述符表不是唯一的,系统中有多少个任务就 有多少个局部描述符表,所以要完整地表征 LDT还要附加选择器,用它来表示当前选择的 是哪一个局部描述符表。 描述符表的概念 n描述符表寄存器描述符表寄存器 CPU内部拥有全局描述符表 寄存器GDTR,用它存放全局描述符表的表格 首地址与段界限大小,使GDT定位,通常情况 下都不会再改变它的位置。 q由于局部描述符表寄存器LDTR依系统中的具体任 务而定,不是唯一的,任务改变时当前LDT随之变 化,所以它们是通过段寄存器与描述符Cache寄存 器来实现的。段寄存器中存放当前LDT的选择器, 描述符Cache寄存器中则存放它的

14、表格首地址、段 界限大小与属性等。不过对于用户而言一般不必担 心这些差别,系统会自动配置。 11.2.4 特权级及其保护 n所谓特权级是给存储器的每个段都附加了一个 访问权限属性,系统共分4个特权级,各个段 必须归属于这4个级别中的其中一个: q0级是访问权最高的特权级 q3级是访问权最低的特权级 q1级与2级的访问权介于0级与3级之间。 图11.3 奔腾系列的4级特权 应用程序 PL=3 OS 扩展 PL=2 驱动 PL=1 内核 PL=0 闸 门 闸 门 闸 门 闸 门 闸 门 闸 门 特权级保护机制的原则性规定 1.特权级高的代码段不能向特权级低的代码段 转移。 n例如,操作系统的代码段

15、不能转移到用户应用程 序,因为用户应用程序的安全性较操作系统差, 有可能导致系统崩溃。 2.特权级低的代码段不能访问特权高的数据段。 n例如不能让用户应用程序访问操作系统的内部数 据,因为应用程序对操作系统数据的修改是极其 危险的。 特权级保护机制的原则性规定 3.特权级低的代码段可以访问特权高的代码段, 但必须经过闸门检查。 n例如用户程序可以调用操作系统内部的过程。这里 要特别指出的是,应用程序与操作系统不能使用同 一个堆栈,否则有可能在堆栈剩余空间不多时调用 内部过程而使堆栈溢出。因此它们都拥有各自的堆 栈段,而且堆栈段的特权级往往与执行程序的代码 段特权级相同,当代码段的特权级发生变化

16、时,堆 栈段的特权级也随之变化。 特权级保护机制的原则性规定 4.特权级高的程序代码段应能访问特权低的用 户数据段,以便提供数据交流。 n例如操作系统应能访问用户程序中的数据,由于 是用户数据段而不是用户程序段,因而对操作系 统的安全性不会造成严重的影响。 特权级保护机制的原则性规定 5.所有的应用程序都使用最低的特权级,它们 只使用计算机而不是控制计算机。 6.闸门又称控制门,它是通过执行转移指令、 调用指令和中断来实现的,从而产生了相应 的转移门、调用门和中断门等概念。执行这 类指令时,系统会进行一系列的保护性检查 与判断,确保安全转移。 11.2.5 段选择器与段描述符的结构 n保护模式

17、下段寄存器是一个16位的段选择器, 而不是一个段基地址。 qbit15bit3共13位作为在全局描述符表GDT或局部 描述符表LDT中搜索描述符的索引值。 qbit2是描述符表指示器TI,表示当前指向何种表格, 为0指向GDT,为1则指向LDT, (可见这高14位都具有存储器地址属性。) q最低的2位bit1bit0表征当前的请求特权级RPL。 15 3 2 1 0 Index TI RPL 段描述符 n定义存储器段的基地址、段的大小以及段的属 性,每个段描述符都是由8个字节共64位组成 。 全局描述表与局部描述符表中的描述符格式是 一致的 。 第 76 字节 第 54 字节 31 24 23

18、 22 21 20 19 16 15 14 13 12 11 8 7 0 基址 3124 G D res avl 段界 1916 P DPL DT Type 基址2316 第 32 字节 第 10 字节 31 16 15 0 基址 150 段界 150 段描述符说明 n段基址是被描述段的起始地址,由最高位字节、 第4字节、第3字节与第2字节组成32位起始地 址,寻址空间达4G字节。 n段界限表示该段存储器空间的最大偏移量地址, 由第6字节的低半个字节与最低的两个字节组 成,共20位,说明段界的最大值为1M。(但 它要与属性中的粒度G结合才能准确描述该段 的存储器空间容量。) 图11.6 由段描

19、述符描述的存储段位置和大小 段描述符 存储器 Base+Limit 被描述的段 Limit Base Limit Base Base Base 段描述符说明 n段属性控制对该段存储区的访问,系统对该段 的访问操作要根据段属性进行合法性检查,当 访问操作不符合段属性的要求时就会发生系统 异常中断。 q占第6的高半字节与第5字节共12位。段属性各位的 意义见表11.2。 表11.2 段属性的定义 特权级的进一步说明 nDPL(Descriptor Privilege Level)表示被描述段 的特权级。 n请求特权级RPL(Requested Privilege Level),它是要求对该段进行修

20、改的特权级 值。 n当前特权级CPL(Current Privilege Level)的概 念,它是当前正在执行的代码段的特权级,也 就是CS寄存器中段选择器的最低2位bit1与bit0 之值。 q在多数情况下,CPL都等于RPL。 特权级的进一步说明 n在修改数据段寄存器时应该满足条件 DPLCPL。这就是说,被访问的数据段的特 权级必须低于(包括等于)当前代码段的特权级。 q例如当前代码段的特权级CPL1,那么此时只能 访问DPL1,2或3的数据段,而不能访问DPL0 的数据段。 段界限的进一步说明 n段界限(Limit)并不能完整地反映被描述段空 间的实际大小,它必须与粒度G结合才能表征 一个段的实际空间。 q当粒度G=1选页时,一个段的最大空间可达1 M(最 大段界限)4096(页尺寸)=4 GB; q如果粒度G=0选字节,则一个段的最大空间仅为1 MB。 n可见仅从存储器管理的原理上讲,段的最小空 间可以是1个字节,只是没有多少实用意义而 已。 段界限的进一步说明 n当段界限以4K字节为单位时,实际的段界限 LIMIT可通过下面的公式从20 位段界限Limit计 算出来: LIMIT=limit*4K+0FFFH=(Limit SHL 12)+0FFFH 例例11.2 设段基地址为10000

温馨提示

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

评论

0/150

提交评论