操作系统复习05-设备管理

设备管理的功能:
+ 外围设备中断处理
+ 缓冲区管理
+ 外围设备的分配和去配     
+ 外围设备驱动调度
+ 虚拟设备及其实现

I/O硬件原理

操作系统复习05-设备管理

IO系统

I/O系统是I/O设备及其接口线路、控制部件、通道和管理软件的总称。 I/O就是“输入/输出”(Input/Output)

I/O设备

I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。

I/O设备按使用特性分类:
+ 人机交互类外设:鼠标、键盘、打印机等——用于人机交互,数据传输速度慢。
+ 存储设备:移动硬盘、光盘等——用于数据存储,数据传输速度快。
+ 网络通信设备:调制解调器等——用于网络通信,数据传输速度介于上述二者之间。

I/O设备按信息交换的单位分类:
+ 块设备:如磁盘等——数据传输的基本单位是“块”,传输速率较高,可寻址,即对它可随机地读/写任一块。
+ 字符设备:鼠标、键盘等——数据传输的基本单位是字符,传输速率较慢,不可寻址,在输入/输出时常采用中断驱动方式

设备控制器

CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件(称设备控制器或适配器)作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制

如果没有控制器,复杂操作必须由操作系统来解决,引入控制器后,通过传递简单参数就可进行I/O操作,大大简化系统的设计,有利于计算机系统对各类控制器和设备的兼容性

主要功能:
1. 接收和识别CPU或通道发来的命令:如CPU发来的read/write命令,I/O控制器中会有相应的控制寄存器来存放命令和参数
2. 实现数据交换,包括设备和控制器间的数据传输:I/O控制器中会设置相应的数据寄存器。输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备。输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据。
3. 发现和记录设备及自身的状态信息,供CPU处理:I/O控制器中会有相应的状态寄存器,用于记录I/O设备的当前状态。如:1表示空闲,0表示忙碌。
4. 设备地址识别:类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设置一个特定的“地址”。I/O控制器通过CPU提供的“地址”来判断CPU要读/写的是哪个寄存器

它是一个可编址设备,当它连接多台设备时,则应具有多个设备地址。

I/O控制方式

轮询方式

又称程序直接控制方式,使用查询指令测试设备控制器的忙闲状态位,决定内存和设备是否能交换数据。

操作系统复习05-设备管理

轮询程序中用到的三种指令:
1. 查询指令:查询设备是否就绪
2. 读/写指令:当设备就绪时,执行数据交换
3. 转移指令:当设备未就绪时,执行转移指令转向查询指令继续查询。

特点:
+ CPU干预的频率很频繁,I/O操作开始之前、完成之后需要CPU介入,并且在等待I/O完成的过程中CPU需要不断地轮询检查。
+ 每次读写一个字
+ 需要CPU的帮助

缺点:
CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于“忙等”状态,CPU利用率低。

中断方式

中断方式要求CPU与设备控制器及设备之间有中断请求线,控制器的状态寄存器有相应中断允许位

在CPU发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待I/O的进程(或其他进程)的运行环境,然后继续执行

操作系统复习05-设备管理

注意:
1. CPU会在每个指令周期的末尾检查中断
2. 中断处理过程中需要保存、恢复进程的运行环境,这个过程是需要一定时间开销的。可见,如果中断发生的频率太高,也会降低系统性能

特点:
+ 每次I/O操作开始之前、完成之后需要CPU介入。等待I/O完成的过程中CPU可以切换到别的进程执行。
+ 每次读写一个字
+ 需要CPU的帮助

缺点:每个字在I/O设备与内存之间的传输,都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间。

DMA方式

与“中断驱动方式”相比,DMA方式(Direct Memory Access,直接存储器存取。主要用于块设备的I/0控制)有这样几个改进:
1. 数据的传送单位是“块”。不再是一一个字、一个字的传送
2. 数据的流向是从设备直接放入内存,或者从内存直接到设备。不再需要CPU的帮助
3. 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。

步骤:
1. CPU指明此次要进行的操作(如:读操作),并说明要读入多少数据、数据要存放在内存的什么位置、数据在外部设备上的地址(如:在磁盘上的地址)
2. 控制器会根据CPU提出的要求完成数据的读/写工作,整块数据的传输完成后,才向CPU发出中断信号

操作系统复习05-设备管理

DMA方式需以下设施:
1. 内存地址寄存器:在输入时表示数据应放到内存中的什么位置,输出时表示要输出的数据放在内存中的什么位置中。
2. 数据计数器:表示剩余要读/写的字节数。
3. 数据缓冲寄存器或数据缓冲区:暂存从设备到内存,或从内存到设备的数据。
4. 设备地址寄存器:暂存存储设备中的地址。
5. 中断机制和控制逻辑:通过中断机制通知CPU

特点:
+ 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。
+ 每次读/写一个或多个块(注意:每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)
+ 数据传输不再需要经过CPU

缺点: CPU每发出一条I/O指令,只能读/写一个或多个连续的数据块。如果要读/写多个离散存储的数据块,或者要将数据分别写到不同的内存区域时,CPU要分别发出多条I/O指令,进行多次中断处理才能完成。

通道方式

为获得CPU和外围设备间更高的并行工作能力,为让种类繁多,物理特性各异的外围设备能以标准的接口连接到系统中,计算机系统引入了自成独立体系的通道结构。

通道也是一种硬件,可以识别并执行一系列通道指令,完成一部分CPU的工作。

采用通道后的I/O操作过程:

  1. CPU向通道发出I/O指令。指明通道程序在内存中的位置,并指明要操作的是哪个I/O设备,之后CPU就切换到其他进程执行了。
  2. 通道执行内存中的通道程序(其中指明了要读入/写出多少数据,读/写的数据应放在内存的什么位置等信息)
  3. 通道执行完规定的任务后,向CPU发出中断信号,之后CPU对中断进行处理

特点:
+ CPU干预的频率极低,通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求CPU干预。
+ 每次读/写一组数据块
+ CPU、通道、I/O设备可并行工作,资源利用率很高

缺点:需要专门的通道硬件支持。

I/O软件原理

操作系统复习05-设备管理

I/O软件设计目标和原则

I/O软件总体设计目标:
+ 高效率
+ 通用性

I/O软件总体设计要考虑的问题:
+ 设备无关性
+ 出错处理
+ 同步(阻塞)—异步(中断驱动)传输
+ 独占性外围设备和共享性外围设备

I/O软件组织成四个层次

  • I/O中断处理程序。
  • I/O设备驱动程序。
  • 独立于设备的操作系统I/O软件。
  • 用户空间的I/O软件。

越往上越接近硬件,越往下越靠近用户

I/O中断处理程序

当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。

I/O中断的类型和功能:
+ 通知用户程序I/O操作沿链推进程度
+ 通知用户程序I/O操作正常结束
+ 通知用户程序发现的I/O操作异常
+ 通知程序外围设备上重要的异步信号

I/O中断的处理原则:(根据不同的中断原因做相应的处理)
+ 操作正常结束处理
+ 操作发生故障或特殊事件的中断处理
+ 人为要求而产生的中断处理
+ 外围设备的异步信号处理

设备驱动程序

不同设备的内部硬件特性也不同,这些特性只有厂家才知道,因此厂家须提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列,来完成设置设备寄存器,检查设备状态等工作

设备驱动程序包括与设备相关的代码,其工作是:把用户提交的逻辑I/O请求转化为物理I/O操作的启动和执行,如设备名转化为端口地址、逻辑记录转化为物理记录、逻辑操作转化为物理操作等。

设备驱动程序主要功能:
1. 设备初始化
2. 执行设备驱动例程
3. 执行中断处理例程

独立于设备的操作系统I/O软件

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

设备无关软件完成的功能:
+ 对设备驱动程序的统一接口(向用户提供,如read/write系统调用)
+ 设备命名
+ 设备保护:在unix系统中,设备被看做是一种特殊的文件,不同用户对各个文件的访问权限是不一样的,同理,对设备的访问权限也不一样。
+ 提供独立于设备的块大小
+ 缓冲区管理:可以通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异
+ 块设备的存储分配
+ 独占性外围设备的分配和释放
+ 错误报告
+ 文件和I/O设备的命名方式
+ 如何保护对设备的未授权访问
+ 屏蔽不同磁盘扇区大小并向高层软件提供统一大小的逻辑块
+ 块设备和字符设备需要缓冲技术
+ 设备分配和状态跟踪

错误处理多数由驱动程序完成,设备独立性软件需要对一些设备的错误进行处理。

缓冲技术、驱动调度技术、设备分配会在后面讲到。

用户空间的I/O软件

用户层软件实现了与用户交互的接口,用户可直接使用该层提供的、与I/O操作相关的库函数对设备进行操作。

  • 用户空间的I/O软件:I/O系统调用通常先是库函数调用count=write(fd,buffer,nbytes);
  • 非库函数实现的I/O系统调用:SPOOLing系统

Windows操作系统向外提供的一系列系统调用,但是由于系统调用的格式严格,使用麻烦,因此在用户层上封装了一系列更方便的库函数接口供用户使用(Windows API)

I/O操作过程总览

  1. 进程对已打开文件的文件描述符执行读库函数;
  2. 独立设备I/O软件检查参数正确性。高速缓存中有要读的信息块,从缓冲区直接读到用户区,完成I/O请求;
  3. 若数据不在缓冲区,执行物理I/O,实现将设备逻辑名转换成物理名,检查对设备操作的权限,将I/O请求排队,阻塞进程且等待I/O完成
  4. 内核启动设备驱动程序,分配存放读出块的缓冲区,准备接收数据,且向设备控制寄存器发启动命令,或建立DMA传输,启动I/O;
  5. 设备控制器操作设备,执行数据传输
  6. DMA控制器控制一块传输完成,硬件产生I/O结束中断
  7. CPU响应中断,转向磁盘中断处理程序
  8. 当应用进程被再次调度执行时,从I/O系统调用的断点恢复执行。

缓冲技术

操作系统复习05-设备管理

缓冲技术概念

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。

使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合(如存储器管理中所用的联想寄存器,由于对页表的访问频率极高,因此使用速度很快的联想寄存器来存放页表项的副本)

一般情况下,更多的是利用内存作为缓冲区,“设备独立性软件”的缓冲区管理就是要组织管理好这些缓冲区。

引入缓冲技术的目的:
+ 改善中央处理器与外围设备之间速度不配的矛盾,
+ 减少对CPU的中断频率,放宽对CPU中断相应时间的限制
+ 协调逻辑记录大小与物理记录大小不一致
+ 提高CPU和I/O设备的并行性

实现缓冲技术的基本思想:

  • 进程执行写操作输出数据时,向系统申请一个缓冲区,若为顺序写请求,则不断把数据填到缓冲区,直到被装满。此后,进程继续它的计算,系统将缓冲区内容写到I/O设备上。
  • 进程执行操作输入数据时,向系统申请一个缓冲区,系统将一个物理记录的内容读到缓冲区,根据进程要求,把当前需要的逻辑记录从缓冲区中选出并传送给进程。
  • 在输出数据时,只有在系统还来不及腾空缓冲而进程又要写数据时,它才需要等待;
  • 在输入数据时,仅当缓冲区空而进程又要从中读取数据时,它才被迫等待。

驱动调度技术

操作系统复习05-设备管理

驱动调度技术的概念

驱动调度能减少为若干个I/O请求服务所需的总时间,提高系统效率、除了I/O请求的优化排序外,信息在辅助存储器上的排列方式存储空间分配方法都能影响存取访问速度。

存储设备的物理结构

顺序存取存储设备是严格依赖信息的物理位置进行定位和读写的存储设备,具有存储容量大、稳定可靠、卷可装卸和便于保存等优点。

磁盘是一种直接(随机)存取存储设备。每个物理记录有确定的位置和唯一的地址,存取任何一个物理块所需的时间几乎不依赖于此信息的位置。

访问磁盘记录参数:盘面号、磁道号、扇区号。

磁盘结构

移臂调度的算法

  • “先来先服务” 算法:磁盘臂是随机移动的,按照I/O请求的次序寻道,不考虑各 I/O 请求间的相对次序和移动臂当前所处位置,进程等待 I/O 请求时间会很长,寻道性能较差。
  • “最短查找时间优先”算法:每次选择离当前磁头最近的磁道,与FIFO 算法相比有较好寻道性能。
  • “扫描”算法:磁盘臂每次沿一个方向移动,扫过所有柱面,遇到最近的I/O请求便进行处理,直到最后一个柱面后,再向相反方向移动回来。
  • “分步扫描”算法:进程重复请求访问同一柱面会垄断设备,造成“磁臂粘性”,导致其他柱面访问请求长时间得不到服务,采用“分步扫描”算法可以避免这类问题。具体做法是:将 I/O 请求分为长度为N的子队列,按FIFO算法依次处理每个子队列,而每个子队列采用扫描算法,处理完一个后再服务下一个子队列,以避免出现磁臂粘住现象。这种调度算法能保证每个I/O请求的等待时间不致太长,当 N 值很大时,接近于“扫描”算法性能;当N=1时,接近于 FIFO算法性能。
  • “电梯调度”算法:是扫描算法的一种改进,无访问请求时,移动臂停止不动,有访问请求时,移动臂按电梯规律移动。
  • “循环扫描”算法:为适应有大量柱面均匀分布的存取请求进入系统而设计的扫描方式。移动臂总是从0柱面至最大号柱面顺序扫描,然后,直接返回0柱面重复进行,归途中不再提供服务,构成一个循环,缩短处理新来请求的最大延迟。

设备分配

操作系统复习05-设备管理

设备独立性

用户不指定特定设备,指定逻辑设备,使得用户作业和物理设备独立开来,通过其它途径建立逻辑设备和物理设备之间对应关系,这种特性为“设备独立性”。

好处:用户与物理的外围设备无关,系统增减或变更外围设备时程序不必修改;易于对付输入输出设备的故障。

从设备的特性来看,可以把设备分成独占设备、共享设备和虚拟设备三类,相应的管理和分配外围设备的技术可分成:独占方式、共享方式和虚拟方式。

从进程运行的安全性上考虑,设备分配有两种方式:
+ 安全分配方式:为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒。一个时段内每个进程只能使用一个设备。

优点:破坏了“请求和保持”条件,不会死锁
缺点:对于一个进程来说,CPU和I/O设备只能串行工作

  • 不安全分配方式:进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。只有某个I/O请求得不到满足时才将进程阻塞。一个进程可以同时使用多个设备。

优点:进程的计算任务和I/O任务可以并行处理,使进程迅速推进
缺点:有可能发生死锁(需要考虑死锁避免、死锁的检测和解除)

设备分配的数据结构

设备分配的数据结构:设备类表和设备表。

系统中拥有一张设备类表,每类设备对应于表中一栏,包括内容有:设备类、总台数、空闲台数和设备表起始地址等。

每一类设备都有各自的设备表,用来登记这类设备中每一台设备的状态,包含的内容有:物理设备名、逻辑设备名、占有设备的进程号、已分配/未分配、好/坏等。

采用通道结构的系统中,设备分配的数据结构设置:系统设备表、通道控制表、控制器控制表和设备控制表。

常用的I/O设备分配算法有先请求先服务,优先级高者先服务等。此外,在多进程请求I/O设备分配时,应防止因循环等待对方所占用的设备而产生死锁,应预先进行性检查。

虚拟设备

操作系统复习05-设备管理

原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%8d%e4%b9%a005-%e8%ae%be%e5%a4%87%e7%ae%a1%e7%90%86/

发表评论

电子邮件地址不会被公开。