【OS】虚存管理

文章目录

  • 实存管理の特点.
  • 虚拟存储器.
  • 请求分页存储管理方式.
    • 请求页表.
  • 缺页中断.
    • 缺页中断处理过程.
    • 完整流程.
  • 页框分配算法.
  • 页面置换算法.
  • 有效访问时间EAT.
  • 抖动.
  • 工作集模型.

实存管理の特点.

  • 作业必须一次性、完整地装入内存中才能开始运行;
  • 作业运行的过程中,整个作业都必须一直驻留在内存。

虚拟存储器.

  • 是一种具有请求调入置换功能的存储器系统,能够从逻辑上对内存容量加以扩充。
  • 实现了逻辑内存和物理内存的分离;
  • 执行程序只有部分装入内存;
  • 使得逻辑地址空间远大于物理地址空间。
  • 【特征】离散、多次、虚拟、对换

请求分页存储管理方式.

  • 在分页系统的基础上增加了请求调页页面置换功能。
  • 整个用户程序并没有全部装入内存,只装入少量页面即可开始运行;运行过程中由调页程序根据程序运行的需要将单个页面从磁盘调入内存,相应地,内存中需要有页面被置换出(如果已满的话)。

请求页表.

  • 在实存管理部分,我们说过分页系统中的页表的结构,其中表项包括页号和帧号,请求分页存储管理中也有类似的结构——请求页表。请求页表中除了页号和帧号以外,还包括其他的属性:
  • 【状态位P】指示该页是否已被调入内存;
  • 【访问字段A】用于记录该页在一段时间内被访问的次数,或记录该页已有多长时间未被访问,以供置换算法在选择置换页面时参考;
  • 【脏位M】指示该页被调入内存后是否被修改过;
  • 【外存地址】该页在外存上的地址,一般指物理块号。
页号 帧号 状态位P 访问字段A 脏位M 外存地址
—— —— —— —— —— ——
  • 请求分页存储管理的核心算法在于页框分配页面置换

缺页中断.

  • 如果进程试图访问一个尚未调入内存的页面,系统会发现该页面的状态位被设定为无效,从而产生一个缺页中断

缺页中断处理过程.

  • ①检查这个进程的内部表,确定该进程对于此页面的访问是否合法(进程A不应该去访问进程B的某个页面);
  • ②若为非法访问,终止进程;合法访问则启动调页过程;
  • ③寻找一个内存中的空闲帧;
  • ④调度磁盘操作,将缺失的页装入空闲帧;
  • ⑤重启因缺页而中断执行的指令。

完整流程.

【OS】虚存管理_第1张图片

页框分配算法.

  • 一个进程的可用页框关系到其执行效率,总是发生缺页中断是一件开销很大的事情。
  • 常见的页框分配算法有平均分配、按比例分配以及基于优先级分配。
  • 【平均分配】一视同仁、众生平等。
  • 【按比例分配】基于进程大小按比例分配页框。
  • 【基于优先级分配】基于进程的优先级按比例分配页框。
  • 当一个进程发生缺页中断时,优先级分配方法可以提供一直选择牺牲页的思路:①选择自己的页进行置换;②选择优先级更低的进程的页进行置换。

页面置换算法.

  • 这钵是蒸滴菜

有效访问时间EAT.

  • 对于大多数计算机系统而言,内存访问时间 m a ma ma 约为10~200ns。在实存管理部分,我们提到过分页系统中引入快表TLB的作用,一定程度上能够降低有效访问时间。但当发生缺页错误时,就需要进行缺页中断处理,包括判断合法性、寻找空闲帧、磁盘寻页等操作。
  • 如果我们记缺页率为 ρ ρ ρ,那么有效访问时间 E A T = m a ( 1 − ρ ) + ρ ∗ T f EAT=ma(1-ρ)+ρ*T_f EAT=ma(1ρ)+ρTf,其中 T f T_f Tf是发生缺页错误的处理时间。

抖动.

  • 抖动是页面在内存和辅存之间频繁交换的现象,进程的调页时间大于其执行时间。
  • CPU调度程序发现CPU利用率降低,进而选择增加多道程度。新进程试图从其他运行进程中获得帧来启动自己,导致更多的缺页错误和更长的调页设备队列。这导致CPU利用率进一步下降,恶性循环使得CPU调度程序再次选择增加多道程度。这样就导致了抖动,系统吞吐量陡降,缺页错误率显著增加。
  • 可以通过降低多道程度来提高CPU利用率,从而减少抖动。如果一个进程开始抖动,可以采用局部置换算法,使其无法从另一个进程处获得帧,阻止这个进程导致其余进程抖动。这个抖动的进程大多数时间会排队等待调页设备。由于此时调页设备队列的平均等待时间较长,缺页错误的平均等待时间也会增加。因此,对于不抖动的进程,有效访问时间也会增加。

工作集模型.

  • 工作集定义为一个进程在某段时间内实际访问的页的集合。
  • 一个进程在时间区间[ t − Δ , t t-Δ,t tΔ,t]内访问的页的工作集记为 W S ( t , Δ ) WS(t,Δ) WS(t,Δ),这个集合的基(或者叫势,离散数学概念)就是整个工作集中包含的页面数。
  • 注意Δ是一个重要的参数,过大的Δ会导致工作集几乎包含整个作业地址空间,虚拟内存的意义也就不再了;过小的Δ又会导致频繁缺页。
  • 我们记 D = Σ i ( W S i ) D=Σ_i(WS_i) D=Σi(WSi),代表此时所有进程总的页框需求量,系统此时可用的页框数为m,发现D>m时就说明抖动已经存在了,需要挂起一些进程进行缓解。

你可能感兴趣的:(OS,操作系统)