今天看啥  ›  专栏  ›  CPP开发者

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

CPP开发者  · 公众号  · 互联网安全 科技自媒体  · 2024-06-20 08:57
    

主要观点总结

本文将Linux中的五种IO模型(阻塞IO、非阻塞IO、多路复用IO、信号驱动式IO和异步IO)与吃饭的场景进行类比,以便更好地理解和区分这些IO模型。

关键观点总结

关键观点1: 阻塞IO(Blocking I/O)

当发起IO操作时,如果数据未准备好,进程会被挂起,直到数据准备好并复制到位。类似于在餐厅等待厨师制作食物的过程。

关键观点2: 非阻塞IO(Non-Blocking I/O)

在调用IO操作时,即使数据未准备好,也不会阻塞进程,进程可以继续执行其他任务。类似于在快餐店等待食物的过程中可以玩手机。

关键观点3: 多路复用IO(I/O Multiplexing)

一个进程可以同时监控多个文件描述符的状态变化,当某个文件描述符就绪时,进行数据传输。类似于在自助餐选择多个餐区的食物,可以并行处理多个任务。

关键观点4: 信号驱动式IO(Signal-Driven I/O)

进程告诉内核数据准备好时发送信号,进程继续执行其他任务,收到信号后进行数据传输。类似于在外带餐厅等待食物,服务员通知取餐。

关键观点5: 异步IO(Asynchronous I/O)

发起IO操作后,系统立即返回,数据传输在后台进行,完成后通知进程。类似于在线点餐后,可以执行其他任务,等待送餐。


免责声明

免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址:访问原文地址
总结与预览地址:访问总结与预览
推荐产品:   推荐产品
文章地址: 访问文章快照