存储层次结构
理想中的存储器:容量更大,速度更快,价格更便宜的非易失性存储器
实际中的存储器:
访问时间 | 存储器层次结构 | 容量 |
---|---|---|
1纳秒 | 寄存器 | <1KB |
2纳秒 | 高速缓存 | 1MB |
10纳秒 | 内存 | 64-512MB |
10毫秒 | 磁盘 | 5-50GB |
100秒 | 磁带 | 20-100GB |
覆盖技术
目标:在较小的可用内存中运行较大的程序
方法:依据程序逻辑结构,将程序划分为若干功能相对独立的模块,将不会同时执行的模块共享同一块内存区域
- 1.必要部分(常用功能)的代码和数据常驻内存
- 2.可选部分(不常用功能)放在其他程序模块中,只在需要用到时装入内存
- 3.不存在调用关系的模块可相互覆盖,共用同一块内存区域
交换技术
目标:增加正在运行或需要运行的程序的内存
实现方法:可将暂时不能运行的程序放到外存中
- 换入换出的基本单位:整个进程的地址空间
- 换出:把一个进程的整个地址空间保存到外存
- 换入:把外存中某进程的地址空间读入到内存
局部性原理
程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址分别局限于一定区域
- 时间局部性
- 空间局部性
- 分支局部性
虚拟存储的基本概念
思想:将不常用的部分内存块暂存到外存
原理:
- 1.装载程序时:只将当前指令执行需要的部分页面或段装入内存
- 2.指令执行中需要的指令或数据不在内存(称为缺页或缺段)时:处理器通知操作系统将相应的页面或段调入内存
- 3.操作系统将内存中暂时不用的页面或段保存到外存
实现方式
主要用两种方法:虚拟页式存储和虚拟段式存储
虚拟页式存储中页表项结构
逻辑页号 | 访问位 | 修改位 | 保护位 | 驻留位 | 物理页帧号 |
---|---|---|---|---|---|
i |
驻留位:表示该页是否在内存
修改位:表示在内存中的该页是否被修改过
访问位:表示该页面是否被访问过(读或写)
保护位:表示该页的允许访问方式(只读,可读写,可执行等)
缺页异常(缺页中断)的处理流程
A.在内存中有空闲物理页面时,分配一物理页帧f,转至第E步
B.根据页面置换算法选择将被替换的物理页帧f,对应逻辑页q
C.如q被修改过,则把它写回外存
D.修改q的页表项中驻留位置为0
E.将需要访问的页P装入到物理页面f
F.修改P的页表项驻留位为1,物理页帧号为f
G:重新执行产生缺页的指令
虚拟页式存储管理的性能
有效存储访问时间
EAT=访存时间×(1-p)+缺页异常处理时间×缺页率p
例子:访存时间:10ns,磁盘访问时间:5ms,缺页率p,页修改概率q
EAT=10×(1-p)+5000000p(1+q)
置换算法的功能和目标
功能:当出现缺页异常,需调入新页面而内存已满时,置换算法选择被置换的物理页面
设计目标:
- 尽可能减少页面的调入调出次数
- 把未来不再访问或短期内不访问的页面调出
页面锁定(frame locking)
1.描述必须常驻内存的逻辑页面
2.操作系统的关键部分
3.要求响应速度的代码和数据
4.页表中的锁定标志位(lockbit)
记录进程访问内存的页面轨迹
举例:虚拟地址访问用(页号,位移)表示
(3,0),(1,9),(4,1),(2,1),(5,3),(2,0),(1,9),(2,4),(3,1),(4,8)
对应的页面轨迹
3,1,4,2,5,2,1,2,3,4
替换如c,a,d,b,e,b,a,b,c,d
评价方法:模拟页面置换行为,记录产生缺页的次数
置换算法
- 局部页面置换算法:置换页面的选择范围仅限于当前进程占用的物理页面内;最优算法,先进先出算法,最近最久未使用算法,时钟算法,最不常用算法
- 全局页面置换算法:置换页面的选择方位是所有可换出的物理页面;工作集算法,缺页率算法