LV10-03-IO模型-01-驱动中的IO模型

本文主要是驱动中的IO模型的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
Windows windows11
Ubuntu Ubuntu16.04的64位版本
VMware® Workstation 16 Pro 16.2.3 build-19376536
SecureCRT Version 8.7.2 (x64 build 2214) - 正式版-2020年5月14日
Linux开发板 华清远见 底板: FS4412_DEV_V5 核心板: FS4412 V2
u-boot 2013.01
点击查看本文参考资料
参考方向 参考原文
------
点击查看相关文件下载
文件下载链接
------

IO 指的是 Input/Output,也就是输入/输出,是应用程序对驱动设备的输入/输出操作,并非平时所指的GPIO引脚等。

一、阻塞IO

当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将应用程序对应的线程挂起,直到设备资源可以获取为止。

image-20220919055714178

二、非阻塞IO

对于非阻塞 IO,应用程序对应的线程不会挂起,它会一直轮询等待,直到设备资源可以使用,或者就直接放弃。

image-20220919060302773

三、多路复用

其实也是一种阻塞IO,典型的特点就是外部阻塞式,内部监视多路IO。

image-20220919061232895

四、信号驱动

这是一种异步通知,当数据准备好时,内核会发送一个进程会收到一个 SIGIO 信号,然后在信号处理函数中调用 I/O 操作函数处理数据。

image-20220919062042120

五、异步IO

向内核注册操作请求,内核完成操作后给进程发送发通知信号。

image-20220919062535701