原文地址:第三章 内存管理——王道操作系统 – Beatless
目录
二、虚拟内存管理
虚拟内存的基本概念
1、传统存储方式的特征
(1)一次性:作业必须一次性装入内存后,才能开始运行。
导致的问题:
① 当作业很大而不能全部被装入内存时,将使该作业无法运行;
② 当大量作业要求运行时,由于内存有限,只能让少数作业运行,导致多道程序并发性下降。
(2)驻留性:作业被装入内存后,一直驻留在内存里,除非运行结束,请求IO操作会导致阻塞,可能长期处于等待状态。
2、局部性原理
(1)时间局部性(2)空间局部性
广义上来说,快表、页高速缓存及虚拟内存技术都属于高速缓存技术,而它依赖于局部性原理。
虚拟内存技术实际上建立了“内存-外存”的两级存储器结构,利用局部性原理实现高速缓存技术。
3、虚拟存储器的定义和特征
请求调页(请求调段):当想要访问的页面(段)不在内存中时,由操作系统负责将所需要的信息从外存调入内存,然后继续执行程序。
页面置换(段置换):当内存空间不够时,由操作系统负责将内存中暂时不用的信息换到外存。
部分装入:在程序装入时,仅需要将程序当前运行要用到的少数页面(段)装入内存,而将其余部分暂留在外存,便可以启动程序执行。
请求调页、页面置换和部分装入都是对用户透明的。
虚拟存储器的特征:
(1)多次性:无需在作业运行时一次性全部装入内存,而是允许被分成多次调入内存。即只需将当前运行的那部分程序和数据装入内存即可运行。
(2)对换性:作业运行过程中,将暂时不使用的程序和数据调到外存中(换出)。
(3)虚拟性:从逻辑上扩充了内存容量,使用户看到的远大于实际的内存容量。
4、虚拟内存技术的实现
若采用连续内存分配方式,会使相当一部分内存空间处于”暂时“或”永久“空闲状态,造成内存资源的严重浪费,一次虚拟内存技术的实现建立在离散分配方式之上。
实现方式:① 请求分页存储管理;② 请求分段存储管理;③ 请求段页式存储管理
不论哪种实现方式都需要一定的硬件支持:
(1)一定的内存和外存;
(2)页表或段表机制作为主要的数据结构;
(3)中断机构,当前用户程序要访问的部分尚未调入内存,产生缺页中断;
(4)地址变换机构,将CPU生成的逻辑地址映射到物理地址。
请求分页管理方式
请求分页管理方式建立在基本分页系统的基础之上,为支持虚拟存储器功能而增加了请求调页和页面置换功能,包含页表机制、缺页中断机制、地址变换机构。
1、页表机制
基本页表项:页号、物理块号。
请求分页的页表项:页号、物理块号、状态位、访问字段、修改位、外存地址。
状态位P:表示当前页面是否在内存中,若在则为1,若不在则为0。
访问字段A:表示近一段时间内该页面被访问的次数,或记录本页最近已有多长时间未被访问。
修改位M:表示当前页面在调入后是否被修改过,以决定换出时是否写回外存。
外存地址:记录该页在外存中的存放地址,通常是物理块号,供调入页面时参考。
2、缺页中断机制
在请求分页系统中,每当要访问的页面不在内存中的时候,便产生一个缺页中断,然后由OS的缺页中断处理程序处理。此时缺页的进程被阻塞,放入阻塞队列,当调页完成后唤醒并放回就绪队列。
缺页中断处理过程:
(1)若内存中由空闲块,则为进程分配一个空闲块,将缺的页面装入,并修改页表中相应的页表项。
(2)若内存中没有空闲块,则有页面置换算法选择一个页面淘汰,若该页面在内存期间被修改过&#x