操作系统IO

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设备直接的并行性

单缓冲

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

双缓冲

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

循环缓冲区

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

缓冲池

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值