IO设备:为了合理的兼顾用户需求与IO管理,对于IO设备以及系统的另外一些硬件管理,也会提出一些要求。
1,IO的层次结构:(软件-硬件)用户IO应用软件-设备独立性软件-设备驱动程序-中断处理程序-设备控制器。
2,在以上的层次结构中需要注意的有:用户IO应用软件与设备独立性软件之间有一个IO系统接口。中断处理程序与设备控制器之间有一个RW/HW接口。
3,IO系统接口按照速率分:块设备接口,流设备接口,网络通信接口。
4,设备控制器:CPU与控制器接口,设备与控制器接口,IO逻辑。
5,IO的特性:(1)按照功能分配:IN/OUT (2)按照传输类型分配:块,字符,网络传输。
6,对IO传输的控制方式:
使用轮询的可编程IO:在控制器里的数据寄存器设置一位BUSY位来表示用户输入或者输出的状态,CPU需要不断地访问BUSY的值以确定工作。
使用中断的可编程IO:使用控制器采用中断的方式为CPU汇报IO工作的开头与结尾(对中断下面会有补充)。
直接存储器访问:有DMA控制器(CR位表示忙闲,MAR寄存器记录数据物理起始地址,DR寄存器暂时存放数据,DC寄存器计数)接管工作,整个工作结束后(DC记录的数据大小等于用户调度的数据大小时),通知CPU检查工作成果,有问题则重新进行。
IO通道(一类为独立完成特殊指令而存在的硬件设备,由CPU给出通道程序):全程由IO通道接管工作。
7,这里我们不得说明采用IO通道的方式控制IO传输可能产生“瓶颈现象”从而导致饥饿。通常采用多路互通的方式减少此类现象。
8,为了更好的管理系统中的部分硬件与IO设备,相应的建立可以管理它们的数据结构:
SDT(系统设备表):设备类名+设备标识符+DCT+驱动程序入口地址。
DCT(设备控制表):记录设备忙闲状态,含有COCT的队首指针地址。
COCT(控制器控制表):记录控制器忙闲状态,含有CHCT的队首指针地址。
CHCT(IO通道控制表):记录IO管道忙闲状态,含有COCT的队首指针地址。
9,那么问题来了,系统中大多数IO设备属于独占性设备,当给出的物理地址的设备已经占用时,用户就需要给出未被使用的设备物理地址,对用户来说无疑不可能。逻辑设备表LRT的引入解决了这个问题,同时保证了设备无关性与IO重定向。
10,在IO输入与输出的过程中,IO速率与处理机速率巨大的差距也是当前需要解决的问题之一:如果因为这段时间处理机都在等待IO输入结束,无疑是降低了处理机的并行性与吞吐效率。