您的位置:首页 > 其它

3、操作系统内存管理——段页式(虚拟内存)

2017-08-12 17:50 239 查看
注:参考哈工大李治军老师公开课。本小节需要之前分段分页为基础

 

对用户而言,分段是对内存的有效使用;而对于计算机而言,分页可以提高内存的使用效率。操作系统需要满足两个方面的需求,所以就采取了段页相结合的方式来管理内存。

 

对于用户而言,当用户发出一个逻辑地址,用户希望访问到特定程序段的内存空间,而对于计算机而言,则希望用户发出的逻辑可以通过MMU转换成页框号和页内偏移量,从而直接去访问真实的内存空间。

为了解决这一问题引入了虚拟内存(就是通过一张段表完成地址映射转换):简单的说就是用户发出访问程序段的逻辑地址<段号,段内偏移量>,通过对这一逻辑地址的运算将其转换为访问页的虚拟地址<页号,页内偏移量>,再由MMU将其转换为内存的物理地址<页框号,页内偏移量>。通过这种方式,用户访问的就是虚拟内存,经过两次地址映射后,变成真实的物理地址。



图一:段页式寻址原理
 
下面就以一个真实的图例展示这个过程:



图二:段页式寻址示例
从图二不难看出地址变化的过程是:

 逻辑地址<段号,偏移>  ->  虚拟地址<页号,偏移>  ->  物理地址<物理页号,偏移>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息