操作系统IO

  • Post author:
  • Post category:其他




I/O



分类和概念

把数据输入计算机和从计算机输出的设备



按特性

  1. 人机交互
  2. 存储设备
  3. 网络通信设备



按传输速率

  1. 低速
  2. 中速
  3. 高速



按信息交换单位

  1. 块设备
  2. 字符设备



I/O控制器



机械部件

用来执行具体I/O操作

如鼠标、键盘



电子部件

一般为印刷电路板

CPU无法直接控制I/O设备,需要电子部件作为中介实现CPU对设备的控制。因此电子部件的一个功能是制作I/O控制器,又称设备控制器。



I/O处理器的功能:

  1. 接收和识别CPU发出的指令
  2. 向CPU报告设备的状态
  3. 数据交换
  4. 地址识别



I/O控制器组成

I/O逻辑:负责接收和识别CPU的各种命令并向设备发出

CPU与控制器的接口:包括数据寄存器、控制寄存器、状态寄存器等,实现CPU与控制器之间的通信

控制器与设备的接口:实现控制器和设备之间的通信



I/O控制方式



程序直接控制

程序向IO模块发出读取命令,等待IO模块状态,未准备好的话会持续询问状况(类似停下来等待),等状态为准备好时读取数据继续运行

CPU需要不断轮询

实现简单,CPU利用率低



中断驱动方式

就中断

CPU利用率高

频繁中断会消耗较多的CPU时间



DMA方式

直接存储器存取,数据传送单位是块,数据流向是直接从内存到设备,不需要经过CPU。CPU只在传送一个或多个数据块的开始和结束时才干预。

CPU和IO设备并行性得到提升,但只能读写一个或多个连续的数据块



通道控制方式

通道:一种硬件,低配版CPU,可以识别并执行一系列通道指令

CPU发指令让通道进行IO处理,等全部活干完后再中断告诉CPU

过程中完全不需要CPU干预



假脱机技术

脱机技术:脱离主机的控制进行输入输出



spooling技术

就是假脱机技术

内存中运行了输入进程和输出进程,并各有一个缓冲区。在输入进程的控制下,输入缓冲区用于暂时存储从输入设备输入的数据,之后再转到输入井中。输出缓冲区暂时存储从输出井送来的数据,之后再送到输出设备上



设备的分配和回收



静态分配

进程运行前先分配全部所需资源,运行结束后归还资源



动态分配

运行过程中动态申请设备



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

  1. 设备控制表DCT:系统为每个设备配置一张DCT,用于记录设备情况
  2. 控制器控制表COCT:每个设备控制器都会有一张对应的COCT。操作系统根据COCT的信息对控制器进行操作和管理
  3. 通道控制表CHCT:每个通道都会有一张对应的CHCT。操作系统根据CHCT的信息对通道进行操作和管理
  4. 系统设备表SDT:记录系统中全部设备的情况,每个设备对应一个表目



分配步骤

  1. 根据进程请求的物理设备名(改进:设置逻辑设备名,让操作系统来建立映射)查找SDT
  2. 根据SDT找到DCT,若设备忙碌则将进程PCB挂到设备等待队列中,不忙则将设备分配给进程
  3. 根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙了则分配控制器
  4. 根据COCT找到CHCT,若通道忙则将进程PCB挂到通道等待队列中,不忙则分配给进程



缓冲区管理



缓冲区

一个存储区域,可以由专门的硬件寄存器组成,也可以利用内存作为缓冲区。使用硬件作为缓冲区成本高容量小,所以一般用内存



作用

  1. 缓和CPU与IO设备速度不匹配的矛盾
  2. 减少CPU中断频率
  3. 解决数据粒度不匹配
  4. 提高CPU与IO设备直接的并行性



单缓冲

操作系统在内存中分配一个缓冲区,当缓冲区数据为空时才能放入数据,数据满了才能读取



双缓冲

操作系统在内存中分配两个缓冲区,当缓冲区数据为空时才能放入数据,数据满了才能读取



循环缓冲区

多个大小相等的缓冲区链接成一个循环队列



缓冲池

由系统中共用的缓冲区组成



版权声明:本文为weixin_50871986原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。