向勇 陈渝 李国良 任炬
2024年秋季
课程幻灯片列表
包含上述外设的嵌入式开发板
字符设备:如GPIO(General Purpose Input/Output), 键盘/鼠标, 串口等
GPIO LED light
字符设备:如GPIO, 键盘/鼠标, 串口等
键盘
字符设备:如GPIO, 键盘/鼠标, 串口等 UART(Universal Asynchronous Receiver/Transmitter) 串口通信
块设备:如: 磁盘驱动器、磁带驱动器、光驱等 磁盘
网络设备:如ethernet、wifi、bluetooth 等 网卡
字符设备
块设备
网络设备
程序控制 I/O(PIO, Programmed I/O)
中断传输方式
DMA 传输方式
基于轮询的抽象设备接口:状态 命令 数据
基于中断的抽象设备接口:状态 命令 数据 中断
基于文件的 I/O 设备抽象
基于流的 I/O 设备抽象
基于virtio的 I/O 设备抽象
当一个用户进程发出一个 read I/O 系统调用时,主要经历两个阶段:
基于阻塞 I/O(blocking I/O)模型的文件读系统调用–read 的执行过程是:
基于非阻塞 IO(non-blocking I/O)模型的文件读系统调用–read 的执行过程:
所以,在非阻塞式 I/O 的特点是用户进程不会被内核阻塞,而是需要不断的主动询问内核所需数据准备好了没有。
多路复用 I/O(I/O multiplexing)的文件读系统调用–read 的执行过程:
对应的 I/O 系统调用是 select 和 epoll 等,可有效处理大量并发的I/O操作;
通过 select 或 epoll 系统调用,用户进程会被阻塞;当某个文件句柄或 socket 有数据到达了,select 或 epoll 系统调用就会返回到用户进程,用户进程再调用 read 系统调用,让内核将数据从内核的I/O 缓冲区拷贝到用户进程的 buffer 中。
此模型的特点是,采用了回调机制,这样开发和调试应用的难度加大。