I/O控制方式
外围设备和内存之间的输入/输出控制方式有四种:
- 程序直接控制方式:以字为单位,CPU轮询检查I/O设备状态,CPU与I/O设备串行工作,CPU利用率低。
- 中断驱动方式:以字为单位,通过中断驱动。
- DMA方式(直接存储器存取方式):以数据块为单位,在I/O设备和内存之间开辟的数据交换通路,仅在传送一个或多个数据块开始时需CPU干预,整块数据的传送在DMA的控制下完成。
- 通道控制方式:以一组数据块为单位,实现CPU,通道,I/O设备三者并行,CPU向I/O通道发送一条I/O指令,给出所执行通道程序的首地址和要访问的I/O设备,数据传送结束时,通道向CPU发中断请求。
通道与DMA的区别:通道是专门负责输入/输出的处理机,指令单一,与CPU共享内存,DMA方式需要CPU控制传输数据块大小,传输内存位置,而通道方式中由通道控制,每个DMA控制器对应一台设备与内存传递数据,一个通道则控制多台设备与内存数据交换。
I/O层次结构
- 用户层I/O软件:实现与用户交互接口,通过一组系统调用来获取操作系统服务。
- 设备独立性软件:执行所有设备共有操作,向用户层提供统一接口。
- 设备驱动程序:与硬件直接相关。
- 中断处理程序
- 硬件:分机械设备(设备本身)和电子设备(设备控制器)。
设备控制器:通过寄存器与CPU通信,寄存器采用两种编址方式,内存映像I/O(寄存器占用内存地址一部分)和I/O专用地址(寄存器独立编址)。
共享设备必须是可寻址,可随机访问的设备,某一时间段内共享,分配共享设备不会引起死锁,分配独占设备会。
设备映射表(DMT):建立逻辑设备与物理设备的对应关系。
高速缓存与缓冲区
- 磁盘高速缓存
利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。(逻辑上属于磁盘,物理上是内存中的盘块。)
- 一种是在内存中开辟一个单独的存储空间作为磁盘高速缓存,大小固定。
- 一种是把为利用的内存空间作为一个缓冲池。
- 缓冲区
- 单缓冲:max(C,T)+M (C处理,M取出,T冲入)
- 双缓冲:max(C+M,T)
- 循环缓冲:每个缓冲区中一个链接,指针指向下一个缓冲区,最后一个缓冲区指针指向第一个缓冲区。(in指针:指向第一个空缓冲区,out指针指向第一个满缓冲区。)
- 缓冲池:由多个系统公共的缓冲区组成,3个队列(空缓冲队列,输入队列,输出队列)和4种缓冲区(用于收容输入数据的工作缓冲区,用于提取输入数据的工作缓冲区,用于收容输出数据的工作缓冲区,用于提取输出数据的工作缓冲区)
设备分配与回收
- 独占式使用设备
- 分时式共享使用设备
- 以SPOOLing方式(假脱机技术,以空间换时间)使用外部设备
- 设备分配的数据结构
系统设备表(SDT)设备控制表(DCT)控制器控制表(COCT)通道提供服务的设备控制器表
- 设备分配方式:静态分配(在作业执行前分配,用于独占设备,不会出现死锁)和动态分配(进程需要设备时分配,可能死锁,适于共享设备独占设备);安全分配方式(每当进程发出I/O请求后就阻塞,直至I/O完成后才唤醒,CPU与I/O串行工作)和不安全分配方式(当进程请求设备被另一进程占用才阻塞,可能产生死锁)。
- 逻辑设备表(LUT):将逻辑设备名映射为物理设备名。
- SPOOLing技术(将独占设备改造成共享设备)