操作系统笔记(十一)虚拟内存

  • 虚拟内存
  1. 概念:区别逻辑内存和物理内存,对于进程而言,逻辑内存式无限大的连续空间。
  2. 理论依据:对于一个进程而言,实际执行的存储空间很小。
  3. 实现:demand paging 和 demand segmentation。
  • demand paging
  1. 本质:按需加载页。lazzy swapper。
  2. 优势:更少的I/O,更少的内存需求,更快的响应,更多进程。
  3. 实现
    • 如何判断是否在内存里:valid(legal + in memory)invalid(illegal or legal + not in memory)。
    • 如何处理illegal的情况:page fault 到内核 ; 查看internal table(PCB)得到page fault serivice routine判断(illegal:终止程序,legal + not in:加载到内核)。
  4. 如何处理物理内存满的情况:page replacement,使得小的物理内存可以实现大的虚拟内存。注意swap out之后和swap in之后都修改了PTE 。
    1. (一种优化:设置脏位,按需swap out)
    • 操作系统笔记(十一)虚拟内存
  5. 页面置换算法
    • FIFO 先进先出
    • 最优置换:未来最少使用的页。很难实现。
    • LRU:最近最少使用。上述的近似,需要硬件记录页的最近使用时间。
    • second-chance:硬件提供R(A) 位标记是否最近被使用。0则置换,否则清0给second-chance
  • 虚拟内存的原理
  1. 局部性原理:进程从一个局部转移到另一个局部。缓存的原理。
  2. 抖动:系统频繁的置换page。 -》 cpu利用率低 -》长期调度提高并发性 -》更多进程加载 -》更严重的page fault。原因sum( sizeof(locality) ) > sizeof(physical memory)
  3. working set model: 近似地衡量locality。统计working set window期间的应用页(working set),作为locality。根据working set 决定进程占用的frame数目。

相关推荐