操作系统笔记_第5章 I/O管理

本文详细探讨了I/O设备的分类、组成、控制方式,包括程序直接控制、中断驱动、DMA和通道控制,以及输入输出管理中的SPOOLing技术、设备分配策略和缓冲区管理。重点介绍了操作系统如何通过这些机制提高CPU效率和数据传输性能。
摘要由CSDN通过智能技术生成

5 I/O管理

5.1 I/O管理

I/O设备是可以将数据输入到计算机或者接收计算机输出数据外部设备比如鼠标、键盘、显示器、移动硬盘

分类
  • 按使用特性

    • 人机交互类外部设备:传输速度慢鼠标键盘
    • 存储设备:数据传输速度快移动硬盘
    • 网络通信设备:速度介于上两者之间调制解调器
  • 按传输速率

    • 低速设备:每秒几到几百字节鼠标键盘
    • 中速设备:每秒数千-数万字节激光打印机
    • 高速设备:每秒数千到千兆字节磁盘
  • 按信息交换单位

    • 块设备:数据传输基本单位是块, 传输速率高,可寻址
    • 字符设备:数据传输基本单位是字符或字节,传输速率慢,不可寻址,一般采用中断驱动方式
I/O设备的组成
  • 机械部件按钮显示屏等
  • 电子部件电路板:I/O控制器
I/O控制器功能
  • 接受和识别CPU发出的命令
  • 向CPU报告设备状态
  • 数据交换
  • 地址识别

Pasted image 20230807155402

I/O控制器寄存器编址方式

Pasted image 20230807155946

I/O控制方式

Pasted image 20230807164848

程序直接控制方式

Pasted image 20230807162722

轮询
Pasted image 20230807162834
特点:

  • CPU频繁介入
  • 每次读/写一个字
  • 优点:实现简单,只需要软件
  • 缺点:CPU和I/O设备只能串行
中断驱动方式

Pasted image 20230807163246

特点:

  • 每次I/O开始之前和完成之后需要CPU介入,在等待过程中CPU可以切换其它进程
  • 每次读/写一个字
  • 优点:通过中断信号,CPU利用率提升
  • 缺点:频繁中断处理消耗CPU时间
DMA方式

直接存储器存取:单位是块,不需要CPU中间介入,只有一个或者多个数据块开始和结束时才需要CPU
Pasted image 20230807163909

特点:

  • 只有一个或者多个数据块开始和结束时才需要CPU
  • 每次读/写一个或多个块连续筷
  • 优点:传输速率快,CPU利用率提升
  • 缺点:读写离散数据块时需要CPU发多条I/O指令,多次中断
通道控制方式

Pasted image 20230807164319
特点:

  • CPU在一组数据块开始或结束干预,干预频率极低
  • 每次读/写一组数据块
  • 优点:CPU、通道、I/O设备并行工作,利用率高
  • 缺点:实现复杂,需要专门的通道硬件
I/O层次结构
软件的层次结构

Pasted image 20230807165031

用户层:实现与用户交互的接口,提供给用户与I/O操作相关的库函数将用户请求翻译成格式化I/O请求,并通过系统调用请求操作系统内核
设备独立性软件设备无关性软件,与设备硬件特性无关的功能都在此实现
向上层提供同一的调用接口
设备保护
差错处理
设备分配与回收
数据缓冲区处理
建立逻辑设备名到物理设备名的映射关系,根据设备类别选择调用相应的驱动程序

设备驱动程序:负责对硬件具体控制,将上层命令转化为特定设备的操作如设置设备寄存器、检查设备状态
中断处理程序:I/O 任务完成时,I/O控制器发中断信号,系统根据中断信号类型找到相应中断处理程序执行

输入输出管理
输入输出应用程序接口

字符设备接口
get/put系统调用:向字符设备读/写一个字符
块设备接口
read/write系统调用: .向块设备的读写指针位置读/写多个字符;
seek系统调用:修改读写指针位置
网络设备接口网络套接字(socket)接口
socket系统调用:创建一个网络套接字,需指明网络协议(TCP? UDP? )
bind: 将套接字绑定到某个本地“端口
connect: 将套接字连接到远程地址
read/write: 从套接字读/写数据

阻塞I/O :应用程序发出I/O 系统调用,进程需要转化为阻塞态等待
非阻塞I/O :应用程序发出I/O系统调用,系统调用后可迅速返回,进程无需阻塞等待

设备驱动程序接口

操作系统规定好设备驱动程序接口标准,各厂商必须按要求开发设备驱动程序

5.2 I/O系统I/O核心子系统

实现中间三层也就是设备独立性软件、设备驱动程序、中断处理程序的功能

功能:
1.假脱机技术SPOOLing技术
脱机技术:程序和数据的输入输出在脱离主机的情况下进行
假脱机就是用软件方式模拟脱机技术
2.I/O调度:用某种算法确定处理各I/O请求的顺序
3.设备保护:设备视为文件、实现文件保护设置访问权限

假脱机技术SPOOLing技术

脱机技术脱机输入/输出技术:不适用CPU而使用外围控制机先处理数据纸袋机->磁带,慢速到快速,从而完成数据输入输出

假脱机技术实现方式:使用软件模拟脱机技术

Pasted image 20230807193529

类似流水线

设备的分配与回收
  • 设备分配考虑因素

    • 设备固有属性:独占设备单进程使用、共享设备多进程同时使用、虚拟设备用SPOOLing技术将独占设备改造为虚拟共享设备
    • 设备分配算法:
      • 先来先服务、短任务优先等
    • 设备分配中的安全性
      • 安全分配方式:进程分配一个设备后就阻塞进程
      • 不安全分配方式:进程发出I/O请求后,系统为其分配I/0设备,进程可继续执行,继续发出新的1/O请求。只有某个I/O请求得不到满足时才将进程阻塞。

        可能死锁

  • 静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源

  • 动态分配:进程运行过程中动态申请设备资源

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

设备、控制器、通道之间的关系:一个通道可控制多个控制器,一个控制器可控制多个设备
Pasted image 20230807195421

设备控制表DCT
系统为每个设备配置一张

设备控制表DCT解释
设备类型如:打印机/扫描仪/键盘
设备标识符即物理设备名,系统中的每个设备的物理设备名唯一
设备状态忙碌/空闲/故障. …
指向控制器表的指针一每个设备由一个控制器控制,该指针可找到相应控制器的信息
重复执行次数或时间当重复执行多次I/O操作后仍不成功,才认为此次I/0失败
设备队列的队首指针指向正在等待该设备的进程队列( 由进程PCB组成队列)

控制器控制表(COCT):每个设备控制器都会对应一张COCT。操作系统根据COCT的信息对控制器进行操作和管理。

控制器控制表(COCT)
控制器标识符各个控制器的唯一ID
控制器状态忙碌/空闲/故障…
指向通道表的指针每个控制器由一个通道控制,该指针可找到相应通道的信息
控制器队列的队首指针 控制器队列的队尾指针指向正在等待该控制器的进程队列(由进程PCB组成队列)
设备队列的队首指针指向正在等待该设备的进程队列( 由进程PCB组成队列)
通道控制表(CHCT):每个通道都会对应一张CHCT。操作系统根据CHCT的信息对通道进行操作和管理。
通道控制表( CHCT)
通道标识符各个通道的唯一ID
通道状态忙碌/空闲/故障…
与通道连接的控制器表首址可通过该指针找到该通道管理的所有控制器相关信息(COCT)
通道队列的队首指针 通道队列的队尾指针指向正在等待该通道的进程队列(由进程PCB组成队列)

系统设备表—SDT
记录了系统中全部设备的情况
Pasted image 20230807204053

设备分配的步骤
  1. 根据进程请求的物理设备名查找SDT (注:物理设备名是进程请求分配设备时提供的参数)
  2. 查找SDT,找到用户进程指定类型的、并且空闲的设备,将其分配给该进程。操作系统在逻辑设备表(LUT)中新增一个表项。
  3. 根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
  4. 根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。

设备、控制器、通道都分配成功才能使用

  • 改进:建立逻辑设备表LUT,从而建立物理设备名与逻辑设备名的映射,进程调用时提供逻辑设备名
    • 整个系统只有一张LUT:各用户所用的逻辑设备名不允许重复,适用于单用户操作系统
    • 每个用户一张LUT:不同用户的逻辑设备名可重复,适用于多用户操作系统
    • 某用户进程第一次使用设备时使用逻辑设备名向操作系统发出请求,操作系统根据用户进程指定的设备类型(逻辑设备名)查找系统设备表,找到一个空闲设备分配给进程,并在LUT中增加相应表项。
    • 如果之后用户进程再次通过相同的逻辑设备名请求使用设备,则操作系统通过LUT表即可知道用户进程实际要使用的是哪个物理设备了,并且也能知道该设备的驱动程序入口地址。
缓冲区管理

专门的存储区域、可以是专门的硬件寄存器成本高,容量小,可以是内存一般的方式

作用

  1. 缓和CPU与I/O设备之间速度不匹配的矛盾
  2. 减少对CPU的中断频率,放宽对CPU中断相应时间的限制
  3. 解决数据粒度不匹配块和字符的问题
  4. 提高CPU与I/O设备之间的并行性
单缓冲

在主存中分配个大小等于块的缓冲区

缓冲区非空时只能传出数据,为空时可以传入数据,但只有充满才能传出

Pasted image 20230807210035
根据输入缓冲区时间T缓冲区输出时间M大小关系,处理一块缓冲区用时max(T,M)+C

双缓冲

在主存中分配个大小等于块的缓冲区
Pasted image 20230807210300
平均耗时max(T,C+M)

单缓冲和双缓冲通信时的区别:
两台机器通信时,单缓冲只能单工通信,双缓冲可以全双工通信

循环缓冲区

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

Pasted image 20230808095045

缓冲池

由系统中公用的缓冲区组成
其按使用状况可以分为:空缓冲队列、装满输入数据的缓冲队列输入队列、装满输出数据的缓冲队列输出队列
按实际运算中的功能分为:收容输入数据的工作缓冲区、收入输出数据的工作缓冲区、提取输入数据的工作缓冲区、提取输出数据的工作缓冲区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值