Skip to content

对换

目录


参考资料:


对换技术也称为交换技术,最早用于麻省理工学院的单用户分时系统 CTSS 中。由于当时计算机的内存都非常小,为了使该系统能分时运行多个用户程序而引入了对换技术。系统把所有的用户作业存放在磁盘上,每次只能调入一个作业进入内存,当该作业的一个时间片用完时,将它调至外存的后备队列上等待,再从后备队列上将另一个作业调入内存。这就是最早出现的分时系统中所用的对换技术。现在已经很少使用。

由上所述可知,要实现内、外存之间的对换,系统中必须有一台 I/O 速度较高的外存,而且其容量也必须足够大,能容纳正在分时运行的所有用户作业,目前最常使用的是大容量磁盘存储器。

1多道程序境下的对换技术

1.1 对换的引入

在多道程序环境下,一方面,在内存中的某些进程由于某事件尚未发生而被阻塞运行,但它却占用了大量的内存空间,甚至有时可能出现在内存中所有进程都被阻塞,而无可运行之进程,迫使 CPU 停止下来等待的情况;另一方面,却又有着许多作业,因内存空间不足,一直驻留在外存上,而不能进入内存运行。显然这对系统资源是一种严重的浪费,且使系统吞吐量下降。

为了解决这一问题,在系统中又增设了对换(也称交换)设施。所谓 “对换”,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据换出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据换入内存。对换是改善内存利用率的有效措施,它可以直接提高处理机的利用率和系统的吞吐量。

增加资源利用率

1.2 对换的类型

在每次对换时,都是将一定数量的程序或数据换入或换出内存。根据每次对换时所对换的数量,可将对换分为如下两类:

  • 整体对换。处理机中级调度实际上就是存储器的对换功能,其目的是用来解决内存紧张问题,并可进一步提高内存的利用率和系统的吞吐量。由于在中级调度中对换是以整个进程为单位的,故称之为“进程对换”或“整体对换”。这种对换被广泛地应用于多道程序系统中,并作为处理机中级调度。
  • 页面(分段)对换。如果对换是以进程的一个“页面”或“分段”为单位进行的,则分别称之为“页面对换”或“分段对换”,又统称为“部分对换”。这种对换方法是请求分页和请求分段式存储管理的基础,其目的是为了支持虚拟存储系统。

页面对换,在分页和分段中介绍

为了实现进程对换,系统必须能实现三方面的功能:对对换空间的管理进程的换出进程的换入

2对换空间的管理

2.1 对换空间管理的主要目标

在具有对换功能的 OS 中,通常把磁盘空间分为文件区对换区两部分。

文件区管理的主要目标

文件区占用磁盘空间的大部分,用于存放各类文件。由于通常的文件都是较长时间地驻留在外存上,对它访问的频率是较低的,故对文件区管理的主要目标是提高文件存储空间的利用率,然后才是提高对文件的访问速度。因此,对文件区空间的管理采取离散分配方式。

优先考虑空间,其次才是速度

对换空间管理的主要目标

对换空间只占用磁盘空间的小部分,用于存放从内存换出的进程。由于这些进程在对换区中驻留的时间是短暂的,而对换操作的频率却较高,故对对换空间管理的主要目标,是提高进程换入和换出的速度,然后才是提高文件存储空间的利用率。为此,对对换区空间的管理采取连续分配方式,较少考虑外存中的碎片问题。

优先考虑速度,其次才是空间

2.2 对换区空闲盘块管理中的数据结构

为了实现对对换区中的空闲盘块的管理,在系统中应配置相应的数据结构,用于记录外存对换区中的空闲盘块的使用情况。其数据结构的形式与内存在动态分区分配方式中所用数据结构相似,即同样可以用空闲分区表或空闲分区链。在空闲分区表的每个表目中,应包含两项:对换区的首址及其大小,分别用盘块号和盘块数表示。

2.3 对换空间的分配与回收

由于对换分区的分配采用的是连续分配方式,因而对换空间的分配与回收与动态分区方式时的内存分配与回收方法雷同。其分配算法可以是首次适应算法、循环首次适应算法或最佳适应算法等。

3进程的换出与换入

当内核因执行某操作而发现内存不足时,例如,当一进程由于创建子进程而需要更多的内存空间,但又无足够的内存空间等情况发生时,便调用对换进程,它的主要任务是实现进程的换出和换入。

对换操作是由特定的进程实现的

3.1 进程的换出

对换进程在实现进程换出时,是将内存中的某些进程调出至对换区,以便腾出内存空间。换出过程可分为以下两步:

(1)选择被换出的进程。对换进程在选择被换出的进程时,将检查所有驻留在内存中的进程,首先选择处于阻塞状态或睡眠状态的进程,当有多个这样的进程时,应当选择优先级最低的进程作为换出进程。在有的系统中,为了防止低优先级进程在被调入内存后很快又被换出,还需考虑进程在内存的驻留时间。如果系统中已无阻塞进程,而现在的内存空间仍不足以满足需要,便选择优先级最低的就绪进程换出。

(2)进程换出过程。应当注意,在选择换出进程后,在对进程换出时,只能换出非共享的程序和数据段,而对于那些共享的程序和数据段,只要还有进程需要它,就不能被换出。在进行换出时,应先申请对换空间,若申请成功,就启动磁盘,将该进程的程序和数据传送到磁盘的对换区上。若传送过程未出现错误,便可回收该进程所占用的内存空间,并对该进程的进程控制块和内存分配表等数据结构做相应的修改。若此时内存中还有可换出的进程,则继续执行换出过程,直到内存中再无阻塞进程为止。

3.2 进程的换入

对换进程将定时执行换入操作,它首先查看 PCB 集合中所有进程的状态,从中找出“就绪”状态但已换出的进程。当有许多这样的进程时,它将选择其中已换出到磁盘上时间最久的进程(必须大于规定时间,如 2s)作为换入进程,为它申请内存。如果申请成功,可直接将进程从外存调入内存;如果失败,则需先将内存中的某些进程换出,腾出足够的内存空间后,再将进程调入。

在对换进程成功地换入一个进程后,若还有可换入的进程,则再继续执行换入换出过程,将其余处于**“就绪且换出”**状态的进程陆续换入,直到内存中再无“就绪且换出”状态的进程为止,或者已无足够的内存来换入进程,此时对换进程才停止换入。

由于要交换一个进程需要很多的时间,因此,对于提高处理机的利用率而言,它并不是一个非常有效的解决方法。目前用得较多的对换方案是,在处理机正常运行时,并不启动对换程序。但如果发现有许多进程在运行时经常发生缺页且显现出内存紧张的情况,才启动对换程序,将一部分进程调至外存。如果发现所有进程的缺页率都已明显减少,而系统的吞吐量已下降时,则可暂停运行对换程序。

进程的换入和换出要考虑进程的缺页率和系统的吞吐量

Copyright © 2022 田园幻想乡 浙ICP备2021038778号-1