一、内存寻址

1.内存地址分类: 逻辑地址、线性地址、物理地址

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

  线性地址:C语言中取地址符&打印出来的地址就是这个地址,也叫虚拟地址。

  物理地址:内存总线寻址的具体地址,是真实存在的。

  逻辑地址通过分段单元转换成线性地址,线性地址通过分页单元转换成具体的物理地址。

  逻辑地址---->分段单元---->线性地址------>分页单元------>物理地址

2.硬件分段

  6个段寄存器:存放段选择符,cs,ss,ds,es,fs,gs

  cs:代码段寄存器 

  ds:数据段寄存器

  ss:栈段寄存器

  段描述符:GDT(全局描述符表). LDT(局部描述符表)

  快速访问段描述符。

  分段单元:先检查TI字段找到段描述符所在的描述符表寄存器(GDTR or LDTR),将段选择符中的index字段乘8再加上TI指向的寄存器的值得到段描述符的具体地址,

  把逻辑地址的偏移量加上之前找到的段描述符中Base字段的值则得到了对应的线性地址。

  Linux中的分段:Linux下逻辑地址和线性地址总是相同的。

3.硬件分页: 4KB的页 32位:页目录(最高10位)  页表(中间10位) 偏移量(最低12位) 

  物理地址扩展分页机制(PAE)

  Linux分页:2.6内核版本采用4级分页模型: 

    页全局目录、页上级目录、页中间目录、页表

 

转载于:https://www.cnblogs.com/ciel12138/p/10563246.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值