设备管理

🗨️字数统计=3.6k字 ⏳阅读时长≈12分钟

📠 设备管理


一、I/O设备的分类

1. 按使用特性分类

  • 人机交互类外部设备
  • 存储设备
  • 网络通信设备

2. 按传输速率分类

  • 低速设备

  • 中速设备

  • 高速设备

    3. 按信息交换的单位分类

  • 字符设备

  • 块设备

二、I/O管理的任务和功能

  • 设备分配。按照设备类型和相应的分配算法觉得将I/O设备分配给哪一个进程。
  • 设备处理。设备处理程序用以实现CPU和设备控制器之间的通信。
  • 缓冲管理。设置缓冲区的目的是为了缓和I/O设备与CPU速度不匹配的矛盾。缓冲管理程序负责完成缓冲区的分配、释放及有关的管理工作。
  • 设备独立性。设备独立性又称为设备无关性,是指应用程序独立于物理设备。用户在编程时要尽量避免直接使用实际设备名。若程序中使用了实际设备名,则当该设备没有连续在系统中或者该设备发生故障时,用户程序无法执行,若要运行用户程序,则需要修改程序。如果用户程序不涉及实际设备而使用逻辑设备,那么它所要求的输入输出便与物理设备无关。设备独立性可以提高用户程序的可适应性。

三、I/O控制方式

I/O控制方式即什么样的方式来控制I/O设备的数据读/写

1. 程序直接控制方式

key word : 轮询!

  • 优点:过程简单。
  • 缺点:CPU利用率相当底。由于CPU速度远远快于I/O设备,致使绝大部分时间都在测试I/O设备是否已经完成数据传输,从而造成CPU的极大浪费。

2. 中断驱动方式

引入中断机制,由于I/O设备速度很慢,因此在CPU发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器向CPU发生中断信号,CPU检测到中断信号,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断,CPU恢复等待I/O的进程的运行环境,然后继续执行。

  • 优点:有了中断硬件的支持后,CPU与I/O设备之间可以并行工作,CPU只需要收到中断后处理即可,大大提高了CPU利用率。
  • 缺点:如果每台设备每输入/输出一个数据,都要求中断CPU,这样在一次数据传送过程中的中断次数太多,从而耗费大量CPU时间。

3. DMA方式(直接存储器存取)

1
Direct Memory Access

  • 优点:设备和CPU可以并行工作,同时设备与内存的数据交换速度更快,并且不需要CPU干预。
  • 缺点:数据传送的方向、存放输入数据的内存起始地址及传送数据的长度等都由CPU控制,并且每台设备都需要一个DMA控制器,当设备增加时,多个DMA控制器的使用也不经济。

4. 通道控制方式

  • 优点:解决了I/O操作的独立性和各部件工作的并行性。不仅能实现CPU与通道的并行操作,而且通道与通道之间也能实现并行操作,各个通道上的外设也能实现并行操作,从而提高了整个系统效率。
  • 缺点:需要更多硬件(通道处理器),成本较高,常用于大型数据交互的场合。

5. 四种控制方式对比

四、I/O软件层次结构

1. 用户层软件

2. 设备独立性软件

设备独立性软件,又称设备无关性软件,与设备的硬件特性无关的功能几乎都在这一层实现。

主要实现的功能:

  • 向上层提供统一的调用接口(如 read/wirte系统调用)
  • 设备的保护(I/O设备被当作一种特殊的文件,也有相应的权限控制)
  • 差错处理
  • 设备的分配与回收
  • 数据缓冲区管理
  • 建立逻辑设备名到物理设备名之间的映射关系:根据设备类型选择调用相应的驱动程序

3. 设备驱动程序

所有与设备相关的代码全部放在设备驱动程序中,由于设备驱动程序与设备密切相关,因此应为每一类设备配置一个驱动程序。

4. 中断处理程序

中断处理是控制I/O**设备和内存与CPU之间的数据传送的主要方式**。中断与硬件相关,I/O设备的中断处理程序的代码与任何进程无关。当I/O完成时,设备便向CPU发送一个中断信号,CPU响应中断后便转入中断处理程序。

五、缓冲区管理

1. 什么是缓冲区,有啥作用

缓冲区的引入是为了缓和CPU与设备速度不匹配的矛盾,提高了设备和CPU的并行操作成都,提高了系统吞吐量和设备利用率。

2. 缓冲区分类(按照缓冲区个数)

单缓冲

当用户进程发出一个I/O请求时,操作系统便在内存中为它分配一个缓冲区。设备与处理器对缓冲区的操作是串行的。

双缓冲

可以提高处理器与设备的并行操作程度。当用户进程发出一个I/O请求时,操作系统便在内存中为它分配两个个缓冲区。数据先放入第一个缓冲区进行处理,再来的数据放入第二个缓冲区,当第一个缓冲区中的数据处理完后,若第二个缓冲区已经装满,则处理器又可以处理第二个缓冲区的数据,而输入设备又可以装填第一个缓冲区。

循环缓冲区

为了解决设备输入/输出速度与处理器处理数据速度不匹配的情况。循环缓冲包含多个大小相等的缓冲区,每个缓冲区中有一个链接指针指向下一个缓冲区,最后一个缓冲区的指针指向第一个缓冲区,这样多个缓冲区构成了一个环形。循环缓冲用于输入输出时,还需要有两个指针in和out

缓冲池

目前计算机系统中广泛使用缓冲池,缓冲池由多个缓冲区组成,其中的缓冲区可供多个进程共享,并且既能用于输入又能用于输出。缓冲池中的缓冲区按其使用状况可以形成以下三个队列:

  • 空缓冲队列;
  • 装满输入数据的缓冲队列(输入队列);
  • 装满输出数据的缓冲队列(输出队列);

除上述三个队列外,还应具有以下四种工作缓冲区:

  • 用于收容输入数据的工作缓冲区;
  • 用于提取输入数据的工作缓冲区;
  • 用于收容输出数据的工作缓冲区;
  • 用于提取输出数据的工作缓冲区;

输入进程需要输入数据时,便从空缓冲队列的队首摘下一个空缓冲区,把其作为收容输入数据的工作缓冲区,然后把数据输入其中,装满后再把它挂到输入队列队尾。

计算进程需要输入数据时,便从输入队列取得一个缓冲区作为提取输入数据的工作缓冲区,计算进程从中提取数据,数据用完后再将其挂到空缓冲队列队尾。

计算进程需要输出数据时,便从空缓冲队列的队首取得一个空缓冲区,作为收容输出数据的工作缓冲区,当其中装满输出数据后,再将其挂到输出队列队尾。

输出进程请求输出数据时,由输出进程从输出队列中取得一个装满输出数据的缓冲区,作为提取输出数据的工作缓冲区,当数据提取完后,再将其挂到空缓冲队列的末尾。

3. 高速缓存和缓冲区的区别

  • 两者存放的数据不同。高速缓存存放的是低速设备上的某些数据的备份;而缓冲区中放的则是低速设备传递给高速设备的数据,在低速设备中不一定有备份。
  • 两者的目的不同。引入高速缓存的目的是为了存放低速设备上经常要被访问到的数据的备份;而缓冲区是为了缓和高速设备和低速设备间速度不匹配的矛盾。高速设备每次都会通过缓冲区与低速设备通信,不会直接访问低速设备。

六、设备的分配与回收

设备分配时应考虑的因素

  • 设备的固有属性
  • 设备分配算法
  • 设备分配时的安全性

1. 设备的固有属性

  • 独享设备。
  • 共享设备。
  • 虚拟设备。

image.png

SPOOLing技术见下文详细介绍

2. 设备的分配算法

  • 先来先服务
  • 优先级高者优先
  • 短任务优先

3. 设备分配时的安全性

指在设备分配中应保证不发生进程的死锁。分配方式分为以下两种方式:

  • 静态分配:指用于作业开始执行前,由系统一次性分配该作业所需的所有资源。
  • 动态分配:指在进程执行过程中根据执行需要进行设备分配。在进程需要设备时申请,不需要时释放。

动态分配又分为安全分配和不安全分配。

    • 安全分配方式中,每当进程发出I/O请求后就进入阻塞状态,直到I/O完成才被唤醒。
    • 不安全分配方式中,允许进程在发出I/O请求后仍然执行,且可以继续发出I/O请求,可能 发生死锁,需要安全性检测。

4. 设备分配管理中的数据结构

设备、控制器、通道之间的关系:

设备分配管理中的数据结构如下:

  • 设备控制表(DCT)。用于记录设备的特性及I/O控制器的连接情况。
  • 设备控制器控制表(COCT)。用于反应设备控制器的使用状态和通道的连接情况等。
  • 通道控制表(CHCT)。用于反映通道的状态等。
  • 系统设备表(SDT)。整个系统只有一张系统设备表,记录了已经连接到系统中的所有物理设备的情况,每个设备占有一个表目。

5. 设备分配程序

(1)单通路I/O系统的设备分配

步骤如下:

  • 分配设备;
  • 分配设备控制器;
  • 分配通道;

在分配时,如遇到对应设备忙的情况,则将进程插入到对应的等待队列中。

(2)多通路I/O系统的设备分配

即一个设备与多个设备控制器相连,设备控制器也与多个通道相连。步骤如下:

  • 根据设备类型,检索系统设备控制表,找到第一个空闲设备,并检测分配的安全性,如安全则分配;反之,插入该类设备的等待队列;
  • 设备分配后,检索设备控制器控制表,找到第一个与已分配设备相连的空闲设备控制器,如无空闲,则返回第一步查找下一个空闲设备;
  • 设备控制器分配后,同样查找于其相连的通道,找到第一个空闲通道,如无空闲通道,则返回第二步查找下一个设备控制器。如有空闲通道,则此次设备分配成功,将相应的设备、设备控制器和通道分配给进程,并启动I/O设备传输信息。

6. 设备的回收

当进程使用完对应的I/O设备后,释放所占有的设备、设备控制器及通道,系统进行回收修改对应的数据结构,以便下次分配使用。

七、SPOOLing 假脱机技术

1. 概念

通过共享设备来虚拟独占设备,将独占设备改造成共享设备,从而提高了设备利用率和系统的效率,该技术称为假脱机(SPOOLing)技术。是低速输入输出设备与主机交换的一种技术。

其核心思想是以联机的方式得到脱机的效果,低速设备经通道和设在主机内存的缓冲存储器与高速设备相连,该高速设备通常是辅存。为了存放从低速设备上输入的信息,在内存中形成缓冲区,在高速设备上形成输入输出井,传递时信息从低速设备传入缓冲区,再传到高速设备的输入井,再从告诉设备的输出井传到缓冲区,再传到低速设备。

2. SPOOLing系统的组成

  • 输入输出井;
  • 输入缓冲区和输出缓冲区;
  • 输入进程和输出进程;

3. SPOOLing实例

将一台独享打印机改造成可供多个用户共享打印是SPOOLing技术的典型应用,具体做法为:

  • 系统对于用户的打印输出,并不真正把打印机分配给该用户进程,而是先在输出井中申请一个空闲盘块区,并将要打印的数据送入其中;

  • 然后为用户申请并填写请求打印表,将该表挂到请求打印队列上。

    若打印机空闲,输出程序从请求打印队首取表,将要打印的数据从输出井传送到内存缓冲区,再进行打印,直到打印队列为空。

4. SPOOLing技术特点

  • 提高了I/O速度;
  • 设备并没有分配给任何进程;
  • 实现了虚拟设备功能;
  • SPOOLing 除了是一种速度匹配技术外,也是一种虚拟设备技术。
分享到