0%

内存管理_part2

请求分页管理方式

虚拟内存

定义:具有请求调入和置换功能,从逻辑上对内存容量加以扩充的一种存储器系统

虚拟内存的实现

  • 请求分页存储管理
  • 请求分段存储管理
  • 请求段页式存储管理

页表机制

  • 状态位P
  • 访问字段A
  • 修改位M
  • 外存地址

缺页中断机构

内中断(CPU内部)

  • 故障中断:错误条件引起可以被修复,如缺页中断

  • 陷入中断:有意为之,应用程序想调用内核功能。如系统调用

  • 终止中断:致命错误

外中断(CPU外部)

  • I/O中断请求
  • 人工干预

地址变换机构

  • 请求调页,判断是否在内存
  • 可能需要页面置换
  • 新增、修改页表项
  • 热点表项同步到快表

页面置换算法

最佳置换算法OPT

保障对低缺页率:每次选择淘汰最不可能再次被使用的页面 (无法实现)

最近最少页面置换算法LRU

保障时间和距离上的公平:每次选择淘汰最久最近未使用的页面 (需要硬件支持,开销大)

先进先出置换算法FIFO

保障顺序上的公平:每次选择淘汰最早进入内存的页面(Belady异常,性能差)

时钟置换算法

保障性能和开销均衡:为页面设置访问位(0/1),并链接形成循环队列,进程访问页面后置为1。发生缺页中断时,表针就扫描页面,位置为0就淘汰,位置为1就设置为0并向把表针向前移动一个位置。

最近未使用页面置换算法NRU:

额外考虑是否修改,保障最少I/O操作:设置访问位和修改位,访问位为优先原则。第一轮找(0,0) 第二轮找(0,1)并修改访问位为0,第三轮找(0,0),第四轮找(0,1)

页面分配策略

驻留集(驻留在主存中页面数)大小

  • 分配空间小,进程数量多,CPU时间利用效率就高

  • 进程在主存中页数少,错页率就高

  • 进程在主存中页数多,错页率并无明显改善

  • 全局页面置换算法:全局页面置换算法则是不考虑进程的个体情况,而是综合考虑整个系统内所有页面的情况。

  • 局部页面置换算法:局部页面置换算法是基于进程本身的页面访问模式的算法

固定分配局部置换:这种策略指定了每个进程在内存中占用固定数量的页面帧。当进程被加载到内存时,它会被分配一定数量的页面帧,并且在其执行期间,这些页面帧不会被其他进程使用。如果进程需要更多的内存空间,它必须等待其他进程释放内存,或者操作系统必须将某个进程的页面替换出去来为其腾出空间。这种策略可以简化内存管理,但可能导致内存浪费或资源不足的问题。

可变分配全局置换:这种策略允许进程的内存分配在运行时动态变化,而不是固定分配一定数量的页面帧。当进程需要更多内存时,操作系统可以为其分配更多页面帧,反之亦然。全局页面置换意味着页面替换决策基于整个系统的页面使用情况,不仅仅限于某个进程。这种策略可以更好地利用内存资源,但需要更复杂的管理算法来进行页面替换决策,以最大程度地提高系统性能。

可变分配局部置换:这种策略结合了前两种策略的特点。进程可以在运行时动态分配或释放内存,但页面替换决策仍然是基于进程本身的页面访问模式。这意味着每个进程可以根据需要调整内存分配,但页面替换决策仍然以进程为单位进行,以优化局部性。这种策略在某些情况下可以平衡内存使用效率和性能。

调入页面的时机

预调页策略

  • 一次性调入若干相邻页面
  • 多用于进程首次调入

请求调页

  • 运行时发现缺页时调入
  • I/O开销较大

从何处调页

外存分对换区和文件区,对换区可以保证地址是连续的,因此访问更快

系统拥有足够对换空间:

核心的放内存,辅助的放对换区

系统缺少足够对换空间:

不需要修改的一些文件比如函数计算公式不含数据,放入文件区。从内存调出时,不需要重新写入,直接覆盖就行,减少I/O操作。

优先把经常需要修改的文件放对换区,调出时的回写效率更高。

UNIX方式:

所有跟进程有关的文件,都放入文件区。 要换出都放入对换区

-------------本文结束感谢您的阅读-------------