这是我参与更文挑战的第12天,活动详情查看: 更文挑战
一、虚拟存储机制
1.1 传统存储管理
特性:
-
一次性:作业必须一次性全部装入内存才能开始运行。
导致:(1)大作业无法运行;(2)大量作业要求运行时,程序并发度下降
-
驻留性:一旦作业被装入内存,就会一直驻留在内存中,直至作业运行结束。事实上,在一段时间内只需访问作业的一小部分数据即可正常运行。
高速缓冲技术
思想:将近期会频繁访问到的数据存放到更高的存储器中,暂时用不到的数据放在更低速的存储器中。
1.2 虚拟内存的运行
-
基于局部性原理,在程序装入时,可以将程序中很快会用到的部分装入内存,暂时用不到的部分留在外存,就可以让程序开始执行。
在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。
若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存。
-
在操作系统的管理下,在用户看来似乎有一个比实际内存大得多的内存,这就是虚拟内存
-
虚拟内存是操作系统虚拟性的一个体现,实际的物理内存大小没有变,只是在逻辑上进行了扩充。
-
虚拟内存最大容量是由计算机的地址结构(cpu寻址范围)确定的
1.3 虚拟存储器的特征
-
多次性
无需在作业运行是全部装入内存,而是允许被多次调入内存
-
对换性
在作业运行时无需常驻内存,而是允许在作业运行过程中,将作业换入、换出
-
虚拟性
在逻辑上扩充了内存的容量,是用户看到的内存容量远大于实际容量
1.4 虚拟存储器的实现方法
-
分页请求系统
(1)请求分页的页表机制
(2)缺页中断机构
(3)地址变换机构
-
请求分段系统
(1)请求分段的段表机制
(2)缺页中断机构
(3)地址变换机构
1.5 页面置换算法
-
最佳置换算法
-
先进先出置换算法(FIFO)
-
最近最久未使用置换算法(LRU)
-
最少使用置换算法(LFU)
-
Clock置换算法以及改进型Clock置换算法
1类(A=0,M=0):表示该页最近既未被访问,又未被修改,是最佳淘汰页。 2类(A=0,M=0):表示该页最近未被访问,但已被修改,并不是很好的淘汰页。 3类(A=1,M=0):表示该页最近已被访问,但未被修改,该页有可能在被访问。 4类(A=1,M=1):表示该页最近已被访问且被修改,该页可能再被访问。
1.6 抖动和工作集
- 抖动原因:运行的进程太多,分配给每一个进程的物理块太少,频繁的出现缺页。不断的换进换出
- 工作集:某段时间间隔里,进程实际所要访问页面的集合。
二、分段管理和分页管理
共同点
- 两者都采用离散分配方式
- 都要通过地址映射机构来实现地址变换
不同点
-
页是信息的物理单位,用户透明,长度固定,分页是由于系统管理的需要而不是用户的需要。
段是信息的逻辑单位,用户课件,长度可变,为了能更好地满足用户的需要
-
页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分。
段的长度却不固定,决定于用户所编写的程序,通常由编译程序根据信息的性质来划分。
-
分页的作业地址空间是一维的,即单一的线性地址空间,程序员只需利用一个记忆符,即可表示一个地址。
分段的作业地址空间则是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。