向勇 陈渝 李国良
2022年春季
程序规模的增长速度远远大于存储器容量的增长速度 理想中的存储器: 容量更大、速度更快、价格更便宜的非易失性存储器
主要问题:计算机系统时常出现内存不够用 基本思路:内存不够,外存来补
虚拟存储=内存+外存
在时间段内,函数或模块不会在程序执行的一条控制流上
覆盖:把一个程序划分为一系列功能相对独立的程序段,让执行时不要求同时装入内存的程序段组成一组(称为覆盖段),共享主存的同一个区域,这种内存扩充技术就是覆盖。
覆盖技术的不足
Turbo Pascal的Overlay系统单元支持程序员控制的覆盖技术
面临的问题
运行的程序:任务(也指以后进一步进化的进程)
任务
进程
局部性(locality):程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域
局部性的意义:如果大部分程序运行具有局部性特征,虚拟存储技术是能够实现的,而且可取得满意的效果
4-1. 如有空闲物理页帧,把外存中的页面内容换入到某空闲物理页帧中; 4-2 . 如无空闲物理页帧,通过置换算法释放/换出某物理页帧到外存,再把外存中的页面内容换入到某空闲物理页帧中;
在何处保存未被映射的页?如何找到这个页?
MemorySet::MapArea
有效存储访问时间(effective memory access time EAT)
EAT = 内存访问时间 * (1-p) + 缺页异常处理时间 缺页异常处理时间 = 磁盘访问时间*p(1+q)
例子:
内存访问时间: 10 ns ;磁盘访问时间: 5 ms
EAT = 10(1–p) + 5,000,000p(1+q)
计算机系统时常出现内存空间不够用 - 模块覆盖(overlay) - 应用程序**手动**把需要的指令和数据保存在内存中 - 任务交换(swapping) - 操作系统**自动**把暂时不能执行的程序保存到外存中 - 虚拟存储 - 在有限容量的内存中,以**页为单位自动**装入更多更大的程序