《实模式与保护模式.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《实模式与保护模式

实模式、保护模式 2009-06-07 17:18 参考了百度百科中关于实模式的讨论:/view/404433.htm 及/toening/blog/item/d8d927d403bdfdc350da4b6d.html 和/trueailei/blog/item/b8faa413a22c57d7f7039e4d.html 实模式、保护模式、虚拟模式都是X86中的概念。 从寻址方式来说,CPU中的IP(EIP)中存放虚地址,把虚地址转换到物理地址,各个模式有各自的转换方式。 实模式下,虚地址到实地址转换:DS段寄存器左移4位与偏移地址相加,得到物理地址,寻址1M。 保护模式下,虚地址到实地址转换经过MMU(内存管理单元),也就是分段与分页机制,寻址4G。 保护有两层含义: 1、任务间保护:多任务操作系统中,一个任务不能破坏另一个任务的代码,这是通过内存分页以及不同任务的内存页映射到不同物理内存上来实现的。 2、 任务内保护:系统代码与应用程序代码虽处于同一地址空间,但系统代码具有高优先级,应用程序代码处于低优先级,规定只能高优先级代码访问低优先级代码,这 样杜绝用户代码破坏系统代码。这是通过段式管理来实现,4G虚拟内存中,代码数据和堆栈各占有一个段,段是一个独立有意义的内存单元,有基地址和边界以及 本段的优先级,windows系统有两个优先级,Ring0(高优先级)或Ring3(低优先级),系统代码段和数据段属于Ring0,不能被用户代码 (Ring3)访问。 实模式: 16bit的8086处理器标志着IntelX86王朝的开始,并且引入了一个重要概念——段。8086处理器地址总线扩展到 20位,但算术逻辑运算单元(ALU)宽度即数据总线却只有16位,也就是直接运算的指针长度是16位的。为支持1M寻址空间,引入分段的方法。为支持分 段8086CPU设置四个16bit段寄存器:CS、DS、SS、ES,对应于地址总线中的高16位。寻址时,段寄存器*0x10+偏移地址=物理地址。 这样实现16位内存地址到20位物理地址的转换,叫“映射”。 (之前在想:为什么每个段最大不超过64K,其实很简单,因为16位CPU数据线是16位的,所以最多只能用一个16bit数来标识一个偏移量,也就说一个段最大长度是64K) 保护模式: 80286处理器地址总线位数增加到24位,可以访问16M地址空间。并引入一个新概念——保护模式。这种模式下,内存段的访 问受到了限制。访问内存时不能直接从段寄存器获得段起始地址了,而要经过额外转换和检查(从其不能随意存取数据段)。为与过去兼容,80286内存寻址有 两种方式:保护模式和实模式。系统启动时处理器处于实模式,只能访问1M内存空间,经过处理可以进入保护模式,可访问16M内存空间,但要从保护模式回到 实模式必须重启机器。它有个致命缺陷就是80286虽然扩大了寻址空间,但是每个段大小还是64K(因为数据线还是16位的),程序规模仍然受到限制,因 此很快就被80386代替了。 80386是一个32位的CPU。它的地址总线和ALU数据总线都是32位的。寻址能力达到4G。理论上说当数据总线和地址总线宽度一致 时,CPU结构应该简洁明了,但80386不能做到这点,作为80X86产品系列的一员,80386必须维持那些16位段寄存器的存在,必须支持实模式, 同时还要支持保护模式。Intel选择在段寄存器基础上构筑保护模式,保留16位段寄存器。在保护模式下,段范围达到4G。从80386以后Intel的 CPU经历了80486、Pentium、Pentium2、Pentium3等型号,但都属于同一种系统结构的改进与加强,所以把80386以后的处理 器统称为IA32(32 Bit Intel Architecture)。 深入讨论下保护模式: 保护模式与实模式中程序运行的实质是一样的,都是“CPU执行指令,操作相关数据”。最大的变化是“地址转换方式”的变化。 这里可以看下两种模式下地址转换方式的区别: 在ES存入0x1000,DI存入0xFFFF 实模式:ES:DI = 0x1000 * 0x10 + 0xFFFF = 0x1FFFF,这就是“段基址左移4位加偏移地址”。 保护模式:(注意:0x1000 = 10 0000 0000 0 00 B)ES:DI = GDT全局描述符表中第0x200项描述符给出的段基址 + 0xFFFF。为什么是第0x200项?请看下边段选择子(即段值)的结构。 这里ES在两种模式下都不是真正段地址(实模式下称段寄存器,保护模式下称选择子),都是一种映射,不过映射规则不同而已。 保护模式的基本组成:(围绕“地址转换方式”的变化增设了相应机构) 1、数据段 ?? 实模式下的各种代码段、数据段、堆栈段、

文档评论(0)

wendan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档