编程知识 cdmana.com

操作系统复习笔记 第十三章 I/O输入系统

  • 13.1 概述
    • 设备驱动程序:设备驱动程序为I/O子系统提供了统一设备访问接口,就像系统调用为应用程序与操作系统之间提供了统一的标准接口一样。
  • 13.2 I/O硬件
    • 设备与计算机系统的通信可以通过电缆甚至空气来传送信息。设备与计算机通信进过一个连接点(或端口),例如串行端口。如果一个或多个设备使用一组共同的线,那么这种连接则称为总线。总线(bus)是一组线和一组严格定义的可以描述在线上传输信息的协议。
    • 附:CPU和控制器之间直接打交道。 设备控制器:硬件,将CPU命令转换为信号,发给具体的外部设备
    • 控制器:用于操作端口,总线设备的一组电子器件。
    • I/O端口通常有四种寄存器,即状态寄存器,控制寄存器,数据输入寄存器与数据输出寄存器
      • 数据输入寄存器被主机读出以获取数据。
      • 数据输出寄存器被主机写入以发送数据。
      • 状态寄存器包含一些主机可读取的位(bit)。这些位指示各种状态,例如,当前任务是否完成,数据输入寄存器中是否有数据可以读取,是否出现设备故障等。
      • 控制寄存器可以被主机用来向设备发送命令或改变设备状态。
    • 13.2.1 轮询polling
      • 也称为忙等待busy wait 在循环中,不断读取状态寄存器直到忙位被清除。
    • 13.2.2 中断
      • 基本中断机制工作如下。CPU硬件有一条中断请求线(Interrupt-request line,IRL)。CPU在执行完每条指令后,都将检测IRL。当CPU检测到已经有控制器通过中断请求线发送了信号,CPU将保存当前状态并且跳转到内存固定位置的中断处理程序(interrupt-controller)。中断处理程序判断中断原因,进行必要的处理,重新恢复状态,最后执行中断返回(return from interrupt)指令以便使CPU返回中断以前的执行状态,即设备控制器通过中断请求线发送信号而引起(raise)中断,CPU获(catch)中断并分发(dispatch)到中断处理程序中,中断处理程序通过处理设备请求来清除(clear)中断。
    • 13.2.3 直接内存访问
      • 对于需要做大量传输的设备,例如磁盘驱动器,如果使用昂贵的通用处理器来观察状态位并按字节来向控制器寄存器送入数据——一个称为程序控制I/O(Programmed/O,PlO)的过程,那么就浪费了。许多计算机为了避免用PIO增加CPU的负担,将一部分任务下放给一个的专用处理器,称之为直接内存访问(direct-memory access,DMA)控制器。
  • 13.3 I/O应用接口
    • 时钟和定时器:时钟在主板,一直再运行
    • 定时器 timer计时器减少到0,发出一个时钟中断信号。
  • 13.4 I/O内核子系统
    • I/O调度 每个设备维护一个请求队列实现调度,操作系统为设备状态配备等待队列。
    • 缓冲:缓冲区是用来保存两个设备之间或在设备和应用程序之间所传输数据的内存区域。
    • 采用缓冲有三个理由:1 处理数据流的生产者和消费者之间的速度差异。2 协调传输数据大小不一致的设备 3.支持应用程序I/O复制语义。 保证要写入磁盘的数据是发生系统调用时的版本(而不是被改变了的)
    • 高速缓存是可以保留数据副本的高速存储器。 高速缓冲区副本的访问比原始数据访问更为高效。
    • 假脱机与设备预留 : 假脱机用来保存设备留出的缓冲区,这些设备(如打印机)不能接收交叉的数据流。
    • 错误处理
    • I/O保护:错误与保护息息相关。通过发出非法I/O指令,用户程序可以有意或无意地中断系统的正常操作。可使用各种机制以确保这种中断不会发生。为了防止用户执行非法I/O,定义所有I/O指令为特权指令。因此,用户不能直接发出I/O指令,它们必须通过操作系统来进行。
    • 内核数据结构 面向对象

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[种花家的奋斗兔]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1747167

Scroll to Top