专栏名称: Linux爱好者
伯乐在线旗下账号,「Linux爱好者」专注分享 Linux/Unix 相关内容,包括:工具资源、使用技巧、课程书籍等。
今天看啥  ›  专栏  ›  Linux爱好者

一顿饭的事儿,搞懂 Linux 5 种 IO 模型

Linux爱好者  · 公众号  · linux  · 2024-06-28 11:50
Linux里有五种IO模型:阻塞IO、非阻塞IO、多路复用IO、信号驱动式IO和异步IO,我发现这五种IO模型,其实能和吃饭这件事关联起来。 阻塞IO(Blocking I/O) 阻塞IO是最常见的IO模型。当发起一个IO操作时,比如读取数据,系统会调用read()函数。如果请求的数据没有准备好,此时进程会被挂起(blocked),进入等待状态。直到数据准备好,而且复制到应用进程的缓冲区,这时候才会返回。从调用到返回,整个时间段都是阻塞的,所以被称为阻塞IO。阻塞IO就像是手机没电的时候,去饭馆吃饭,我点完菜,只能等着厨师做好,服务员端上来,我才能愉快干饭。这段时间,我就只能坐在座位上干等。 非阻塞IO(Non-Blocking I/O) 阻塞IO,还是比较浪费资源的,那么非阻塞IO就来了。所谓非阻塞IO,是在调用IO操作时,如果缓冲区没有数据的话,直接返回一个错误码。 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照