立即学习:https://edu.csdn.net/course/play/7883/161192?utm_source=blogtoedu
3.4 设备管理
计算机系统的一个重要组成部分是I/O系统.
I/O系统包括:
- 输入\输出设备(鼠标,键盘,音箱)
- 存储功能的设备(磁盘)
- 设备控制器(显卡,声卡)
一.设备管理的概念
设备管理程序提供下述功能
- 提供和进程管理系统的接口
- 进行设备分配
- 实现设备和设备之间\设备和CPU之间的并行操作
- 进行缓冲区管理
二.I/O控制方式
(1) 程序I/O方式
(2) 中断控制I/O方式
(3) 直接存储器访问(DMA)方式
(4) I/O通道控制方式
- 字节多路通道
- 选择通道
- 成组多路通道
三.缓冲管理
(1) 单缓冲
(2) 多缓冲
(3) 循环缓冲
(4) 缓冲池(Buffer Pool)
引入缓冲区的主要原因归结为以下几点;
- 缓和CPU和I/O设备间速度不匹配的矛盾.
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 提高CPU和I/O设备之间的并行性.
(1) 单缓冲(Single Buffer)
在单缓冲情况下,每当用户进程发出一I/O请求时,OS便在主存中为之分配一缓冲区.
在字符设备输入时,缓冲区用于暂存用户输入的一行数据,在输入期间,用户进程被挂起以等待数据输入完毕;在输出时,用户进程将一行数据输入到缓冲区后,继续执行处理.当用户进程已有第二行数据输出时,如果第一行数据尚未被提取完毕,则此时用户进程应阻塞.
(2) 双缓冲(Double Buffer)
为了加快输入和输出速度,提高设备利用率,人们又引入了双缓冲区机制,也称为缓冲对换(Buffer Swapping).在设备输入时,先将数据送入第一缓冲区,装满后便转向第二缓冲区.此时OS可以从第一缓冲区移出数据,并送入用户进程.
(3) 循环缓冲区
循环缓冲有多个大小相同的缓冲区,缓冲区有三种类型:
- 用于装输入数据的空缓冲区R
- 已装满数据的缓冲区G
- 计算进程正在使用的现行工作缓冲区C
(4) 缓冲池
对于既可输入又可输出的公用缓冲池,至少应含三种类型缓冲区:
- 空缓冲区;
- 装满输入数据的缓冲区;
- 装满输出数据的缓冲区;
四.设备的分配
1.设备分配原则
- 静态分配(一次性全分配,不会发生死锁)
- 动态分配(按需分配,分配不当可能造成死锁)
2.设备分配策略
- 先请求先分配
- 优先级高者先分配