作为魔术师的操作系统,提供一个统一的界面屏蔽掉输入输出设备的差异。
作为管理者的操作系统,管理输入输出设备,独享、共享、缓存等。
分为:
- 块设备:以块为单位传输数据
- 字符设备:以字节为单位传输数据
许多设备都有设备控制器,操作系统不与设备直接打交道,而是与设备控制器打交道。
根据CPU与设备控制器沟通方式与内存的关系,分为:
- 专用通道IO:IO与内存完全脱离,每个控制器的寄存器赋予一个IO端口。IO端口的地址与内存地址无关。访问IO端口需要通过专用的IO指令。
- 内存映射IO:将控制器的寄存器映射到内存地址上,和访问内存一样访问控制器。
- 复合IO:控制器的缓冲区映射到内存地址,控制器的寄存器通过IO端口访问。
根据IO过程中CPU参与程度分:
- 忙等待
- DMA:CPU将输入输出请求交个DMA控制器后,就去干别的。DMA控制器控制IO过程,传输完毕通过中断通知CPU。
IO过程很复杂,通常IO功能按层组织,每层提供独特的功能,与相邻层有标准的界面:
- 用户层IO软件
- 设备独立的操作系统软件:屏蔽设备的区别,对上层提供统一的IO操作界面。
- 设备驱动程序:直接与设备控制器交互。
- 中断服务程序:负责相应设备的中断,将中断交给设备驱动程序处理。
———————————————————————————————————————————
欢迎关注我的微博:大雄_RE。专注软件逆向,分享最新的好文章、好工具,追踪行业大佬的研究成果。