3、操作系统内存管理——段页式(虚拟内存)
2017-08-12 17:50
239 查看
注:参考哈工大李治军老师公开课。本小节需要之前分段与分页为基础
对用户而言,分段是对内存的有效使用;而对于计算机而言,分页可以提高内存的使用效率。操作系统需要满足两个方面的需求,所以就采取了段页相结合的方式来管理内存。
对于用户而言,当用户发出一个逻辑地址,用户希望访问到特定程序段的内存空间,而对于计算机而言,则希望用户发出的逻辑可以通过MMU转换成页框号和页内偏移量,从而直接去访问真实的内存空间。
为了解决这一问题引入了虚拟内存(就是通过一张段表完成地址映射转换):简单的说就是用户发出访问程序段的逻辑地址<段号,段内偏移量>,通过对这一逻辑地址的运算将其转换为访问页的虚拟地址<页号,页内偏移量>,再由MMU将其转换为内存的物理地址<页框号,页内偏移量>。通过这种方式,用户访问的就是虚拟内存,经过两次地址映射后,变成真实的物理地址。
![](https://img-blog.csdn.net/20170812175319000?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaW9zdHJlYW0xMDAxMDAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图一:段页式寻址原理
下面就以一个真实的图例展示这个过程:
![](https://img-blog.csdn.net/20170812175325134?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaW9zdHJlYW0xMDAxMDAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图二:段页式寻址示例
从图二不难看出地址变化的过程是:
逻辑地址<段号,偏移> -> 虚拟地址<页号,偏移> -> 物理地址<物理页号,偏移>
对用户而言,分段是对内存的有效使用;而对于计算机而言,分页可以提高内存的使用效率。操作系统需要满足两个方面的需求,所以就采取了段页相结合的方式来管理内存。
对于用户而言,当用户发出一个逻辑地址,用户希望访问到特定程序段的内存空间,而对于计算机而言,则希望用户发出的逻辑可以通过MMU转换成页框号和页内偏移量,从而直接去访问真实的内存空间。
为了解决这一问题引入了虚拟内存(就是通过一张段表完成地址映射转换):简单的说就是用户发出访问程序段的逻辑地址<段号,段内偏移量>,通过对这一逻辑地址的运算将其转换为访问页的虚拟地址<页号,页内偏移量>,再由MMU将其转换为内存的物理地址<页框号,页内偏移量>。通过这种方式,用户访问的就是虚拟内存,经过两次地址映射后,变成真实的物理地址。
图一:段页式寻址原理
下面就以一个真实的图例展示这个过程:
图二:段页式寻址示例
从图二不难看出地址变化的过程是:
逻辑地址<段号,偏移> -> 虚拟地址<页号,偏移> -> 物理地址<物理页号,偏移>
相关文章推荐
- 操作系统--内存管理之虚拟内存的概念、特征以及虚拟内存的实现
- 操作系统 内存管理-虚拟内存
- 操作系统内存管理——分区、页式、段式管理、段页式
- 操作系统之内存管理(一)(未引入虚拟内存之前部分)
- 操作系统内存管理——分区、页式、段式、段页式管理
- 操作系统--内存学习笔记(2)进程内存管理--虚拟内存
- [操作系统概念]第六部分——内存管理(3):虚拟内存
- 段页式内存管理中的逻辑地址、线性地址、物理地址和虚拟内存
- 操作系统内存管理--简单、页式、段式、段页式
- Linux段页式管理思想--写操作系统内存管理必备知识,简单易懂
- 操作系统之内存管理(二)之虚拟内存管理(引入虚拟内存之后)
- 深入探讨操作系统的内存管理——虚拟内存与物理内存
- 操作系统内存管理--简单、页式、段式、段页式
- 轻量级操作系统FreeRTOS的内存管理机制(三)
- 操作系统的内存管理--分段与分页、虚拟地址、逻辑地址、线性地址、物理地址的区分
- 操作系统内存管理——分区、页式、段式管理
- 操作系统--虚拟内存、逻辑地址、线性地址、物理地址
- 操作系统中的虚拟内存详解
- 【转】操作系统管理内存的机制——为什么要设置虚拟内存?
- 操作系统内存管理