计算机的保护模式.pptVIP

  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文档。上传文档
查看更多
小结 GDTR (GDT) IDTR (IDT) LDTR (LDT) TR EFLAGS (IOPL, VM) CR0(PE, PG) CR1,CR2,CR3 CS,DS,ES,FS,GS,SS (selector) Loading Descriptor from Descriptor Table Privilege – check Privilege - check 基于段的内存保护 Restricting Control Transfers Restricting Control Transfers CPL = DPL (在同一优先级内转移) or CPL = DPL if the selected code segment is confirming segment (在低优先级中执行高优先级代码, 段描述符中的C位必须为1) Restricting Control Transfers Call-gate operation Call-gate operation Privilege Check for Control Transfer with Call Gate Input/Output I/O permission bit map of a TSS IO指令执行条件 (1) CPL≤IOPL时,可以执行I/O敏感指令。 (2) CPL IOPL时,TSS中IO位图等于0时,也可以执行I/O敏感指令。 C:\jiekou\chap02cmosram C:\jiekou\chap02allowio -load giveio.sys C:\jiekou\chap02cmosram 2009/03/01 23:46:27 在实模式下,可以执行LGDT和LIDT指令设置GDTR和IDTR。 * 而和所有任务有关的公用段的描述符放在全局描述符表GDT中。 * 段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成 的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。 32位CPU比16位CPU增加了FS、GS两个段寄存器。这些段寄存器也是16位的,在实模式下,它们的用法和16位CPU相同,即段寄存器的内容是20位段首址的高16位。 在16位CPU系统中,它只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问;在32位 微机系统中,它有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段。 32位CPU有两个不同的工作方式:实方式和保护方式。在每种方式下,段寄存器的作用是不同的。有关规定简 单描述如下: 实方式: 前4个段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑 地址仍为“段值:偏移量”的形式。为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量。 保护方式: 在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选择子”(Selector)的某个值。。 * 图2-11举例 * 80386和80486有32条地址引脚,可以寻址4GB的物理地址空间。Pentium系列CPU有36条地址引脚,可以寻址64GB的物理地址空间。 当然,任务1和任务2对同一个线性地址0500200016得到的物理地址可以是不同的。从线性地址到物理地址的转换是由分页部件来处理的。 * 例如执行指令: MOV DS,AX 则DS装入数据段选择符,从被选中的描述符表中读出的段描述符,被装入数据段描述符缓存器中。(如图8.15所示) 随着程序执行,被缓存的段描述符也可能改变。MMU同时只允许有6个段处于活动状态,与它们对应的选择符寄存器,就是那6个段寄存器。如果选择符的内容不改变,缓存中的段描述符可以被直接引用,省去了到主存查表的过程。 举例,p27 * 举例子p29 * 在内存读写操作中,CPU首先要计算线性地址,这就需要取得段描述符中的基地址,再加上偏移量。接下来,CPU还需要根据段描述符中的属性来确定操作的合法性。 例如,程序要向一个只读段写入数据,CPU不能执行这个写入操作,而且要产生一个异常。另外,如果指定的内存操作数偏移量超过了段限长所规定的范围,也要产生一个异常。因此,在读写内存单元时,CPU需要检查段描述符的内容是否和当前操作相一致。如果每一次都需要到内存中去读取段描述符,那么CPU的运行效率就会极大地降低。为解决这个问题,CPU在内部设置了段描述符高速缓存。 * 每一个任务都有它自己的一个线性地址空间,由于线性地址是32位的,所以线性地址空间为232=4GB。段的长度不固定,段和段之间允许重叠;而页面的划分则严格得多 当然,固定长度的页可能会产生碎片,会浪费一些内

文档评论(0)

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

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

1亿VIP精品文档

相关文档