操作系统中的非连续分配详细指南

2021年3月20日16:04:23 发表评论 1,086 次浏览

前提条件—可变分区、固定分区

分页和分段是允许进程的物理地址空间是非连续的两种方式。它具有减少内存浪费的优点,但是由于地址转换,它增加了开销。它减慢了内存的执行,因为地址转换消耗了时间。

非连续分配中, 操作系统需要维护被称为页表对于每个进程, 其中包含该进程在内存空间中获取的每个块的基地址。在非连续内存分配中, 进程的不同部分在主内存中分配了不同的位置。允许跨越, 这在其他技术(如动态或静态连续内存分配)中是不可能的。这就是为什么需要分页以确保有效分配内存的原因。进行分页以除去外部碎片。

工作:

在这里, 进程可以非连续方式跨越主内存中的不同空间。假定大小为4KB的进程P。考虑主存储器有两个空插槽, 每个空插槽的大小为2KB。因此, 总可用空间为2 * 2 = 4 KB。在连续内存分配中, 由于不允许跨越, 因此无法容纳进程P。

在连续分配中, 应将内存中的空间分配给整个进程。如果没有, 则该空间将保持未分配状态。但是在非连续分配中, 进程可以划分为不同的部分, 从而填充主内存中的空间。在此示例中, 进程P可以分为大小相等的两个部分– 2KB。因此, 可以将过程P的一部分分配给主存储器的第一个2KB空间, 而将过程P的另一部分分配给主存储器的第二个2KB空间。下图将以更好的方式进行说明:

操作系统中的非连续分配1

但是, 了解以什么方式划分将它们分配到主内存的过程非常重要。在分析了空白空间的数量及其在主内存中的大小之后, 对进程进行划分。然后只有我们分开我们的过程。这是非常耗时的过程。由于执行主内存中已经存在的进程, 它们的数量及其大小每次都会更改。

为了避免此耗时的过程, 我们在到达执行主内存之前, 先将进程划分为辅助内存。每个进程都分为大小相等的各个部分, 称为页面。我们还将主内存划分为大小相等的不同部分, 称为"框架"。重要的是要了解:

Size of page in process 
= Size of frame in memory

尽管它们的数量可以不同。下图将使你更好地理解:考虑空的主存储器, 每帧大小为2 KB, 两个进程P1和P2分别为2 KB。

操作系统中的非连续分配2

解决主内存,

操作系统中的非连续分配3

总而言之, 我们可以说, 分页允许进程的内存地址空间不连续。分页更加灵活, 因为仅移动进程的页面。与连续内存分配相比, 它允许更多的进程驻留在主内存中。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: