Untitled

I/O 硬件

PC 总线结构

PC 总线结构

轮询(Polling)

中断

直接内存访问(DMA)

对于需要进行大量IO的设备,为了避免程序控制IO 即PIO,将一部分任务西方给了DMA控制器,在DMA开始传输时,主机向内存中写入DMA命令块。然后CPU在写入后继续干别的,DMA去自己操作内存总线,然后就可以向内存进行传输。

应用程序 I/O 接口

实现统一的 IO 接口,设备驱动提供了 API 来操控 IO 设备

Untitled

  • I/O 设备在许多方面有很大差异:
    • 字符流或块
    • 顺序访问或随机访问
    • 同步或异步
    • 共享或专享
    • 操作速度
    • 读写、只读、只写

Untitled

块与字符设备

块设备:包括硬盘,一般有读写seek的命令,对其进行raw原始IO或者文件系统访问。内存映射文件访问也OK

字符设备:键盘鼠标串口,命令是get put。库函数提供具有缓冲和编辑功能的按行访问。

网络设备

时钟与定时器

非阻塞与异步 I/O

阻塞IO:进程挂起直到IO完成,很容易使用和理解,但是不能满足某些需求

非阻塞IO:IO调用立刻返回。用户接口就是,接收鼠标键盘输入,还要在屏幕上输出,放视频也是,从磁盘读帧然后显示。
异步:IO与进程同时运行。

非阻塞和异步的区别:非阻塞的read会马上返回,虽然可能读取的数据没有达到要求的,或者就没读到。异步read一定要完整执行完

内核 I/O 子系统

I/O 调度

缓冲(Buffer)

缓存(Cache)