硬件结构
设备IO是通过嵌套的三层结构实现的:设备端口→接口→控制器。
统一的数据和指令通过 总线/Bus 发送到 Port,经过 interface 转化为 controller 特定语言的指令,再由 controller 转化为控制信号驱动设备工作,最后将运行状态原路返回到 Bus。
- interface 分为通用的和特定的
- 像是键盘鼠标、显卡、网卡、硬盘这些基础PC硬件设备使用的是 custom interface
- 打印机、扫描仪、USB设备这些外围设备往往使用 general interface
数据传输方式
经过 CPU 和不经过 CPU(DMA)两种方式:
- CPU 方式:通过中断,CPU执行设备IO相关程序,IO完成之后再继续先前的程序。
- 对于慢速的IO(s.g. 磁盘IO)来说不可接受,因为CPU要等待太长时间期间无法运行其他进程。
- DMA 方式:通过 DMA controller 单独调度内存和设备之间的数据交流,期间CPU可以执行其他程序。
设备文件I/O
设备文件根据其IO特性分为两种 Type:
- 块设备:一次IO传输固定大小的块,随机访问,e.g. disk
- 字符设备:一次IO传输特定数目的字符(根据具体设备不同而不同),顺序访问,e.g. printer
<aside>
🗣 网络设备不是基于文件系统而是基于套接字
</aside>