免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 870 | 回复: 0
打印 上一主题 下一主题

保护模式相关学习 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-13 11:21 |只看该作者 |倒序浏览
80386CPU有【3】种工作方式
【实模式】:8086
【保护模式】:提供多任务支持,实现任务间以及任务内部的保护机制【内存空间的相互独立】
【虚实模式】:兼容8086方式
80386CPU在【保护模式】下提供【2】种内存访问方式
【存储器分段管理机制】:必须的
【存储器分页管理机制】:可选项
【物理地址】:真实存在的内存空间
【逻辑地址】:即虚拟地址。保护模式下程序使用的是虚拟存储器中的地址,最终要映射到有效物理空间
每个任务拥有一个虚拟地址空间,通过【线性空间】隔离机制避免并行任务拥有相同物理空间
【线性空间】:大小等于物理空间
  逻辑地址(虚拟地址)
  15   0   31    0                                             31      0                                          31      0
【[选择子]:[偏移量]】=》【分段管理机制】=》【线性地址】=》【分页管理机制】=》【物理地址】
-----------------------------------------------
【分页管理机制】:线型地址到物理地址的映射机制。
将线性地址和物理地址划分大小相同的块【页】;
建立线性页与物理页之间的对应关系【映射表】;
如果没有建立分页机制,线性地址等于物理地址。
【分段管理机制】:虚拟地址到线性地址的映射机制。【段】就是内存块
段大小可变【段的组成】:段基地址(32位,对应的线性起始地址)、段界限(20位,大小)、段属性()
线性地址=段基址 到 段基址+段界限 / 段基址+段限×4K+0xFFFh【取决于段属性G位是否置位】
堆栈地址的特殊性:从高向低扩展 线性地址 = 最高地址-1-段地址 到 段界限 +1-段基址
【描述符】-> 段的位置、大小、使用方式。描述符分【3】类:存储段描述符、系统段描述符、门描述符
【存储段描述符】:
[m+7]        [m+6,m+5]      [m+4,m+3,m+2]     [m+1,m         ]
Base         attributes        Segment Base        segment limit
31...24           |                  23...0                     15...0
                      ^
   [7  6 5   4         3210       ] [ 7   65     4   3210]                 
    G  D 0  AVL     Limit19...16  P   DPL    DT  Type
【P】:p=1 有效
【DPL】:特权级
【DT】:描述符类型
【type】:存储段属性
【为何segment Base 和 segment limit都被分为2部分】:为了兼容286 在286环境下段基地址24位 段限16位
【全局与局部描述符】
【[选择子]:[偏移量]】:
【选择子】->【描述符】-> 段基址     
        +偏移量-> 线性地址-> 物理地址



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13779/showart_299858.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP