笔记 操作系统 虚拟内存管理技术

1 虚拟内存
https://blog.csdn.net/iwanderu/article/details/103946338
1.1 虚拟内存的起因

我们只有有限的物理内存空间,但是如果我们再跑一个很大的应用程序,比如说3D游戏,可能会出现内存不够用的情况。那么我们为了能够让游戏顺利的进行,就需要利用起外存(磁盘)。我们把当前正在执行的东西放到内存里面进行执行,当前不需要执行的东西放到外存里面。早期的时候会使用覆盖技术(DOS系统),由程序员自己区分,内存与外存存储的东西;,继而发展到自动交换技术,操作系统介入这一事情的处理;最后发展到虚拟内存技术。

1.2 覆盖技术是怎么样工作的

覆盖技术主要是指程序员通过对程序的精心设计,对于不同走向的程序,分时段的加载到内存里来。这极大地增大了程序员的工作量和编程的复杂度,这是一种以执行时间来换取空间节省的方案。
在这里插入图片描述

1.3 交换技术如何工作

操作系统介入这一事情中来。多道程序在内存中时,让正在运行的程序或需要运行的程序获得更多的内存资源。操作系统会将暂时不能运行的程序送到外存,从而获得空闲内存空间。何时交换、交换区大小、交换回来地址变化需要映射表维护。交换的是全部程序代码。

1.4 虚拟内存

虚拟内存管理技术在硬件上是基于操作系统和MMU这类分页或分段寻址技术之上的。虚拟内存管理技术是兼具覆盖技术和交换技术的优点,主体特征是在内存里存放常用的程序,在硬盘里存放不常用的程序,在硬盘需要执行的时候又能够进行自动交换(交换的是部分)。在软件上的原理是基于程序的局部性原理。
将当前需要执行的代码段儿放入内存中,在CPU检测到指令需要其他的代码段的时候,操作系统再将硬盘里的代码段放到内存中。这里面有一个事情值得注意的是如果操作系统检查内存里面还有空间,那么会将硬盘里的代码段直接放入到内存里面,但是如果内存里面此时没有空间,操作系统需要做更多的考虑,将内存中已有的程序,但是并不那么紧要的程序交换到硬盘里面,然后再将需要执行的代码段放到这段空闲的内存里。

程序的局部性原理是指?

程序的局部性原理是指程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址分别局限于同一个区域,这可以表现为时间局部性和空间局部性。时间局部性是指指令和指令之间的较短的周期,空间局部县市之相邻的几条指令所访问的几个数据都集中在较小的一个区域内。
利用程序的局部性原理有助于我们写出更加高效的代码。
在这里插入图片描述

32位系统的虚拟内存空间最大容量

pow(2,32)/1024/1024/1024 =X个地址*8bit=4G
注意由于系统本身内存消耗,我们可用的也就3.2G左右。

具体的虚拟内存技术是如何工作的?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页