码迷,mamicode.com
首页 > 其他好文 > 详细

内存分段与分页机制

时间:2015-08-19 16:52:07      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:内存分页 分段 汇编原理

1.物理地址和逻辑地址

  逻辑地址->线性地址->物理地址 

    8086CPU:

       物理地址:段地址*16+偏移量 (20位总线地址)

       逻辑地址:页码*16+偏移量  (16位寄存器地址)

    8086CPU以后总线寻址和CPU位数趋于一致,操作系统结构向下兼容,线性地址基址置0:

       虚拟地址(线性地址):每个进程的虚拟地址空间32位操作系统为4G,其中1G内核页面,3G用户页面  (32位CPU寄存器地址)

           个人认为:线性地址,段描述符对物理内存空间地址加以限制,使内存被充分利用


       物理内存划分:帧(Frame)               逻辑内存划分:页(Page)

       地址总线:intel早期CPU20位(内存1M);286的地址总线24位(内存64M);386的地址总线32位(内存4G

       总线:地址总线、数据总线、控制总线

2.页表的软硬件实现

         页表:段寄存与页码对应表,如下page table

                  技术分享

         实现方式:硬件使用TLB(Translation look-aside buffer翻译后备缓冲区)+内存存储

                技术分享

3.段表硬件结构

       段表:基地址+界限寄存器(限制偏移量大小)

              技术分享

4.逻辑地址结构

      逻辑地址 = 段选择符+段内偏移量

              技术分享

              段选择符中,索引号对应段描述符

              技术分享

              段描述符存放在:                  

                      GDT(Global Descriptor Table,全局描述表),GDTR寄存器保存段描述符

                      LDT(Local Descriptor Table,本地描述表),LDTR寄存器保存段描述符,如单个进程

5.逻辑地址转线性地址    

             技术分享

             段选择符:TI=0使用GDT,TI=1使用LDT

6.页表数据结构(如:段描述符和段选择符)

       a.层次划分页(Hierarchical Paging

               技术分享

       b.Hashed Page Tables 哈希页表

           技术分享



本文参考以下资料,图片引用来源于此,本文只做归纳总结:

http://www.cnblogs.com/felixfang/p/3420462.html

http://blog.csdn.net/drshenlei/article/details/4261909

http://wenku.baidu.com/link?url=6vkfCHh2LeGvc6PfxmmrqKXkv4oM3S6PujD_mdBDiyBjvi5bY5YyCRYdVAqO7T13wECaeBj9CubE6AqRC6ct_rJT6zfkkxJb8armQGgBuZ_

http://blog.chinaunix.net/uid-22683402-id-1771372.html

http://bbs.chinaunix.net/thread-2083672-1-1.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

内存分段与分页机制

标签:内存分页 分段 汇编原理

原文地址:http://blog.csdn.net/daoer_sofu/article/details/47663901

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!