2021-01-01 操作系统复习第五章

5. 设备管理

5.1 IO硬件原理

设备管理的功能:

  • 中断处理
  • 缓冲区管理
  • 设备的分配和去配
  • 设备驱动调度
  • 虚拟设备及其实现

按信息交换单位可分为块设备字符设备。Ø输入型设备和输出型设备一般为字符设备。存储型外围设备一般为块设备。

I/O控制方式

区别在于CPU和设备并行工作的方式和程度不同

  • 轮询方式:使用查询指令测试设备控制器的忙闲状态位,决定主存和设备是否能交换数据。如果不能则重复查询,直到可以交换数据为止。查询设备状态和数据传送都需要CPU参与,CPU和设备串行工作,效率很低
  • 中断方式:设备控制器进行相应I/O操作,缓冲区满时发出中断请求,CPU转向中断处理程序。
    Ø I/O操作的完成还是需要 CPU参与(中断处理程序中,在内存和缓冲区之间拷贝数据)。
    Ø缓冲区大小有限,装满了就会中断,中断次数可能很多。
    Ø不必忙式查询 I/O准备情况, CPUI/O设备可实现部分并行,与程序查询的串行工作方式相比,使 CPU资源得到较充分利用。
  • DMA方式:内存和设备间有一条数据通路成块地传送数据,无需CPU干预,实际数据传输操作由DMA直接完成。传输完成时DMA发出中断请求。I/O设备能直接与主存交换数据而不占用CPU,CPU的利用率还可提高,这就出现了直接存储器存取DMA(Direct Memory Access)方式。Ø功能单一(主要是读写,而且只能写到一个连续区域),不能进行复杂的I/O操作。Ø窃用总线,影响CPU效率。DMA方式需以下设施:(1)主存地址寄存器  (2)字计数器  (3)数据缓冲寄存器  (4)设备地址寄存器  (5)中断机制和控制逻辑。 功能较差
  • 通道方式:通道是一个独立于CPU的、专门用来管理输入/输出操作的处理机,它控制设备与内存直接进行数据交换。一个CPU可以连接若干通道,一个通道可以连接若干控制器,一个控制器可以连接若干设备。技术复杂

5.2 IO软件原理

I/O系统的层次

  • 用户层软件:库函数、SPOOLing软件,实现用户与I/O设备交互
  • 设备无关程序:实现用户程序与设备驱动器的统一接口,设备命令、设备保护、设备分配与释放等。驱动程序是针对具体设备的,但独立于设备的I/O软件是针对所有设备的,其基本功能是执行适用于所有设备的常用I/0功能,并向用户层软件提供一致性接口:设备命名与设备保护;提供独立于设备的块大小;缓冲区管理;设备分配;错误报告
  • 设备驱动程序:与硬件直接相关,具体实现系统对设备的操作指令,驱动I/O设备工作设备驱动程序从与设备无关的软件中接收抽象的I/O请求,转化成具体的形式,包括命令和参数(例如计算请求块的地址)对磁盘而言,它包含计算请求块的具体地址,检查驱动器是否运作,检测磁头臂是否定位在正确的柱面位置等,然后向设备控制器写入这些命令
  • 中断处理程序:保存中断进程的CPU环境,转入相应的中断处理程序进行处理,处理后恢复现场
  • 硬件

SPOOLing也是在内核外运行的系统I/O软件,是在多道程序设计系统中,通过创建守护进程和特殊存储区域(目录)解决独占型设备的共享问题的一种有效方法。

5.3 缓冲

引入缓冲技术的目的

  • 改善中央处理器与外围设备之间速度不配的矛盾,提高CPU和I/O设备的并行性 ;
  • 减少中断CPU的次数;
  • 需要预处理数据,如计算机网络中缓冲用于处理消息的分包与重组。
  • 解决数据粒度不匹配的问题。

缓冲区设置:

  • 硬缓冲:在设备控制器中设置缓冲区,由硬件实现;
  • 软缓冲:在内存中开辟一个空间,用作缓冲区。

常用的缓冲技术:单缓冲、双缓冲、多缓冲

单缓冲:

在设备和处理器之间设置一个缓冲区。缓冲区数只有一个;设备与处理器对缓冲区的操作是串行的。

输入和处理是并行的

双缓冲:

在设备和处理器之间设置两个缓冲区。输入数据时,首先填满缓冲区1,操作系统可从缓冲区1把数据送到用户进程区,用户进程便可对数据进行加工计算;与此同时,输入设备填充缓冲区2。当缓冲区1空出后,输入设备再次向缓冲区1输入。操作系统又可把缓冲区2的数据传送到用户进程区,用户进程开始加工缓冲2的数据。只有当两个均为空时,需数据的进程才等待。特点:缓冲区数有两个;设备与处理器对缓冲区的操作可并行,提高了设备与处理机并行操作的程度。

多缓冲(环形缓冲区):

在设备和处理机之间设置多个大小相等的缓冲区,这些缓冲区构成环形,每一个缓冲区中含一指针指向下一个缓冲区,最后一个指向第一个缓冲区,同时还含有2个用于输入/输出的指针IN和OUT。

特点:缓冲区的数量有多个;设备与处理机对缓冲区的操作可并行,进一步提高了设备与处理机并行操作的程度。 

5.4 驱动调度技术

磁盘臂调度算法

  • 先来先服务:FCFS
  • 最短查找时间优先:SSTF。存在饥饿现象
  • 电梯调度:
  • 扫描:SCAN 每次沿一个方向扫描到头再调头
  • 分布扫描:将请求分为多个队列,对每个队列进行扫描算法,避免磁臂粘住的现象
  • 循环扫描:单向扫描,到头后直接返回起点重新扫描,返回途中不处理请求

提高磁盘I/O速度的方法

  • 提前读
  • 延迟写

电梯调度有两个问题,一是由于队列动态更新原因,相距较远的I/O请求可能会延迟相当长的时间,导致饥饿;二是由于写请求通常是异步的,而读请求大部分是同步操作,在写一个大文件时,很可能将一个读请求堵塞很长时间,从而阻塞进程。

SPOOLing技术是用一类物理设备模拟另一类物理设备的技术,是使独占型设备变成共享型设备的一种技术

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值