内存
# 虚拟内存
# 页面置换算法
- 最佳置换算法(OPT)
每次淘汰的页面永远不被使用 或者最晚被访问 性能:最好,无法实现
- 先入先出(FIFO)
先换入的先换出 性能:时间简单,性能差,可能会出现Belady异常
- 最近最久未使用(LRU)
每次淘汰上一次访问时间最早的 性能:好,实现困难,开销大?,需要硬件支持
- 时钟置换算法(NRU)(改进)(不改进则是没有修改位)
每次访问会将页面的访问位置1 每次淘汰,会将1置0,0被淘汰换出 被修改的才会写入外存 实现: 修改位 访问位 循环链表 性能:
优先级 未被访问 未被修改
未被访问 被修改
被访问 未被修改
被访问 被修改
1
2
3
4
2
3
4
# 进程
驻留集(请求分页系统为进程分配的物理块的集合) 如果有虚拟内存一般要小于进程的总大小
过小的坏处,频繁缺页
过大的坏处,资源利用率低,多道程序并发度(进程数)下降
工作集 在一个时间段内实际访问页面的集合,还有窗口来进行判定 工作集越大则局限性不行,工作集越小则局部性越好
驻留级分配方案 固定分配 : 驻留级大小不变,分配时决定
可变分配 : 驻留级大小变化,运行时决定
局部置换 : 缺页置换只发生在当前进程
全局置换 : 一个进程的缺页置换可以替换其他进程的页
页面换入时机 预调页策略
根据局部性原理 一次调入若干相邻的页,命中率50% 一般只在进入进程使用,由程序员指定请求调页策略
一次一页,不缺不调页 IO开销大如何调入内存
内存+兑换区充足:从(磁盘)兑换区调入内存
内存+兑换区不重组:不被修改的调入内存,需要时再从文件区调入,被修改的则写入兑换区
unix:一次性从文件区调入,使用过的页面则被写入兑换区
问题
- 抖动的原因 内存不够,刚换入就要换出
编辑 (opens new window)
上次更新: 2024/04/16, 00:35:21