IO管理
从软件角度:
应用程序
应用编程接口
文件管理
I/O设备管理(逻辑I/O(设备分配/回收),设备驱动程序/中断服务程序)
硬件接口
设备控制器(控制寄存器/状态寄存器/数据寄存器)
I/O端口地址:
(1)内存映像编址
不允许高速缓冲
(2)I/O独立编址
设备分类
按数组组织分类:
按用途:存储/传输/人机交互
按资源分配:独占设备/共享设备/虚设备
I/O控制技术
程序控制I/O
忙等
轮询:设备驱动程序轮询状态寄存器
中断驱动方式
不忙等:状态记录在设备记录表中,CPU继续其他操作
设备完成工作:中断
DMA方式
DMA控制器:
CR/DR/DC/MAR
CPU只干预IO开始和结束
后续数据读写无需CPU
适用于高速设备
但每个设备一个DMA控制器
DMA与中断
每个数据完成后中断/成批数据完成后中断
数据传送由CPU控制需要保存和恢复现场/数据传序不需要CPU干预,开始和结束需要
异常事件处理/数据块传输
I/O通道方式
进一步减少CPU干预
专门负责IO处理器,有自己的指令体系---可较为复杂的IO控制
一个通道程序(由操作系统构造)----多组IO
通道种类:字节多路通道、数组选择通道、数组多路通道**
DMA与IO通道
DMA数据传送由CPU控制
通道有自己的指令和程序,具有更强的独立处理能力
一个通道可控制多种设备/DMA寄存器控制一台或少数几台
I/O软件设计
分层设计
设备独立性
逻辑设备/物理设备
设备分配灵活/易于IO重定向
逻辑设备表(LUT)
逻辑设备名/物理设备名/设备驱动程序入口地址
LUT设置:整个系统一张(多用户不好)/每个用户一张
设备驱动程序的组成
自动配置和初始化子程序
IO操作子程序
中断服务子程序
驱动程序的接口:驱动程序初始化函数/卸载/申请设备/释放设备 /I.O操作函数/中断处理函数
缓冲技术
提高外设利用率
基本模型
用户进程 M T
(工作区)<-------------------缓冲区<------------------I/O设备
处理(C)
单缓冲
I/O设备-->输出(T)缓冲区
用户进程处理(工作区)(C)
缓冲区-->工作区
MAX(C,T)+M
双缓冲
CPU与外设都可以连续处理而无需等待对方
MAX(C,T)
环形缓冲
输入进程不断向空缓冲中输入数据
计算进程从中提取数据
空缓冲区(R)/已装满数据缓冲区(G)/正在使用(C)
Nextg Nexti Current
缓冲池
非专用缓冲
空缓冲/输入缓冲/输出缓冲
提取输入(计算进程)/收容输入(输入进程,提取空缓冲区)/提取输出/收容输出
设备分配
设备控制表(DCT)
控制器控制表(COCT)---DMA
通道控制表(CHCT)---I/O通道
系统设备表(SDT)
SDT(DCT指针/DCT信息)------DCT(COCT指针/设备队列队首指针/设备状态)-----COCT(CHCT)