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
版权声明:本文为博主原创文章,未经博主允许不得转载。