📜  操作系统中的帧分配

📅  最后修改于: 2021-09-28 11:01:08             🧑  作者: Mango

操作系统的一个重要方面,虚拟内存是使用需求分页实现的。按需分页需要开发页面替换算法和帧分配算法。如果您有多个进程,则使用帧分配算法;它有助于决定分配给每个进程的帧数。

帧分配策略有各种限制:

  • 您分配的帧数不能超过可用帧的总数。
  • 至少应为每个进程分配最少数量的帧。有两个原因支持这种限制。第一个原因是,由于分配的帧数较少,页面错误率会增加,从而降低进程执行的性能。其次,应该有足够的框架来保存任何单个指令可以引用的所有不同页面。

帧分配算法——
通常用于为进程分配帧的两种算法是:

  1. 均等分配:在具有 x 个帧和 y 个进程的系统中,每个进程获得相同数量的帧,即 x/y。例如,如果系统有 48 帧和 9 个进程,则每个进程将获得 5 帧。未分配给任何进程的三个帧可以用作空闲帧缓冲池。
    • 缺点:在具有不同大小进程的系统中,给每个进程相同的帧没有多大意义。将大量帧分配给一个小进程最终会导致大量分配的未使用帧的浪费。
  2. 按比例分配:根据进程大小将帧分配给每个进程。
    对于大小为 s i的进程 p i ,分配的帧数为a i = (s i /S)*m ,其中 S 是所有进程的大小之和, m 是系统中的帧数.例如,在一个62帧的系统中,如果有一个10KB的进程和另一个127KB的进程,那么第一个进程将被分配(10/137)*62 = 4帧,另一个进程将得到(127/137 )*62 = 57 帧。
    • 优点:所有进程根据需要共享可用帧,而不是平等共享。

全局与本地分配 –
分配给进程的帧数也可以动态更改,具体取决于您是使用全局替换还是本地替换来替换页面,以防出现页面错误。

  1. 本地替换:当一个进程需要一个不在内存中的页面时,它可以引入新页面并只从它自己的一组分配的帧中为其分配一个帧。
    • 优点:特定进程的内存页面和缺页率仅受该进程的分页行为影响。
    • 缺点:低优先级进程可能会通过不向高优先级进程提供其帧来阻碍高优先级进程。
  2. 全局替换:当一个进程需要一个不在内存中的页面时,它可以引入新页面并从所有帧的集合中为其分配一个帧,即使该帧当前已分配给其他进程;也就是说,一个进程可以从另一个进程中获取一个框架。
    • 优点:不妨碍进程的性能,因此导致更大的系统吞吐量。
    • 缺点:进程的缺页率不能完全由进程本身控制。一个进程在内存中的页数也取决于其他进程的分页行为。