第五章 I/O设备

一、I/O系统的组成

1.1 I/O系统的结构

I/O的特点:

  • I/O性能经常成为计算机系统性能的瓶颈,因为它的运行速度比较慢
  • 操作系统庞大复杂的原因之一
  • 理解I/O的工作过程与结构是理解操作系统的工作过程与结构的关键
  • 与其他功能密切联系,特别是文件系统

I/O系统的两大结构:

  • 总线型(微机型)
    在这里插入图片描述
  • 主机型:总线上会使总线与CPU的压力太大,因此引入一个I/O通道。
    在这里插入图片描述

1.2 I/O设备

I/O设备的性能指标:

  • 数据传输速率
  • 数据传输单位:块、字节
  • 设备共享属性:能否被共享

按照传输速率分:

  • 低速:键盘、鼠标
  • 中速:打印机
  • 高速:磁盘

按照数据传输单位:

  • 块设备:磁盘(扇区)
  • 字符设备:键盘

按照共享属性分:

  • 独占设备:打印机
  • 共享设备:磁盘
  • 虚拟设备:用一种技术将独占的设备变成共享的设备

1.3 设备控制器

在主机结构中,设备是通过设备控制器与CPU通信,在接口中,有以下三种信号,而在微机型中,常称为接口卡。

  • 控制信号:设备控制器发给设备,对设备进行一定的操作
  • 数据信号:两者之间来回传递比特流
  • 状态信号:用于指示设备当前的状态

设备控制器的功能:

  • 接收与识别命令
  • 数据交换
  • 设备状态的了解与报告
  • 地址识别
  • 数据缓冲
  • 差错控制

设备控制器的组成:

  • 与处理机的接口
  • 与设备的接口
  • I/O逻辑
    在这里插入图片描述

1.4 I/O通道

通道的引入:

为了建立独立的I/O操作,解放CPU,当拿到一条指令的时候,先执行通道程序,之后才会发出中断。

通道类型:

  • 字节多路通道

    • 每个通道有许多子通道
    • 按时间片轮转的方式利用主通道
    • 不适合高速设备
      在这里插入图片描述
  • 数组选择通道

    • 按照数组为信息交换
    • 可以连接高速设备
    • 只含有一个子通道,利用率低
      在这里插入图片描述
  • 数组多路通道

    • 将前两者结合起来

I/O设备的瓶颈问题:

  • 对于单通道来说,只能独占,无法共享
  • 而多通路可以解决这个问题,将每个通道都与控制器相关联

二、I/O控制方式

宗旨: 尽可能地减少主机对I/O的干预,从而解放CPU

2.1 程序I/O方式

总结就是两个字:忙等! 在这个状况下,CPU是不断要检测I/O是否已经完成。
在这里插入图片描述

2.2 中断驱动方式

引入中断的操作,当发出I/O命令时,CPU中断保存现场,去执行其他事情,等待I/O的完成,再恢复现场。

2.3 DMA方式(直接存储器访问)

在上一个方法中,数据传输过程中只能一个扇区一个扇区的读写,能不能一块一块地读写呢?

DMA工作特点:

  • 数据传输单位是数据块
  • 传送数据直接在内存与I/O之间进行
  • 只有在开始与结束的时候,CPU才会干预

DMA控制器:

  • 命令/状态寄存器CR,用于接收从CPU发来的I/O命令或有关控制信息,或设备的状态;

  • 内存地址寄存器MAR。用于存放数据从设备传送到内存的目标地址,或由内存到设备的内存源地址;

  • 数据寄存器DR。用于暂存从设备到内存或从内存到设备的数据;

  • 数据计数器DC。存放本次CPU要读或写的字(节)数。
    在这里插入图片描述
    DMA工作流程:
    在这里插入图片描述

2.4 I/O通道控制方式

在上一个方法中,DMA已经可以一块一块读取了,但是还有一个问题,如果要读取的内存数据不连续呢?那么就要多次DMA,这显然是很麻烦的。

因此在设备控制器之前,先将I/O指令交给设备通道来执行。

通道指令:
在这里插入图片描述

工作方式:
在这里插入图片描述
P==1的时候,该条通道指令才结束,当R==1的时候,代表这条记录已经被写完。

三、缓冲管理

3.1 缓冲的引入

引入缓冲的目的:

  • 解决CPUI/O速度不匹配的矛盾
  • 减少CPU的中断频率,放宽对中断的响应时间
    • 中断频率:就是一段时间内中断的次数
    • 中断响应时间:提交中断到完成中断这段时间
    • 如果在规定的响应时间未完成,那么下一个中断就来了,就会冲突
  • 提高CPUI/O的并行性

举例:
在这里插入图片描述

  • 对于a来说,中断频率为9.6K,中断响应时间为1/9.6K
  • 对于b来说,中断频率是为9.6K/8,但是中断响应时间还是9.6K
  • 对于c来说,中断频率是9.6K/8,中断时间为8/9.6K

3.2 单缓冲

工作方式:
在这里插入图片描述

在单缓冲情况下,为什么系统对一块数据的处理对问为Max(C,T)+M?

Answer:因为CPUI/O是并行的,基本上都是同步进行,就看谁更快了。但是TM是不能并发的。因为如果还没把缓冲区的数据放入内存,那么缓冲区的数据就被覆盖了。

3.3 双缓冲

工作方式:
在这里插入图片描述

3.4 循环缓冲

上一个方法中,适合于生产与消费的速度差不多的情况。但是如果差异比较大的时候,得循环缓冲。
在这里插入图片描述

以上缓冲区分为三种情况:

  • 空缓冲区,当nextg追上nexti,空了
  • 满缓冲区,当nexti追上nextg,满了
  • 当前缓冲区

以上情况就是生产者与消费者问题!

3.5 缓冲池

循环缓冲仅适合用于单个的生产者与消费者,为了提高利用率,那么开一个共享的缓冲区。其类型与之上类似。

工作方式:
在这里插入图片描述

  • 收容输入:从emq队列中拿一个空缓冲区,然后把该缓冲区放入imq队尾
  • 提取输入:从缓冲区先提取一个队列的数据,然后把这个队列放到空缓冲队列上

四、设备分配

4.1 数据结构

设备控制表DCT:
在这里插入图片描述

其他相关表:
在这里插入图片描述
在这里插入图片描述

4.2 考虑因素

  • 设备的固有属性
    • 独占、共享、虚拟设备
  • 设备的分配算法
    • 先来先服务、优先级高
  • 设备分配的安全性
  • 设备独立性

4.3 设备独立性

对于两个进程,如果同时申请打印机一,设备资源得不到满足,但是打印机二是可以用的,这样的话,我们就可以利用打印机二。那么这样的话,我们申请设备的时候,不指定申请哪一台,那么引入两个概念:逻辑设备与物理设备

优点:

  • 设备分配时的灵活性
  • 有利于I/O的重定向(可以方便调试,可以先输出到屏幕,打印的时候再用打印机)

4.4 独占设备的分配技术

在这里插入图片描述

4.5 SPOOLING技术

脱机技术:

利用一个外围控制器,将I/O的数据传到磁盘上或者相反。

假脱机Spooling:

将外围机替换成两道进程。

Spooling结构:
在这里插入图片描述
主机在磁盘的右边。

Spooling技术的应用:

  • 将打印机变成共享,公司里10个人,不可能每个人一台打印机,每人都不知道打印机是否在用。
    • 由输出进程在输出井中申请一块空闲区,并把数据放入
    • 输出进程申请一张空白的用户请求表,并将用户的打印放入其中,再把该表挂到请求打印队列上。

spooling的优点:

  • 提高I/O速度
  • 将独占设备改成共享设备
  • 实现了虚拟设备的功能

五、设备处理

5.1 设备驱动程序的功能和特点

功能:

  • 将接收到的抽象要求转换为具体要求。
  • 检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式
  • 发出I/O命令,启动分配到的I/O设备,完成指定的I/O操作
  • 及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理
  • 对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序

特点:

  • 驱动程序主要是在请求I/O的进程与设备控制器之间的一个通信程序。
  • 驱动程序与I/O设备的特性紧密相关
  • 驱动程序与I/O设备的控制方式紧密相关
  • 由于驱动程序与硬件紧密相关,因而其中的一部分程序必须用汇编语言书写,目前有很多驱动程序,其基本部分已经固化,放在ROM

5.2 设备驱动程序的处理过程

  • 将抽象需求转换成具体需求
  • 检查I/O请求的合法性
  • 读出和检查设备的状态
  • 传送必要的参数
  • 方式的设置
  • 启动I/O设备

5.3 中断处理程序的处理过程

  • 唤醒被阻塞的驱动程序进程
  • 保护现场
  • 分析中断原因,转入中断处理
  • 进行中断处理
  • 恢复现场

六、磁盘存储器管理

6.1 磁盘结构

磁道、扇区、柱面的概念:
在这里插入图片描述

磁盘类型:

  • 固定头磁盘:每个盘片都有一个磁头
  • 移动头磁盘:磁盘只有一个磁头

磁盘访问时间:

  • 寻道时间:启动磁臂时间与磁头移动n条磁道花费时间之和
  • 旋转延迟时间:
  • 传输时间:读取磁盘的时间
  • 因此总时间 = 在这里插入图片描述
  • 注意寻道时间是取平均,而读取时间是计算一个百分数*读取一圈的时间

6.2 磁盘调度

1.先来先服务FCFS:

按照顺序执行

2.最短寻道时间优先SSTF:

寻找一个离的最近的

  • 缺点:会导致饥饿现象,有一些进程就没法执行了

3.扫描算法:

也是找最近,但是只能往一一定顺序走,不能回头

4.还有一些延申,肯定不考。

6.3 磁盘高速缓存

这个与Cache的思想很像,这里不做赘述了。

6.4 提高磁盘速度方法

1.提前读:

读一条指令周围的相关,都读起来。

2.延迟写:

类似于高速缓存

3.优化物理块的分布:

把物理块尽可能放到一起

4.虚拟盘:

利用光驱,在内存中开一块区域。

6.5 廉价磁盘冗余阵列

1.并行交叉读取:

对同一个扇区,一次性多读几个磁盘。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值