Linux进程3——虚拟地址访问

1.虚拟地址到物理地址

  X86芯片访问内存,需要使用MMU功能,实现虚拟地址到线性地址,再到物理地址的访问。

X86的分段机制是强制的,分页机制是可选的。

2.分段机制

  X86的虚拟地址,由选择符:偏移值决定。段选择符由CS,SS,DS等组成。CS为代码段选择符,SS为堆栈段选择符,

DS为数据段选择符。

  Index为段描述符在全局段描述符表或局部段描述符表的索引,因为段描述符为8字节,所以从bit3开始。

  TI表示是GDT或者LDT

  RPL表示段访问权限,内核态为0,用户态为3.

  段描述符结果如下:

  

  通道段描述符和偏置计算线性地址。

3.Linux分段机制

  Linux主要使用分页机制,为了适应X86芯片,简化了分段机制。为用户态程序和内核态程序分别建立CS和DS

段描述符,使基地址为0,长度为4GB。

  

4.Linux段分页机制

  X86的32位地址分成3个区域,包括目录、页表和偏移量。如果采用2级模式,会导致每个进程需要4MB(4B * (2^20))空间

保存页表项。采用这种3级页表安排方式,可以保证程序只保存使用的页表项,并且在实际访问地址时才加载缺省的页面。

  目录项和页表项具有相同的数据结构,每个进程可以有1024个目录项,每个目录项可以有1024个页表项,

每个页表项指向一个4KB的目录内存页。

   

 

转载于:https://www.cnblogs.com/TheImportanceOfLiving/p/7294083.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值