首页 > 代码库 > Linux进程3——虚拟地址访问
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的目录内存页。
Linux进程3——虚拟地址访问
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。