操作系统概念:
1. 总述
2. 进程管理
3. 内存管理
4. 文件管理
5. IO管理
将数据输入/输出的计算机外部设备

机械部件+电子部件
I/O控制器(设备控制器)
CPU无法直接控制设备的机械不见,需要电子部件作为中介
接受和识别CPU发出的命令
I/O控制器中的控制寄存器,存放命令与参数
向CPU报告设备状态
I/O控制器中的状态寄存器:记录I/O设备的当前状态
数据交互
I/O控制器中会设置相应的数据寄存器:
输出时,数据寄存器用于暂存CPU发来的数据;之后控制器传送给设备
输入时,暂存设备发来的数据。之后CPU从数据寄存器中取走数据
地址识别
类似于内存地址,为了区分设备控制器中的寄存器,需要给每个寄存器设置地址


CPU不断查询IO控制器中的 状态寄存器 ,在等待IO完成的过程中CPU需要不断轮询检查
以读操作为例
数据传送单位:一个字
数据流向:
优点:实现简单
缺点:CPU和IO设备只能串行工作,长期处于忙等状态,CPU利用率低
在CPU发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,设备控制器向CPU发出一个中断信号,CPU检测到中断信号,保存当前进程的运行环境,转去执行中断处理程序处理该中断。
- 处理中断的过程:CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入主存。
中断处理完成后,CPU恢复等待I/O的进程的运行环境,继续执行
每次读/写一个字
中断的响应是在每个指令周期的末尾
数据流向:
优点
缺点
直接存储器存取,用于块设备的I/O控制
基本传送单位是块
数据流向
读操作:I/O设备->内存
写操作:内存->I/O设备
所传送的数据是从设备直接送入内存,数据通路中不经过CPU
仅在传送一个或多个数据块的开始或结束时,才需要CPU干预,整块数据的传送实在DMA控制器的控制下完成的

CPU接收到I/O设备的DMA请求时,会给I/O控制器发出一条命令,启动DMA控制器,然后继续做其它工作
DMA控制器直接与存储器交互,传送整个数据块到DR。当数据传送完成后,DMA控制器发送一个中断信号给CPU,将DR中的数据转存到MAR指出的内存空间或者
中断驱动方式在每个数据需要传输时,中断CPU。DMA方式则是在要求传送的一批数据全部传送结束才中断CPU;
中断驱动方式的数据传送是在中断处理时由CPU控制完成;DMA控制方式则是在DMA控制器的控制下完成
若要读/写多个离散存储的数据块,或将数据分别写到不同的内存区域,CPU需要发出多条I/O指令,需要多次中断处理才能完成
通道指专门负责输入输出的处理机
通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求CPU干预
每次读/写以一组数据块
优点:CPU、通道、I/O设备可并行工作,资源利用率很高

实现与用户的接口:将用户请求翻译成格式化IO请求,通过 系统调用 请求内核服务
向上层提供库函数
将一台物理设备逻辑上虚拟成多台设备,可将独占式设备改造成共享设备
批处理阶段引入了 脱机输入/输出技术
用软件的方式模拟脱机技术,从磁盘I/O的速度远比向I/O外设的速度快

井:在磁盘上开辟两个存储区域,用于I/O设备数据的输入与输出
输入井:模拟脱机输入时的 辅存 ,用于收容I/O设备输入的数据
输出井:模拟脱机输出时的 辅存 ,用于收容用户进程输出的数据
实现SPOOLing技术,必须有 多道程序设计的支持
输入进程:模拟脱机输入中的 外围控制机
输出进程:模拟脱机输出时的 外围控制机
输入缓冲区:在输入进程的控制下,暂存从设备中输入的数据,之后转存到 输入井 中
输出缓冲区:在输出进程的控制下,暂存从 输出井 中送来的数据,之后传送到 输出设备 上
当多个用户进程提出输出打印的请求时,系统会答应请求,但并不是真正把分配打印机,由脱机管理进程为每个进程做两件事
用户程序与设备驱动器的统一接口
为每个用户创建一张逻辑设备表,多用户可重名
如:
| 逻辑设备名 | 物理设备名 | 驱动程序入口地址 |
|---|---|---|
| /dev/打印机1 | 3 | 1024 |
| /dev/打印机2 | 5 | 2046 |
| … | … | … |
设备被看做特殊文件,不同用户对设备访问权限不同
独占设备
共享设备
虚拟设备
安全分配方式
为一个进程分配一个设备后将进入阻塞状态,本次I/O完成后将进程唤醒
优点:破坏了 “请求并保持” ,不会造成死锁
缺点:对一个进程来说,CPU和IO只能串行工作
不安全分配
为一个进程分配设备后,进程继续执行,可以发出IO请求;IO不满足时,才阻塞
优点:效率高;计算任务和IO任务并行处理
缺点:有可能发生死锁
静态分配:进程运行前全部分配,结束后全部归还
动态分配
一个通道可控制多个设备控制器,一个设备控制器可控制多个设备

记录系统中全部设备的情况

每个设备一张设备控制表

每个设备控制器一张控制器控制表

每个通道一张通道控制表
OS根据通道控制表对通道进行操作

设备及其控制器及通道都分配成功才算成功
缺点:
物理设备名 ,底层细节对用户不透明,不方便编程建立 逻辑设备名与物理设备名 的映射机制,用户编程使用的逻辑设备名(设备类型)

将内存作为缓冲区,屏蔽设备间数据交互的 单位大小和传输速度 的差异
设备独立性 的缓冲区管理就是组织管理好这些缓冲区
磁盘高速缓存:逻辑上属于磁盘,物理上是主流在内存中的盘块

输出时
一个缓冲区大小等于一个块大小
T>C
初始状态:工作区满,缓冲区空
故CPU处理数据,耗时C,同时块设备将数据读入到缓冲区耗时T。
由于T>C,故 CPU 处理完数据后暂时不能将下一块数据传送到工作区,必须 等待缓冲区中冲满数据

此时处理一块数据的 平均用时 = T + M 平均用时=T+M 平均用时=T+M
T
初始状态:工作区满,缓冲区空
当 缓冲区 冲满数据后,必须 等待 工作区取走数据才能继续继续冲入数据

此时处理一块数据的 平均用时 = C + M 平均用时=C+M 平均用时=C+M
单缓冲区间的通信

在主存中为其分配两个缓冲区
初始状态:工作区空,缓冲区1满,缓冲区2空
处理一个数据块平均耗时=MAX{T,C+M}
T>C+M

每处理一个数据块 平均耗时 = T 平均耗时=T 平均耗时=T
T

设备输入数据块的速度要比处理机处理数据块的速度快,每处理一个数据块 平均耗时 = C + M 平均耗时=C+M 平均耗时=C+M
双缓冲区机器间的通信

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


缓冲队列
四个区
从 空缓冲队列 中取出一块作为 收容输入数据的工作区(hin) ,冲满数据后将缓冲区放入 输入队列 队尾

从输入队列中取得一块充满数据的缓冲区作为 提取数据的工作缓冲区(sin)
缓冲区读完后,挂到空缓冲队列

从空缓冲队列中取出一块作为 收容输出数据的工作缓冲区(hout) ,缓冲区冲满后挂到输出队列队尾

从输出队列中取得一块冲满的 输出数据的工作区(sout)

用某种算法确定处理IO请求的顺序
如:磁盘调度
不同设备内部硬件特性不同
- 厂家需要提供与设备对应的驱动程序
- 每类设备一个设备驱动程序
功能
设备驱动程序以一个独立进程存在
CPU只需执行设备对应的驱动程序,完成设置 设备寄存器 ,检查设备的工作状态
IO任务完成时,IO控制器会发出一个中断信号,系统根据中断信号类型找到对应的中断处理程序