用户层I/O软件
实现与用户交互的接口,用户可直接调用在用户层提供的、与I/O操作有关的库函数,对设备进行操作。
设备独立性软件
用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护及设备分配与释放等,同时为设备管理和数据传送提供必要的存储空间。
设备独立性软件的主要功能可分为以下两个方面:
1) 执行所有设备的公共操作。包括对设备的分配与回收;将逻辑名映射成物理设备名使;对设备进行保护,禁止用户直接访问设备;缓存管理;差错控制;提供独立于设备的大小统一的逻辑块,屏蔽设备之间信息交换单位大小和传输速率的差异。
2)向用户层提供统一的接口。无论何种设备,它们向用户所提供的接口应是相同的。例如,对各种设备的读/写操作,在应用程序中都统一使用read/write命令等。
设备驱动程序
与硬件相关,负责具体实现系统对设备发出的操作命令,驱动I/O设备工作的驱动程序。
通常,每类设备配置一个驱动程序,它是I/O进程与设备控制器之间的通信程序,常以进程形式存在。
用于接收上层软件发来的抽象I/O要求,如read和write命令,转为具体要求后,发送给设备控制器,控制I/O操作工作;它也将由设备控制器发来的信号传送给上层软件,从而为I/O内核子系统隐藏设备控制器之间的差异。
中断处理程序
硬件设备
I/O设备通常包括一个机械部件和一个电子部件。电子设备称为设备控制器(或适配器),机械部件则是设备本身。