【操作系统】5.设备管理

一、I/O设备的概念和分类

1. 什么是I/O设备

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

2. I/O设备的分类

按使用特性分类

  1. 人机交互类外部设备:鼠标、键盘
  2. 存储设备:移动硬盘、光盘
  3. 网络通信设备:调制解调器

按传输速率分类

  1. 低速设备:鼠标键盘
  2. 中速设备:激光打印机
  3. 高速设备:磁盘、移动硬盘

按信息交换的单位分类

  1. 块设备(传输速率高,可寻址,即对它可以随即地读/写人一块):磁盘
  2. 字符设备(传输率较慢,不可寻址,在输入输出时常采用中断驱动方式):鼠标、键盘

二、I/O控制器

  • I/O设备的机械部件主要用来执行具体的I/O操作
  • I/O设备的电子部件通常时一揆啊插入主板扩充槽的印刷电路板
  • CPU无法直接控制I/O设备的机械部件,因此,I/O设备还要有一个电子部件作为CPUI/O设备机械部件之间的“中介”,用于实现CPU对机械部件的控制
  • 这个电子部件就时I/O控制器,又称设备控制器
  • I/O控制器的功能:
    1. 接受和识别CPU发出的指令
    2. 向CPU报告设备的状态
    3. 数据交换
    4. 地址识别

三、I/O控制方式

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

1. 程序直接控制方式

  1. 在这里插入图片描述
  2. 完成一次读/写数据操作的流程图: 在这里插入图片描述
  3. 为什么要先从数据寄存器中读到CPU寄存器,再从CPU寄存器读到内存
    答:输入的数据最终要放到内存中(声明的变量在内存中存放),同理输出的数据也存放在内存中,需要从内存中取出
  4. 性能分析:
    1. CPU干预的频率:很频繁,I/O操作开始前、完成后都需要CPU介入,并且等待I/O完成的过程中CPU需要不断的轮询检查
    2. 数据传送的单位:每次读/写一个字,每个字的读写都要CPU的帮助
    3. 数据的流向:
      1. 读操作:I/O设备→数据寄存器→CPU(CPU寄存器)→内存
      2. 写操作:内存→CPU(CPU寄存器)→数据寄存器→I/O设备
    4. 主要缺点和优点:
      1. 优点:实现简单,读写指令之后循环检查即可
      2. 缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于忙等状态,CPU利用率低,此时,I/O也只能等待CPU,利用率也很低

2. 中断驱动方式

  1. (不用CPU一直问了,等完成时,通过发出中断主动告知CPU)引入中断机制,
    1. 由于I/O设备速度很慢,因此在CPU发出读写指令后,可将等待I/O的进程阻塞,先切换到别的进程执行
    2. 当I/O完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断
    3. 处理完后,接着恢复之前进程的环境,继续运行
  2. 完成一次读/写数据操作的流程图:
    在这里插入图片描述
  3. 性能分析:
    1. CPU干预的频率:每次I/O操作之前、完成之后需要CPU介入。等待I/O完成的过程中CPU可以切换到别的进程执行
    2. 数据传送的单位:每次读/写一个字,每个字的读写都要CPU的帮助
    3. 数据的流向:
      1. 读操作:I/O设备→数据寄存器→CPU(CPU寄存器)→内存
      2. 写操作:内存→CPU(CPU寄存器)→数据寄存器→I/O设备
    4. 主要缺点和优点:
      1. 优点:与程序直接控制方式相比,I/O控制器会主动通过中断信号来告知CPU,I/O已经完成,CPU不再需要轮询,CPU可以和I/O设备并行工作,CPU利用率明显提升
      2. 缺点:因为每次中断处理后,只能传输一个字的数据,所以每个字都需要CPU,而频繁的中断处理会消耗比较多的CPU时间

2. DMA方式

  1. 与中断驱动方式相比,DMA方式有几个改进:
    1. 数据的传输单位是“块”。不再是一个字
    2. 数据的流向是从设备直接放入内存,或者从内存直接到设备。不再需要CPU作为快递小哥
    3. 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预
  2. 完成一次读/写数据操作的流程图:
    在这里插入图片描述
  3. 控制器会根据CPU提出的要求完成数据的读/写工作,整块数据的传输完成后,才向CPU发出中断信号
  4. 性能分析:
    1. CPU干预的频率:仅在传送一个或多个数据块的开始和结束时,才需要CPU干预
    2. 数据传送的单位:每次读写一个或多个块(注意:每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的
    3. 数据的流向:
      1. 读操作:I/O设备→内存
      2. 写操作:内存→I/O设备
    4. 主要缺点和优点:
      1. 优点:数据传输以 “块为单位” ,CPU介入的频率进一步降低。数据的传输不再需要经过CPU,再写入内存,数据传输效率进一步增加
      2. 缺点:CPU每次发出一条I/O指令,只能读写一个或多个连续的数据块,如果要读取离散的数据块,就需要发出多条I/O指令

4. 通道控制方式

  1. 通道:一种硬件,可以理解为“弱鸡版的CPU”,与CPU相比,通道可以执行的指令很单一,而且通道程序是放在内存中的,可见通道和CPU是共享内存的,
  2. 通道可以识别并执行一系列的通道指令(放在内存中的通道程序中,相当于任务清单)
  3. 一个通道可以控制多个I/O控制器,而一个I/O控制器又可以控制多个I/O设备
    在这里插入图片描述
  4. 完成一次读/写数据操作的流程图:
    在这里插入图片描述
  5. 性能分析:
    1. CPU干预的频率:极低,通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读写后,才需要向CPU发出中断信号
    2. 数据传送的单位:每次读写一组数据块(可以是离散的)
    3. 数据的流向:(在通道的控制下进行
      1. 读操作:I/O设备→内存
      2. 写操作:内存→I/O设备
    4. 主要缺点和优点:
      1. 优点CPU、通道、I/O设备并行度高,资源利用率很高
      2. 缺点:实现复杂,需要专门的通道硬件支持

总结

在这里插入图片描述

四、I/O软件层次结构

1. I/O软件层次结构

  1. 理解各个层次之间的顺序(完成一次I/O请求或I/O应答的时候,各个层次软件的顺序是什么)
  2. 常考:
    1. 直接涉及到硬件具体细节、且与中断无关的操作肯定是在设备驱动程序层完成的
    2. 没有涉及到硬件的、对各种设备都需要进行的管理工作都是在设备独立性软件层完成的)
    3. 只有设备驱动程序层和中断处理程序层于硬件有关
      在这里插入图片描述

2. 设备独立性

  1. 为了提高操作系统的可适应性和可扩展性:
    1. 现代操作系统中实现了设备独立性,也称为设备无关性
    2. 应用程序独立于具体使用的物理设备
  2. 实现方法:
    1. 引入逻辑设备和物理设备
    2. 应用程序中使用逻辑设备名来请求使用某类设备
    3. 系统在实际执行中使用物理设备名
    4. 系统必须由将逻辑设备名转化为物理设备名的功能(类似于逻辑地址到物理地址)

3. 驱动程序

  • 为什么不同的设备需要不同的设备驱动程序?
    1. 不同的设备内部硬件特性也不同(如:不同设备规定的状态寄存器中,0和1代表的信息可能是相反的),而这些特性只有厂家才知道,CPU不可能满足各式各样的设备
    2. 因此厂家必须提供与设备相适应的驱动程序
    3. CPU执行驱动程序的指令序列,来完成各项工作

五、I/O核心子系统

  • I/O核心子系统需要实现的功能主要有:I/O调度、设备保护、假脱机技术(SPOOLing技术)、设备分配和回收、缓冲区管理
    在这里插入图片描述

1. I.O调度

  • 用某一个算法确定一个好的顺序来处理各个I/O请求
  • 如:磁盘调度算法、打印机也可以用先来先服务、优先级、短作业优先等算法来确定I/O调度顺序

2. 文件保护

  • 不同的用户对各个文件有不同的访问权限
  • 在UNIX系统中,设备被看作一种特殊的文件,每个设备也会有相应的FCB,当用户请求访问某设备时,系统会根据设备FCB中的信息来判断,该用户是否有相应的权限

3. 假脱机技术

1. 脱机技术

  1. 手工操作阶段:纸带机输入(低速)与主机(高速)的处理速度,人机速度矛盾明显,主机要浪费很多时间来等待设备
  2. 批处理阶段引入了脱机技术(用磁带完成):
    1. 在外围机的控制下,慢速设备的数据先传输到速度比纸带快很多的磁带上,之后主机可以从快速的磁带上读入数据,从而缓解了速度矛盾
    2. 另一方面,即使CPU在忙碌,也可以提前将数据输入到磁带;即使慢速的输出设备正在忙碌,也可以提前将数据输出到磁带
  3. 脱机————脱离主机的控制进行的输入输出
    在这里插入图片描述

2. 假脱机技术的实现原理

  1. 假脱机技术就是 用软件的方式,模拟脱机技术
  2. 输入井输出井
    1. 输入井:模拟脱机输入时的磁带,用于收容I/O设备输入的数据
    2. 输出井:模拟脱机输出时的磁带,用于收容用户进程输出的数据
    3. 磁盘上开辟的空间
  3. 输入进程和输出进程
    1. 输入进程:模拟脱机输入时的外围控制机
    2. 输出进程:模拟脱机输出时的外围控制机
    3. 可见,假脱机技术必需要有多道程序技术的支持(输入进程和输出进程需要并发执行)
  4. 输入/输出缓冲区
    1. 在输入进程的控制下,输入缓冲区用于暂时从输入设备输入的数据,之后再转存到输入井中
    2. 在输出进程的控制下,输出缓冲区用于暂时从输出井送来的数据,之后再转存到输出设备中
    3. 注意:输入/输出缓冲区是在内存中的缓冲区
      在这里插入图片描述

3. 共享打印机的原理(假脱机应用)

  1. 独占式设备:只允许各个进程串行的设备,一段时间内只能满足一个进程的请求
  2. 共享设备:允许多个进程“同时”使用的设备(宏观上同时使用,微观上可能是交替使用的),可以同时满足多个进程的使用要求
  3. 打印机是种“独占设备”,但是可以用SPOOLing技术改造成“共享设备”
    1. ⭐当多个用户进程提出输出打印的请求时,系统会答应它们的请求,但是并不是真正地把打印机分配给他们,而是由假脱机管理进程为每个进程做两件事:
      1. 在磁盘输出井中为进程申请一个空闲缓冲区(这个缓冲区是在磁盘上的),并将要打印的数据送入其中
      2. 为用户进程申请一张空白的打印请求表,并将用户的打印请求填入表中(其实就是用来说明用户的打印数据存放的位置等信息),再将该表挂到假脱机文件队列上
    2. 当打印机空闲时,输出进程会从文件队列的队头取出一张打印请求表,并根据表中的要求将要打印的数据从输出井传输到输出缓冲区,在输出到打印机进行打印。
    3. 虽然系统中只有一个打印机,但是每个进程在提出打印请求时,系统都会为其在输入井中申请一个缓冲区(相当于分配了一个逻辑设备),使每个用户进程都觉得自己在独占一台打印机,从而实现打印机的共享
      在这里插入图片描述

六、缓冲区管理

1. 什么是缓冲区

  1. 缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可以由内存作为缓冲区
  2. 用硬件作为缓冲区成本较高,但是比如快表就是使用联想寄存器,但是快表带来的性能提升很大,所以这样的成本很值得

2. 缓冲区的作用

  1. 缓和CPU与I/O设备时间的速度不匹配的问题
  2. 减少对CPU的中断频率,放宽对CPU中断相应时间的限制
    1. 如果是字符型设备,则每输出完一个字符就要向CPU发出中断信号,单CPU处理中断的代价是很大的
    2. 若使用了缓冲技术,CPU可以把要输出的数据快速地放入缓冲区,之后就可以做别的事
  3. 解决数据粒度不匹配的问题
    1. 输出进程每次可以生成一块数据,但I/O设备每次只能输出一个字符
    2. 若使用了缓冲技术,就可以将输出的数据块放入缓冲区,让I/O设备从缓冲区里一个字符一个字符地取数据
  4. 提高CPU与I/O设备之间的并行性

3. 单缓冲

  • 注意:
    1. 当缓冲区中数据为空时,不能往缓冲区中冲入数据,只能从缓冲区中把数据读出去
    2. 当缓冲区为空时,可以向缓冲区中冲入数据,但必须冲满之后,才能从缓冲区把数据传出

4. 双缓冲

5. 循环缓冲

6. 缓冲池

猜你喜欢

转载自blog.csdn.net/Qmilumilu/article/details/114586115