zoukankan      html  css  js  c++  java
  • 理解X86的内存管理

    Segmentation 提供的机制是隔离格子的code, data, stack;
    Paging 提供的是一种虚拟内存系统,当然也提供多任务之间的隔离;
    虚拟地址到物理地址的转换如下图:
    如上图,进程读写的地址是VA(虚拟地址),通过分段的机制,指向到LA(线性地址)中的某些段,线性地址通过分页最终可以指向到实际的内存的PA(物理地址)。
    分段是必选的,分页是可选的,如果不选择分页的话,LA就等于PA了,那么这个地址空间就是CPU的数据总线可以访问的空间了。
    Multi-Segement Model如下图:
    每个程序都有自己的段描述符表和自己的段。
    虚拟地址到线性地址的转换如下图:
    段选择器是16bit(使用13位,共有8*1024个段描述符)的,指向段描述符表中的段描述符,段描述符是8字节的,包含基地址和段的长度limit等信息,段地址加上段偏移,就可以拿到lA了。
    32位地址,4KB 页大小时候的线性地址转换如下图:
    offset是12位,也就是4*2^10=4KB空间;
    页目录是10位,页表是10位,页大小是4KB,所以可以寻址的空间是2^10*2^10*4KB=4GB;
    32位地址,4MB页大小的时候的线性地址转换如下图:
    offset是22位,因此页的大小也就是4*1024*1024Byte=4MB;
    也目录是10位,页大小是4MB,所以可以寻址的空间是2^10*4MB=4GB;
    CPU读写内存地址的整体拓扑大概应该是如下图:

    参考文献:IA编程手册,卷3系统编程指南,第3章:保护模式的内存管理

    万事走心 精益求美


  • 相关阅读:
    解决淘淘第三天无法显示图片
    包名与工程名
    明明有这个类却提示出错
    出错,网页显示不出内容
    配置域名
    本地jar包添加到maven仓库
    POJ1704 Georgia and Bob 博弈论 尼姆博弈 阶梯博弈
    POJ 2960 S-Nim 博弈论 sg函数
    sg函数总结
    POJ 2425 A Chess Game 博弈论 sg函数
  • 原文地址:https://www.cnblogs.com/kongchung/p/15322175.html
Copyright © 2011-2022 走看看