I-O软件层次结构
用户层软件
设备独立性软件
设备独立性软件又称设备无关性软件,与设备的硬件特性无关的功能几乎都在这一层实现
主要实现的功能:
向上层提供统一的调用接口(如read/write系统调用)
设备的保护,原理类似于文件保护,设备被看作是一种特殊的文件,不同用户对各个文件的访问权限是不一样的,同理,对设备的访问权限也不一样
差错处理:设备独立性软件需要对一些设备的错误进行处理
设备的分配与回收
数据缓冲区管理,可以通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异
建立逻辑设备名到物理设备名的映射关系,根据设备类型选择调用相应的驱动程序
为什么不同的I/O设备需要有不同的驱动程序处理?
各式各样的设备,外形不同,其内部的电子部件(I/O控制器)也有可能不同,不同设备的内部硬件特性也不同,这些特性只有厂家才知道,因此厂家需提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列,来完成设置设备寄存器,检查设备状态等工作
设备驱动程序
驱动程序一般会以一个独立进程的方式存在
⭐️直接涉及到硬件具体细节、且与中断无关的操作肯定是在设备驱动程序层完成的;没有涉及硬件的、对各种设备都需要进行的管理工作都是在设备独立性软件层完成的
中断处理程序
当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行,中断处理程序的处理流程如下:
⭐️设备独立性软件和用户层软件都不会和硬件打交道,设备驱动程序和中断处理程序会和硬件打交道
硬件
执行I/O操作,有机械部件、电子部件组成
I/O核心子系统的功能
用户层软件实现:假脱机技术(SPOOLing技术)
假脱机技术(SPOOLing技术)需要请求“磁盘设备”的设备独立性软件的服务,因此一般来说假脱机技术是在用户层软件实现的
设备独立性软件实现:I/O调度、设备保护、设备分配与回收、缓冲区管理(缓冲与高速缓存)