第 13 章 I/O 系统
I/O 硬件
PC 总线结构
轮询(Polling)
中断
直接内存访问(DMA)
对于需要进行大量IO的设备,为了避免程序控制IO 即PIO,将一部分任务西方给了DMA控制器,在DMA开始传输时,主机向内存中写入DMA命令块。然后CPU在写入后继续干别的,DMA去自己操作内存总线,然后就可以向内存进行传输。
应用程序 I/O 接口
实现统一的 IO 接口,设备驱动提供了 API 来操控 IO 设备
- I/O 设备在许多方面有很大差异:
- 字符流或块
- 顺序访问或随机访问
- 同步或异步
- 共享或专享
- 操作速度
- 读写、只读、只写
块与字符设备
块设备:包括硬盘,一般有读写seek的命令,对其进行raw原始IO或者文件系统访问。内存映射文件访问也OK
字符设备:键盘鼠标串口,命令是get put。库函数提供具有缓冲和编辑功能的按行访问。
网络设备
时钟与定时器
非阻塞与异步 I/O
阻塞IO:进程挂起直到IO完成,很容易使用和理解,但是不能满足某些需求
非阻塞IO:IO调用立刻返回。用户接口就是,接收鼠标键盘输入,还要在屏幕上输出,放视频也是,从磁盘读帧然后显示。
异步:IO与进程同时运行。
非阻塞和异步的区别:非阻塞的read会马上返回,虽然可能读取的数据没有达到要求的,或者就没读到。异步read一定要完整执行完
内核 I/O 子系统
I/O 调度
缓冲(Buffer)
缓存(Cache)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 OE.Heart's Blog!