五、输入/输出
1 I/O硬件原理
(1)I/O设备
大致可以分为两类:块设备和字符设备,还有些其他设备,例如时钟,显示器
(2)设备控制器
(3)内存映射I/O
每个控制器有几个寄存器用来于CPU进行通信,通过写入这些寄存器,操作系统就可以命令设备发送数据、接收数据、开启或关闭。除了这些控制寄存器外,许多设备还有一个操作系统可以读写的数据缓冲区。CPU如何与设备的控制寄存器和数据缓冲区通信?
对于内存映射I/O,硬件必须能够针对每个页面有选择性的禁用高速缓存。
(4)直接存储器存取DMA
(5)精确中断与不精确中断
2 I/O软件原理
(1)程序控制I/O
让CPU做全部工作,忙等待。在嵌入式系统中,CPU没有其他事情可做,忙等待是合理的。
(2)中断驱动I/O
CPU不在等待设备,等待期间会进行上下文切换,当设备准备好后引起一个中断,CPU切换回原工作
(3)使用DMA的I/O
本质上DMA是程序控制I/O。DMA的重大成功是将中断的次数从打印每个字符减少到打印每个缓冲区一次。
3 I/O软件层次
(1)中断处理程序
(2)设备驱动程序
为了访问设备的硬件(意味着访问设备控制器的寄存器),设备驱动程序通常必须是操作系统内核的一部分。实际上,有可能构造运行在用户空间的驱动程序,使用系统调用来读写设备寄存器。这一设计使内核与驱动程序相隔离,并且使驱动程序之间相互隔离,这样可以消除系统崩溃的一个主要源头——有问题的驱动程序以这样或那样的方式干扰内核。