计算机操作系统(二十三):I/O设备

本文详细介绍了计算机操作系统的I/O设备,包括设备的分类、I/O控制器的功能、各种I/O控制方式以及I/O软件的层次结构。重点讨论了中断驱动方式、DMA方式和通道控制方式,强调了提高CPU利用率和设备管理的重要性。此外,还探讨了设备的分配与回收、缓冲区管理和假脱机技术的应用。

计算机操作系统(二十三):I/O设备

来源王道考研系列视频:计算机操作系统

https://www.bilibili.com/video/BV1YE411D7nH

概念和分类

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

输入型设备:鼠标、键盘

输出型设备:显示器

使用特性分类

人机交互型类外部设备

鼠标、键盘、打印机等(数据传输速度慢)

存储设备

移动硬盘、光盘(数据传输速度快)

网络通信设备

调至解调器(数据传输速度界中)

传输速率分类

低速设备

鼠标、键盘–传输速率为每秒几个至几百个字节

中速设备

激光打印机等 --传输速率为每秒数千至上万个字节

高速设备

磁盘等-- 传输速率为每秒数千字节至千兆个字节

信息交换的单位分类

块设备

磁盘等 – 数据传输的基本单位都是块。

传输速率高,可寻址。

字符设备

鼠标、键盘-- 数据传输的基本单位是字符。

传输速度比较慢,不可寻址,在输入输出时候采用中断驱动。

I-O控制器

机械部件:只要用来执行具体i/o操作。

i/o设备的电子部件通常是一块插入主板扩充槽的印刷电路板。

CPU无法直接控制I/O设备的机械部件,因此还要有一个电子部件作为CPU和I/O设备机械部件之间的中介,用于实现CPU对设备的控制。

CPU可以控制I/O控制器,又由I/o控制器来控制设备的机械部件。

I/O控制器的功能

接受和识别CPU发出的命令

比如CPU发来的read/write命令,i/o控制器中都有相应的控制寄存器来存放命令和参数。

向CPU报告设备的状态

i/0控制器中会有相应的状态寄存器,用于记录I/O设备的当前状态。如:1表示空闲,0表示忙碌

数据交换

i/o控制器中会设置相应的数据寄存器。输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备,输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据。

地址识别

类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设置一个特定的地址。i/o控制器通过CPU提供的地址类判断CPU要读/写的时那个寄存器。

I/o控制器的组成

CPU与控制器的接口

用于实现CPU与控制器之间的通信。CPU通过控制线发出命令;通过地址线指明要操作的设备;通过数据线来取出(输入)数据,或放入(输出)数据。

I/O逻辑

负责接收和识别CPU的各种命令( 如地址译码),并负责对设备发出命令。

控制器和设备的接口

用于实现控制器和设备之间的通信。

image-20220128001829103

  • 一个控制器可能会对应多个设备

  • 数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O;另一些计算机则采用I/0专用地址,即寄存器独立编址

    image-20220128002433981

I/O控制方式

需要只要的问题:

  1. 完成一次读写操作的流程
  2. CPU干预的频率
  3. 数据传送单位
  4. 数据的流向
  5. 主要缺点和主要优点

程序直接控制方式

Key word:轮询

  1. 完成一次读、写操作流程(以读操作为列子)

    ①CPU向控制器发出读命令。设备启动,并且状态机寄存器设置为1

    ②轮询检查控制器的状态(其实就是在不断地执行程序的循环,若状态位一直是1,说明设备还没有准备好输入的数据,于是CPU会不断地轮询)

    ③输入设备准备好数据后将数据传给控制器,并报告自身状态。

    ④控制器将输入的数据放到寄存器中,并将状态改为0(已就绪)

    ⑤CPU发现设备已经就绪,即可将数据寄存器中的内容读入CPU的寄存器中,再把CPU寄存器中的内容放入内存。

    ⑥若还要继续读入数据,则CPU继续发出读指令

    image-20220129001627480

  2. CPU干预的频率很频繁,i/o操作开始之前、完成之后需要CPU介入,并且在等待i/o完成的过程中CPU需要不断地轮询。

  3. 数据传送的单位:每次读/写一个字

  4. 数据的流向

    读操作(数据输入):i/o设备->CPU->内存

    写操作(数据输出):内存->CPU->I/o设备

    每个字的读写都需要cpu的帮助

  5. 主要缺点和优点

    优点:实现简单。在读/写指令之后,在加上实现循环检查的一系列指令即可(因才称为程序直接控制方式)

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

中断驱动方式

  1. 按成一次读写操作流程。

image-20220129003327057

  1. CPU干预率,每次i/o操作开始时之前完成之后需要cpu介入,等待i/o完成的过程中cpu可以切换到别的进程执行

  2. 数据传送的单位:每次读/写一个字

  3. 读操作(数据输入):i/o设备->CPU->内存

    写操作(数据输出):内存->CPU->I/o设备

  4. 主要缺点和主要优点

    优点:与“程序直接控制方式”相比,在“中断驱动方式”中,I/0控制器会通过中断信号主动报告I/0已完成,CPU不再需要不停地轮询。

    CPU和I/O设备可并行工作,CPU利用率得到明显提升。

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

DMA方式

  1. 数据的传送单位是块,不再是一个字、一个字的传送
  2. 数据的流向是从设备直接放入内存,或者从内存直接到设备。不需要CPU作为快递小哥。
  3. 仅在传送一个或者多个数据块的开始和结束时,才需要干预。

image-20220129004544703

image-20220129005137215

image-20220129005323814

通道控制方式

image-20220129005543764

image-20220129005800843

I-O软件的层次结构

用户层软件

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

用户层软件将用户请求翻译成格式化的I/O请求,并通过系统调用请求操作系统内核的服务。

设备独立性软件

设备无关性软件。与设备的硬件特性无关的功能几乎都在着一层实现。

主要实现的功能

  1. 向上层提供统一的调用接口(如read/write)

  2. 主要实现设备的保护

  3. 差错处理

  4. 设备的分配与回收

  5. 数据缓冲区处理

    可以通过缓冲技术屏蔽设备之间的数据交换大小和传送速度的差异

  6. 建立逻辑设备名到物理设备名的映射关系;根据设备类型选择调用相应的驱动程序

    设备被当做一种特殊的文件

    不同类型的I/O设备需要有不同的驱动程序处理

    image-20220129235500847

设备驱动程序:

主要负责对硬件的具体控制,将上层发出的一系列指令转化成特定设备能听懂的一系列操作。包括设备寄存器;检查设备状态等。

中断处理程序

image-20220130000300800

I-O核心子系统

  • 设备独立性软件
  • 设备驱动程序
  • 中断处理程序

称为操作系统的内核部分,也就是I/O核心子系统

I/O调度

用某种算法确定好的顺序来处理I/O请求

设备保护

image-20220130001739185

假脱机技术

脱机技术:用磁带完成

image-20220130002107413

引入脱机技术后,缓解了CPU与慢速设备之间的矛盾。另一放方面,即使CPU在忙碌,也可以提前将数据输入到磁带;即使慢速的输出设备正在忙碌,也可以提前将数据输出到磁带。

**假脱机技术:**又称为Spooling技术

是用软件的方式模拟脱机技术。

Spooling系统的组成如下:

image-20220130003141896

两个存储区:

  1. 输入井:模拟脱机输入时的磁带,用于收容I/o设备的输入数据。
  2. 输出井:模拟脱机输出时的磁带,用于收容进程的输出数据

两个外围控制机:

  1. 输入进程:模拟脱机技术输入时的外围控制机
  2. 输出进程:模拟脱机技术输出时的外围控制机

两个缓冲区:

  1. 输入缓冲区:在输入进程的控制下。输入缓冲区用于暂存从设备输入的数据,之后再转存到输入井中
  2. 输出缓冲区: 在输出进程的控制下。输出缓冲区用于暂存从输出井的数据,之后再传送到到输出设备上

image-20220130004357842

设备的分配和回收

分配考虑因素

  • 设备固有属性

    1. 独占设备

    2. 共享设备

    3. 虚拟设备

      image-20220130004747224

  • 设备分配算法

  • 设备分配中的安全性

    安全分配:为每个进程分配一个设备后就将进程阻塞,本次I/O完成的能够才能将进程唤醒。

    一个时间段内每一个进程只能使用一个设备

    优点:破坏了请求条件,不会死锁

    缺点:对于一个进程来说,CPU和I/o设备只能串行工作。

    不安全分配:进程发出I/O请求后,系统为其分配I/O设备,进程可以仅需执行,之后还可以发出新的I/O请求,只有某个请求得不到满足时才能将进程阻塞。

分配方式

  • 静态分配

    进程运行前为其分配所需的全部资源,运行结束后归还资源。

  • 动态分配

    进程运行过程中动态申请设备资源

设备分配管理中的数据结构

  • 设备控制表

image-20220130010843597

  • 通道控制表

image-20220130011007785

  • 系统设备表

image-20220130011105302

分配步骤

  1. 根据物理设备名查找SDT
  2. 根据SDT找到DCT,若设备忙碌则将进程PCB挂到等待队列中,不忙碌则将设备分配给进程
  3. 根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
  4. 根据COCT找到CHCT,若通道忙碌则将进程PCB挂到等待队列中,不忙碌则将通道分配给进程。

image-20220130011721658

缓冲区管理

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

一般情况下,更多利用的时内存为缓冲区

缓冲区作用?

image-20220130012706927

单缓冲

image-20220130013004472

平均处理一块时间为T+M

image-20220130013211142

平均处理一块时间为C+M

双缓冲

image-20220130013449258.png

image-20220130013558360

采用双缓冲,处理一个数据的平均耗时为Max(T,C+M)

使用单/双缓冲区在通信时的区别

image-20220130013901733

循环缓冲区

image-20220130013947631

缓冲池

image-20220130014121372

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值