操作系统整理-第五章-输入/输出(I/O)管理

输入/输出(I/O)管理

  • 一、I/O管理概述
    • 1.1 I/O设备
    • 1.2 I/O控制方式
    • 1.3 I/O子系统的层次结构
  • 二、I/O核心子系统
    • 2.1 I/O子系统概述
    • 2.2 I/O调度概念
    • 2.3 高速缓存与缓冲区
    • 2.4 设备分配与回收
    • 2.5 SPOOLing技术(假脱机技术)

一、I/O管理概述

1.1 I/O设备

I/O设备类型多种多样,导致I/O设备管理成为操作系统管理最凌乱也最具有挑战性的一部分。
按使用特性可分为
1)人机交互类外部设备,用于计算机与用户之间的交互设备,如键盘和显示屏。
2)存储设备,用户存储数据的设备,如磁盘、U盘。
3)网络通信设备,与远程设备通信的设备,如各自网络接口、调制解调器等。

  1. 按传输速率
    1)低速设备,每秒几字节到百字节,如键盘、鼠标等。
    2)中速设备,几千到几万字节的设备,如打印机、显示器等。
    3)高速设备,数十万到千兆字节的设备,如磁盘。
  2. 按信息交换的单位分类
    1)块设备,数据存取以数据块为单位,如磁盘。
    2)字符设备,以字符为基本单位,如打印机。

1.2 I/O控制方式

  1. 程序直接控制方式
    用显示的程序来控制数据的读写。
    操作系统整理-第五章-输入/输出(I/O)管理_第1张图片
    实现简单,但是CPU要和不在一个数量级的I/O并行操作,导致CPU利用率很低。
  2. 中断驱动方式
    运行I/O设备可以通过中断主动打断CPU,CPU给I/O设备控制器发送命令之后,其它时间就让CPU去忙。
    操作系统整理-第五章-输入/输出(I/O)管理_第2张图片

问题在于数据中的每个字在存储器与I/O控制器之间传输都需要CPU的干预。
3. DMA方式
其基本单位不是一个字,而是数据块,仅在传输一个或多个数据块的开始和结束时,才需要CPU的干预,整块的数据在传送过程中是在DMA控制器下完成的。操作系统整理-第五章-输入/输出(I/O)管理_第3张图片
操作系统整理-第五章-输入/输出(I/O)管理_第4张图片
1)命令/状态寄存器(CR),用于记录CPU向I/O设备控制器发来的控制信息或设备状态。
2)内存地址寄存器(MAR),输入时,记录数据在设备的起始目标地址;输出时,记录数据在内存的源地址。
3)数据寄存器(DR),用于暂存设备到内存或内存到设备的数据。
4)数据计数器(DC),存放本次要传送的字节数。
该问题在于传输每一批数据前后都要CPU的干预。
4. 通道控制方式(小处理机)
I/O通道方式是DMA的发展,是指专门负责输入/输出的处理机。可以进一步减少CPU的干预。传多少数据在让CPU干预,数据放在那里?多设备同时控制,这都由小处理机通道来控制。
实现了CPU、通道和I/O设备三者的并行操作,大大的提高了系统利用率。
当CPU要完成一组相关的读写时,只需像I/O通道发送一条I/O指令,其它的控制都交给通道控制,等数据传完时在中断CPU。
通道与一般的CPU的区别是,通道指令类型单一,没有自己的内存,和CPU共享内存。

1.3 I/O子系统的层次结构

操作系统整理-第五章-输入/输出(I/O)管理_第5张图片
操作系统整理-第五章-输入/输出(I/O)管理_第6张图片

二、I/O核心子系统

2.1 I/O子系统概述

管理各类设备的方法共同组成OS内核的I/O子系统,与内核其它方面独立。其I/O核心子系统提供的服务主要由I/O调度、缓冲与高速缓存、设备分配与回收、假脱机、设备保护和差错处理等。

2.2 I/O调度概念

目的就是为了使进程之间公平高效有序的对共享设备的访问,减少I/O完成所需要的平均等待时间。
原本有一个I/O请求队列,但是I/O调度会重新安排队列顺序,以改善系统的总体效率和应用程序的平均响应时间。

2.3 高速缓存与缓冲区

  1. 磁盘高速缓存
    把数据预先存到介于CPU与内存之间的小容量高速存储器上,以提高CPU取指令或数据的速度。
  2. 缓冲区
    用来缓冲CPU与I/O速度不匹配的问题,有单缓冲、双缓冲、循环缓冲、缓冲池四种。
    单缓冲,一次只能读或写,一个在进行的时候,另一个就必须阻塞。设数据进入缓冲区时间为T,数据转移时间为M,数据处理时间为C,则用单缓冲区处理每块数据的用时为max(C,T)+M
    操作系统整理-第五章-输入/输出(I/O)管理_第7张图片
    按照上面的规则,则双缓冲的用时为max(C+M,T)
    若M+C < T ,则可使块设备连续输入;反则CPU可不必等待设备输入。
    操作系统整理-第五章-输入/输出(I/O)管理_第8张图片
    操作系统整理-第五章-输入/输出(I/O)管理_第9张图片
    而循环缓冲是用一个循环链表表示,有两个指针in和out,in指针指向可以输入数据的第一个空缓区。out指针指向可以输出数据的第一个缓冲区
    缓冲池则有三个链表,4种缓冲区。空缓冲队列、装满输入数据队列、装满输出数据缓冲队列。
    操作系统整理-第五章-输入/输出(I/O)管理_第10张图片
    1. 高速缓冲与缓冲区的对比
      操作系统整理-第五章-输入/输出(I/O)管理_第11张图片

2.4 设备分配与回收

  1. 设备分配概述
    合理公平高效的分配,让设备尽可能的忙,要避免死锁。
    1)独占式使用设备
    2)分时式共享使用设备
    3)以SPOOLing方式使用外部设备
  2. 设备分配的数据结构
    这些数据结构通过指针一环套一环,注意下图。
    操作系统整理-第五章-输入/输出(I/O)管理_第12张图片
    操作系统整理-第五章-输入/输出(I/O)管理_第13张图片
  3. 设备分配的策略
    在避免死锁的情况下,利用合理高效的设备分配算法(FIFO、优先级高优先等)来动态分配。
  4. 设备分配的安全性
    1)安全分配方式,一旦进程请求I/O便进入阻塞态,不保持资源也不再请求其它资源,直到I/O完成才被唤醒。但是CPU与I/O是串行工作。
    2)不安全分配方式,需要一个请求一个,请求后继续运行,需要另一个I/O请求时,又请求,直到所请求的I/O在被的进程占用时。
    优点:一个进程同时操作多个设备,从而快速推进进程。缺点:可能产生死锁。

2.5 SPOOLing技术(假脱机技术)

为了解决CPU的高速性与I/O设备低速性之间的矛盾,引入脱机技术。将独占设备看似改造成共享设备的技术。
在磁盘上开辟输入井和输出井,然后自动一个进程一个进程的I/O任务完成。
如用户A和B同时操控打印机,而OS将两个任务放在磁盘的井中,然后通过井中的数据一个进程一个进程的I/O任务自动有序运行。
内存中的数据传到输出井,外设的数据传到输入井。
操作系统整理-第五章-输入/输出(I/O)管理_第14张图片

你可能感兴趣的