硬件和控制结构
常驻集: 一个进程运行时只需要部分在内存中.
需要其它部分时,中断进程,读入需要的页和段.
在内存中保留更多的进程
进程可以比比内存的全部还大
系统抖动:cpu大部分时间用于数据交换而非指令运行
推测将来可能用到的页
分页
页表/多极页表:页表部分位于内存中,因此也需要页框,服从内存管理
倒排页表
TLB转换检测缓冲区:包含最近使用过的页表项
页尺寸:太小以为更大的页表;太大成为了固定分区。可以使用多种尺寸。
页尺寸影响缺页中断发生概率
分段
大小不等,动态。--〉 可以简化对不断增长的数据结构的处理等。
有助于实现保护和共享机制。因为基址寄存器和界限寄存器。
段页式
用户地址空间被划分为多个段,每个段又被分为多个页。
每个段使用一个页表
OS软件
原则:尽量减少缺页中断。因为缺页中断带来大量开销。(如IO)
措施
读取策略:确定一页何时读入内存
请求分页:用时在取
预先分页:一次读取多个连续页
放置策略。由于逻辑地址,所以放哪都一样。
置换策略:换出哪一页
目的:换出最近最不可能用到的页---据局部性原理
页框锁定:被锁定的页框无法置换
各种方法
最佳(无法实现,作为衡量标准): 选择下次访问距当前最远的页。
LRU最近最少使用:换掉上次使用距当前最远的页
先进先出:循环队列(效果差)
时钟策略:在FIFO的基础上给每个页框关联一个“使用位”
页缓冲
被置换出的页分配到空闲页链表和修改页链表
被置换的页仍在内存中。
如:在内存中开辟一个缓冲区,暂时存放被置换的页。
驻留集管理
分配策略
固定分配策略:给每个进程初始分配固定数量页框
缺页中断时,只能置换资金及的页
可变分配策略:允许一个进程的页框数在其lifetime中变化
OS需要评估该进程的行为
置换范围
局部:只能换自己的
全局:非加锁的都能换。实现简单,开销小
3种组合
固定局部:缺页率高(分配框数多)或进程数少(分配框数少)。
可变全局:难点:置换的选择。解决:使用页缓冲。
可变,局部
:不时地评估进程的页框分配情况,增加或减少其页框数。
评估策略:关键在于确定其驻留集大小的原则和驻留集大小变化的时间安排
工作集策略:时间通过内存访问来衡量
W(t,derta):表示该进程在过去个derta个虚拟时间单位中“被访问到的页的集合”
工作集指导驻留集
通过监视缺页率来指导。如缺页中断频率算法
清除策略:确定何时将一个被修改过的页写回辅存。
请求式清除:被置换时写回。
预约式清除:多个页在需要被置换时成匹写回。
这两种策略单独使用都不好。最好结合页缓冲使用。
加载控制:影响系统并发度:影响内存中驻留的进程数目
工作集或PFF; L=S准则。
一种全局策略。根据时钟算法的指针扫描速度反映系统当前的并发度的好坏。