操作系统-内存管理-内存与外存的对换(swapping)

操作系统-内存管理-内存与外存的对换(swapping)


1.对换的引入

多道程序环境下,可能会有如下两个问题:

  1. 内存中的某些进程可能被阻塞(由于等待I/O或其他原因),但是该进程占用了大量的内存空间,甚至会发生内存中所有的进程都被阻塞的情况。
  2. 在上述情况下,还有些作业在外存上等待调入内存,但因内存空间已被那些阻塞的进程占用所以这些在外存上等待的作业无法被调入内存执行。

上诉两个问题会导致系统资源被严重浪费,且系统吞吐量(单位时间内完成的工作量)会下降。为了解决这个问题,引入了对换(swapping)。

2.概念

对换是指将内存中暂时还不能被运行的进程或者暂时用不到的程序和数据,调到外存上(在linux中,有个/swap分区专门用户对换),以便腾出足够的内存供在外存中等待的作业使用。

3.对换分类

按照进行对换的单位,可以将对换分为如下三类:

  1. 进程对换(整体对换):以进程为单位进行对换。
  2. 页面对换(部分对换):以页面为单位进行对换。
  3. 分段对换(部分对换):以分段为单位进行对换。

整体对换主要用于分时系统,而部分对换的主要目的是为了支持虚拟存储系统

4.进程对换

为了实现进程对换,要操作系统要实现的三大功能:

  1. 对换空间的管理
  2. 进程的换出
  3. 进程的换入

4.1.对换空间(外存的磁盘空间)的管理

具有对换功能的操作系统通常将外存分为文件区对换区
文件区用于存放文件,对换区存放从内存中换出的进程。
文件区的侧重点是外存空间利用率,为了提高文件区的外存空间利用率,文件区采用离散分配方式
对换区的侧重点是换入换出速度,为了提高对换区的换入换出速度,对换区采用连续分配方式
为了对换区中的空闲磁盘分区进行管理,可以采用类似于动态分区分配中采用的空闲分区表/链。
至于对换区中的空闲磁盘分区的分配算法也可以借鉴动态分区分配算法。

4.2进程的换出

(1)选择处于阻塞状态下并且优先级最低的进程作为换出进程
(2)启动磁盘
(3)将该进程的程序和数据传送到磁盘

4.2进程的换入

(1)操作系统定时的查看所有进程的状态
(2)找出处于就绪状态的进程
(3)找出换出时间最长的进程作为换入进程
(4)将该进程换入内存

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