简单来说,I/O就是提供一个人际交互的通道,使得人和计算机能够进行沟通。具体来说,I/O的目的有以下两点:
(1)屏蔽输入输出设备的差异:提供一个统一的界面来屏蔽输入输出设备的差异
(2)在不同设计之间进行数据表示的转换:数据能够在不同设备之间相互转换而无需用户操心
所有的I/O设备均可以分为两个大类:块设备和字符设备。块设备是以数据块为单位存储和传输数据的输入输出设备,如磁盘、光盘、U盘等;而字符设备则是将数据按照字符为单位来存放和传输的设备,如鼠标、键盘、打印机等等。
为了完成一个繁琐的工作,人们通常将其分为更小的任务来处理。在I/O软件上自然也不会例外。I/O软件通常按照I/O功能进行分层,每一层有提供独特的功能,并与相邻的层面设计有标准界面。一般来说,I/O软件都有以下几层:
(1)用户层I/O软件
(2)设备独立的操作系统软件
(3)设备驱动程序
(4)中断服务程序
块设备
以数据块为单位存储、传输信息
特点:
传输速率较高、可寻址(随机读写)
字符设备
以字符为单位存储、传输信息
特点:
传输速率低、不可寻址
缓冲技术的引入:
其是操作系统中最早引入的技术
→ 解决CPU与I/O设备之间速度的不匹配问题:凡是数据到达和离去速度不匹配的地方均可采用缓冲技术
→ 提高CPU与I/O设备之间的并行性
→ 减少了I/O设备对CPU的中断请求次数,放宽CPU对中断响应时间的要求
1.单缓冲
2.双缓冲
3.缓冲池(多缓冲,循环缓冲):统一管理多个缓冲区,采用有界缓冲区的生产者/消费者模型对缓冲池中的缓冲区进行循环使用