设备管理

需了解操作系统缓冲区、设备管理和SPOOLing知识,可能在选择题中考察。

缓冲区

1. 磁盘高速缓存

磁盘缓存指的是利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。

因此,磁盘高速缓存从逻辑上属于磁盘,物理上则是驻留在内存中的盘块。

2. 缓冲区

缓冲区是一块预留在内存中的区域,用于临时存放数据,从而使得输入/输出操作与其他处理操作可以相对独立地进行。缓冲区的使用可以减少I/O操作的等待时间,提高系统的整体效率。

单缓冲

在单缓冲策略中,只有一个缓冲区用于数据的读取或写入。

工作过程:

  • 数据从源(例如,磁盘)读入到单个缓冲区。
  • 当数据在缓冲区内时,应用程序可以从该缓冲区中处理数据。
  • 当应用程序处理完缓冲区中的数据并需要更多数据时,新的数据再次被读入到同一缓冲区中。

缺点:当缓冲区被填满并且数据被应用程序处理时,I/O操作必须等待,直到缓冲区再次可用。这可能导致I/O操作的延迟。

双缓冲

双缓冲使用两个缓冲区而不是一个。当一个缓冲区被应用程序用于读取或处理数据时,另一个缓冲区可以用于并行的I/O操作。

工作过程:

  • 数据从源读入到第一个缓冲区。
  • 当第一个缓冲区的数据被应用程序处理时,第二个缓冲区可以开始并行地加载下一批数据。
  • 一旦第一个缓冲区的数据被处理完毕,应用程序可以立即切换到第二个缓冲区,而第一个缓冲区则开始加载新的数据。

优点:

由于两个缓冲区交替使用,I/O操作和数据处理可以并行进行,从而减少了等待时间,提高了效率。

工作区
缓冲区
I/O设备
输入
传送
用户进程
工作区
缓冲区
I/O设备
输入
传送
用户进程
缓冲区

循环缓冲

循环缓冲是一个固定大小的缓冲区,其特点是当达到缓冲区的尾部时,下一个位置自动“回绕”到缓冲区的开始位置。循环缓冲的主要优点是它可以无限地存储新数据,只要覆盖旧数据即可。

工作原理:

  • 循环缓冲有两个指针:一个是“写”指针,另一个是“读”指针。
  • 当新数据到来时,数据被写入“写”指针当前指向的位置,并将“写”指针向前移动。
  • 当数据需要被消费或读取时,数据从“读”指针的当前位置读出,并将“读”指针向前移动。
  • 如果“写”指针到达缓冲区的尾部并继续前进,它会回绕到缓冲区的开始位置。同样,“读"指针也会如此。

缓冲池

缓冲池是一组预先分配的缓冲区,这些缓冲区可以被系统中的多个进程或线程共享和重新使用。

工作原理:

  • 当一个进程需要一个缓冲区时,它从缓冲池中请求一个。如果可用的话,一个缓冲区会分配给该进程。
  • 一旦进程完成了对缓冲区的使用,它会将缓冲区返回到池中,使其可以被其他进程重新使用。
  • 如果缓冲池为空,进程可能需要等待,直到有其他进程释放一个缓冲区。

设备分配和回收

概述

设备分配是指根据用户的I/O请求分配所需的设备。分配的原则是充分发挥设备的使用效率,尽可能地让设备忙碌,但又避免造成死锁。

从设备的特性来看,设备常使用以下三种使用方式:

  • 独占式使用设备
  • 分时共享使用设备
  • 以SPOOLing方式使用外部设备

设备控制表

在操作系统中,为了有效管理和访问外围设备,经常使用一种数据结构叫做“设备控制表”(Device Control Table,简称DCT)。这是一个特殊的数据结构,用于存储有关连接到系统的每个设备的信息。

     设备类型type
DCT 1
DCT 2
DCT n
     设备标识符deviceid
      设备状态
      指向控制器表的指针
      重复执行次数或时间
      设备队列的队首指针
设备控制表DCT

设备分配方式

  • 静态分配:在静态分配中,设备在程序开始执行时分配,并在程序执行完毕后才释放。这意味着该设备在程序执行期间是专用的,不会被其他进程共享。
  • 动态分配:在动态分配中,设备只在需要时被分配,并在不再需要时立即释放,这使得其他进程可以在第一个进程的I/O操作之间使用该设备。

设备分配安全性

  • 安全分配:安全分配意味着操作系统在分配资源时采用一种策略,确保系统始终处于一个不会导致死锁的状态。
  • 不安全分配:不安全的分配方式并不意味着系统必然会进入死锁,但它意味着系统采取了一种策略,可能会使其进入不安全状态。

逻辑设备名到物理设备名的映射

  • 逻辑设备名:是用户和应用程序用来引用设备的友好名称或标识符。这些名字通常比物理设备名更容易记忆和使用。
  • 物理设备名:物理设备名是用来直接与硬件通信的标识符。这些名称通常更加具体,并反映了设备的实际物理特性或位置。

操作系统通过逻辑设备表(LUT,Logical Unit Table)将逻辑设备名映射到物理设备名。 当应用程序或用户尝试访问一个设备时,操作系统首先查找逻辑设备表以确定逻辑设备名与哪个物理设备相关联。然后,操作系统使用表中的信息来管理对实际物理设备的访问。

SPOOLing技术

SPOOLing(Simultaneous Peripheral Operations On-Line)技术,也被称为“假脱机”技术,是一种在计算机系统中用于管理I/O设备,尤其是打印机和磁带设备等慢速设备的方法。

SPOOLing的核心思想是将输入/输出设备从计算机主处理单元中解耦,并将其与中间存储区域(通常是硬盘)相关联,从而可以缓冲数据。SPOOLing技术实现了虚拟设备功能,可以将设备同时分配给多个进程

  1. 中间存储区:SPOOLing使用磁盘作为中间存储区,将要输出到外部设备的数据先保存到这个区域。同样地,从外部设备读取的数据也首先存放在这个中间区域。
  2. 数据独立性:由于数据首先被存储在中间区域,主计算机处理和I/O操作可以相对独立地进行。这意味着当一个文件正在被打印时,另一个文件可以同时被存储在磁盘上等待打印,从而实现了设备的高效利用。
  3. 背景处理:SPOOLing通常在后台进行,这意味着用户在提交了打印作业或其他I/O作业后可以继续执行其他任务,而SPOOLing系统会在背后管理所有的队列和设备操作。
  4. SPOOLing的应用:最常见的SPOOLing应用是在打印环境中。当用户提交一个打印任务时,数据首先被发送到磁盘上的一个打印队列。打印守护进程(或服务)会定期检查这个队列,并将任务逐一发送到打印机。这种方式允许多个用户和应用同时提交打印任务,而不需要等待其他任务完成。
  5. 优势
    • 设备利用率:SPOOLing可以提高设备的利用率,因为设备可以持续不断地工作,而不需要等待用户或计算机处理。
    • 用户响应时间:SPOOLing可以减少用户需要等待设备完成工作的时间,因为数据的读/写是在背景中进行的。