内存分段与分页机制

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪力左手

囧rz

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值