字符设备接口
字符设备是指数据的存取和传输是以字符为单位的设备,如键盘、打印机等。基本特征是传输速率较低、不可寻址,并且在输入/输出时通常采用中断驱动方式。
- get 和 put 操作。由于字符设备不可寻址,只能采取顺序存取方式,通常为字符设备建立一个字符缓冲区,用户程序通过 get 操作从缓冲区获取字符,通过 put 操作将字符输出到缓冲区。
- in-control 指令。字符设备类型繁多,差异甚大,因此在接口中提供一种通用的 in-control 指令来处理它们(包含了许多参数,每个参数表示一个与具体设备相关的特定功能)。
- 字符设备都属于独占设备,为此接口中还需要提供打开和关闭操作,以实现互斥共享。
块设备接口
块设备是指数据的存取和传输是以数据块为单位的设备*,典型的块设备是磁盘。基本特征是传输速率较高、可寻址。磁盘设备的 I/O 常采用 DMA 方式。
- 隐藏了磁盘的二维结构。在二维结构中,每个扇区的地址需要用磁道号和扇区号来表示。块设备接口将磁盘的所有扇区从0到n-1依次编号,这样,就将二维结构变为一种线性序列。
- 将抽象命令映射为低层操作。块设备接口支持上层发来的对文件或设备的打开、读、写和关闭等抽象命令,该接口将上述命令映射为设备能识别的较低层的具体操作。
- 内存映射接口通过内存的字节数组来访问磁盘,而不提供读/写磁盘操作。映射文件到内存的系统调用返回包含文件副本的一个虚拟内存地址。只在需要访问内存映像时,才由虚拟存储器实际调页。内存映射文件的访问如同内存读/写一样简单,极大地方便了程序员。
网络设备接口
现代操作系统都提供面向网络的功能,因此还需要提供相应的网络软件和网络通信接口,使计算机能够通过网络与网络上的其他计算机进行通信或上网浏览。
许多操作系统提供的网络 I/O 接口为网络套接字接口,套接字接口的系统调用使应用程序创建的本地套接字连接到远程应用程序创建的套接字,通过此连接发送和接收数据。