📜  操作系统中的交换空间管理

📅  最后修改于: 2021-08-24 16:33:14             🧑  作者: Mango

交换是一种内存管理技术,用于多程序设计中,以增加共享CPU的进程数。它是一种从主存储器中删除进程并将其存储到辅助存储器中,然后将其带回到主存储器中以继续执行的技术。将进程从主内存移出到辅助内存的动作称为“换出”,将进程从辅助内存移出到主内存的动作称为“换入”

交换空间
磁盘上存储换出的进程的区域称为交换空间。

交换空间管理
交换管理是操作系统的另一个低级任务。磁盘空间被虚拟内存用作主内存的扩展。我们知道磁盘访问比内存访问要慢得多的事实,在交换空间管理中,我们正在使用磁盘空间,因此它将大大降低系统性能。基本上,在我们所有的系统中,我们都需要最佳的吞吐量,因此此交换空间实现的目标是为虚拟内存提供最佳的吞吐量。在这些文章中,我们将讨论如何使用交换空间,交换空间在磁盘上的位置以及如何管理交换空间。

交换空间使用
不同操作系统以各种方式使用交换空间。正在实现交换的系统可以使用交换空间来保存整个过程,该过程可能包括图像,代码和数据段。分页系统可以简单地存储已从主存储器中推出的页面。系统上交换空间的需求可能从兆字节到千兆字节不等,但是这还取决于物理内存的数量,它支持的虚拟内存以及使用虚拟内存的方式。

高估比低估所需交换空间的数量更安全,因为如果系统用尽交换空间,则可能会被迫中止进程或完全崩溃。高估会浪费本来可以用于文件的磁盘空间,但不会损害其他磁盘空间。

下表显示了不同系统使用的交换空间量:

图–使用交换空间量的不同系统

上表说明
Solaris,将交换空间设置为等于虚拟内存超出可分页物理内存的数量。过去,Linux建议将交换空间设置为使物理内存量增加一倍。如今,这种限制已经消失了,大多数Linux系统使用的交换空间大大减少。

包括Linux,一些操作系统;允许使用多个交换空间,包括文件和专用交换分区。交换空间位于磁盘上,因此分页和交换在I / O上的负载将分散在系统带宽上。

交换空间位置

图–交换空间的位置

交换空间可以位于两个位置之一中–

  1. 普通文件系统
  2. 单独的磁盘分区

如果交换空间只是文件系统中的一个大文件,则让我们来考虑。要创建它,命名它并分配它的空间,可以使用普通的文件系统例程。这种方法易于实施,效率很低。浏览目录结构和磁盘分配数据结构需要时间和额外的磁盘访问。在读取或写入过程映像期间,外部碎片可以通过强制多次查找来大大增加交换时间。

还有一个替代方案可以在单独的原始分区中创建交换空间。该位置不存在任何文件系统。而是,交换空间存储管理器用于分配和取消分配块。从原始分区。它使用算法来提高速度而不是提高存储效率,因为我们知道交换空间的访问时间比文件系统短。这样,内部碎片会增加,但可以接受,因为交换空间的寿命比文件系统中的文件短。原始分区方法在磁盘分区的情况下会创建固定数量的交换空间。

某些操作系统很灵活,可以在原始分区和文件系统空间中交换,例如: Linux

交换空间管理:一个示例
传统的UNIX内核从交换的实现开始,该交换在相邻磁盘区域和内存之间复制了整个过程。随着分页硬件的可用,UNIX后来演变为交换和分页的结合。在Solaris中,设计人员更改了标准UNIX方法以提高效率。为了提高效率,在更高版本的Solaris中进行了更多更改。

Linux几乎类似于Solaris系统。在这两个系统中,交换空间仅用于匿名内存,这种内存没有任何文件支持。在Linux系统中,允许建立一个或多个交换区域。交换区域可以位于常规文件系统上的交换文件中,也可以位于专用文件分区中。

图–在Linux系统上交换的数据结构

每个交换区域均由4 KB页面插槽组成,用于容纳交换页面。与每个交换区相关联的是交换映射-整数计数器的数组,每个整数计数器对应于交换区中的页槽。如果计数器的值为0,则表示页面槽已被交换的页面占用。 counter的值指示到交换页面的映射数。例如,值3表示交换的页面已映射到3个不同的进程。