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

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/iostream1001001/article/details/77124768

注:参考哈工大李治军老师公开课。本小节需要之前分段分页为基础


 

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

 

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

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

图一:段页式寻址原理

 

下面就以一个真实的图例展示这个过程:


图二:段页式寻址示例

从图二不难看出地址变化的过程是:

 逻辑地址<段号,偏移>  ->  虚拟地址<页号,偏移>  ->  物理地址<物理页号,偏移>

没有更多推荐了,返回首页