I/O层次结构
- 用户层I/O软件: 实现与用户的交互,用户可以直接调用此层提供的接口、函数等;
- 设备独立性软件: 用于实现用户程序和设备驱动器的统一接口、设备命名、设备保护以及设备分配和释放等,同时为数据的传输提供必要的空间
- 设备驱动程序: 与硬件直接相关,用于具体实现系统施加给硬件设备的指令
- 中断处理程序: 保护被中断的CPU环境,转入中断处理程序,处理,返回恢复现场
中断和陷入
中断
指CPU对I/O设备发来的中断信号的一种响应。CPU保护暂停当前进程,转而去处理引发中断的进程。执行完后,再返回到原进程,继续执行。I/O设备可以是字符设备(键盘),块设备(磁盘)或通信设备(网络)等。由于中断是外部造成的,所以又叫外中断。
陷入
陷入是由CPU进程内部事件引发的中断,因此叫陷入或内中断。其产生的原因往往是由于进程本身出现运行时异常。
中断向量表和中断优先级
中断向量表
- 用于记录相应中断处理程序入口地址的映射表。
- 表中有为中断类型分配的中断号和相对应的中断处理程序的入口地址。
- 当中断来临时,由中断控制器确定中断号,再到表中寻找程序。
中断优先级
- 对于并发的中断请求,必须要给出合理的中断顺序,比如键盘中断和磁盘中断谁更重要等,要给出解决中断的优先级。
中断处理程序(Interrupt Handlers)
操作系统需完成如下复杂的任务:
- 保存没有被中断硬件保存的所有寄存器(PSW)
- 为中断服务过程设置上下文
- 为中断服务过程设置堆栈
- 应答中断控制器
- 将寄存器从被保存的地方复制到进程表
- 运行中断服务过程
- 选择下一次运行哪个进程
- 为下个进程设置MMU上下文
- 装入新进程的寄存器
- 运行新进程
对I/O设备的控制方式
- 程序控制 I/O
- 中断驱动I/O
- 直接存储器访问(DMA)
- I/O通道控制方式
前两种是以字节为单位进行数据传递,后两种是以数据块为单位进行数据传递。
程序控制I/O
让CPU做所有工作 打印一个字符串的步骤
中断驱动I/O
使用中断驱动I/O 将一个字符串写到打印机. (a) 当打印系统调用发出时所执行的代码. (b) 打印机的中断服务过程.
使用DMA的I/O
使用DMA中打印字符串. (a) 当打印系统调用发出时所执行的代码. (b) 中断服务过程.
I/O通道方式
- I/O通道方式是DMA方式的发展,可进一步减少CPU的干预。
- 把对一个数据块的读(或写)为单位的干预减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备三者的并行操作。
- 通道是通过执行通道程序,并与设备控制器共同实现对I/O设备的控制的。
- 通道分为选择通道、字节多路通道和数组多路通道三种类型
假脱机操作 SPOOLing(Simultaneaus Periphernal Operating On Line)
SPOOLing系统的组成
SPOOLing系统的特点
- 提高了I/O的速度。
- 将独占设备改造为共享设备。
- 实现了虚拟设备功能。
|