- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 内存管理与映像接口 在PC机中,CPU对其部件的访问分为两类 一种是前面已介绍过的I/O端口寻址方式,它完全为PC机系统输入/输出设备服务 另一种访问方法就是存储器寻址,主要用于CPU对系统内存的管理,也可用作对系统的输入/输出接口管理 X86的三种工作模式及寻址原理 最早的8088CPU是准16位微处理器,其最大的寻址空间为1M字节 操作系统是DOS,因此DOS下的应用软件的寻址和处理方式必须符合8088的标准 为解决CPU性能的发展与兼容性之间的矛盾,CPU有三种工作模式 实地址模式 保护模式 仿86模式 一、实地址模式 实地址模式和8086/8088的寻址方式是一样的,但运行速度更快,内存配置更大些。用户在8086/8088上运行的程序可以不做任何修改直接在实地址模式下运行 开机启动时,CPU自动进入实地址模式 用户可以一直运行在实模式,也可以通过软件指令切换到保护模式 在实模式下,X86仍使用CS∶IP指示指令地址,每段仍为64K,寻址空间为1MB+64KB-16B 实地址模式存储器空间 在8086/8088中,利用段寻址可实现的最大范围为0000H∶0000H--FFFFH∶FFFFH 如果把段左移4位加上偏置,寻址范围为00000H-10FFEFH,该范围为1MB+64KB-16B 8086/8088地址空间被限制在220=1M字节 80386以上CPU有32位地址线,只要在实模式下把A20开通,就可以实现上述范围的寻址 实地址模式I/O空间 实模式下,80X86与8086/8088有相同的I/O空间,仍为64KB, 0000H-FFFFH 这些端口地址可以直接被I/O指令所访问 二、保护模式 在保护模式下,能利用其全部的地址线参与寻址,并能满足多用户、多任务操作系统的要求 CPU寻址内存时,首先要满足保护规则,然后才能进行寻址 访问权限是指分配给每个任务的一定内存资源和读写限制 保护规则的含义是指寻址时超越了这些权限的话,CPU将拒绝执行这次寻址,并产生中断以告警。 保护规则是对个别段所采取的措施 在保护模式下,段通过转换才能存取 在转换的过程中要经过一层筛选以防止错误的寻址 实地址模式如何切换到保护模式 X86增加了CR0,CR1,CR2和CR3四个控制寄存器 CR0的第0位称为PE位(保护激活位) 在实模式下,PE位置0 当PE位置1时,系统进入保护模式 PE位可以通过指令来改变 存储器分页管理 当CR0的PG位被置为1后,其寻址方式就进入分页管理 这时CPU将32位地址线所管理的4GB线性地址空间分成1048576个页面,每个页面占用4KB 其目的主要是为了采用虚拟内存技术 虚拟内存技术 虚拟内存不是由内存芯片组成,而是把数据存在外部存储器中(如硬盘) 需要用时再把数据转移到真正的内存中 这样可以极低的价格获取大量存储空间 保护模式下的四个新寄存器 全局描述符表寄存器GDTR(48位) 局部描述符表寄存器LDTR(16位) 中断描述符表寄存器IDTR(48位) 任务寄存器TR(16位) 另外,EAX、EBX、ESP等扩展为32位 描述符表 在内存中设置一个区域存放描述符,从而构成描述符表 每个描述符占8个连续字节,用来描述一段内存基地址及访问权限 描述符寄存器则指明了对应描述符表的所在内存地址 CPU在保护模式下的寻址是通过描述符和对应的偏置来完成的 386以上CPU的每个任务都划分一定的内存资源 在保护模式下,段寄存器 (如CS, DS, ES等)高13位表示地址偏置 第三位是一个全局或局部任务标志位TI 如TI=0表示这次寻址是一次全局任务寻址 由GDTR与段寄存器高13位偏置一起找到全局描述符表GDT中的一个描述符 再加上某偏置寄存器如EIP中的偏置完成寻址任务 当TI=1时表示是一次局部任务寻址 这时必须用LDTR、GDTR与CS一起找到局部描述符 再与EIP一起完成寻址 保护模式下全局或局部任务寻址 保护模式下的寻址空间 逻辑地址由段寄存器(如CS)和逻辑偏移量(如EIP)组成 段寄存器有16位,其中有效寻址位是高14位,而逻辑偏移量有32位 故每个任务所拥有的逻辑地址空间为232×214=246,即64TB 任务寄存器 其内容是当前任务的选择符,间接指示出任务的任务状态段TSS,主要用于任务切换功能 每一个任务都有一个任务状态段TSS 在全局描述符表GDT中保留有每个任务的TSS描述符 而TSS描述符包括了对应TSS的基地址和表长 通过任务寄存器和当前的GDTR可选择一个TSS描述符 任务状态段中保留有与这个任务相关的外部环境和内部数据 三、仿86模式 CPU对存储器的寻址是不用描述符的,这点它与实模式相同 将段寄存器内容左移4位与偏移量一起生成21位线性地址 在仿86模式下 每个任务的
原创力文档


文档评论(0)