首页 > 其他分享 >多路复用IO模型和非阻塞IO模型的区别?

多路复用IO模型和非阻塞IO模型的区别?

时间:2023-05-19 10:36:12浏览次数:48  
标签:调用 多路复用 模型 阻塞 应用程序 内核 IO

常见的Linux IO模型:
阻塞IO模型:当应用程序调用read或write等IO操作时,如果内核没有准备好数据,那么应用程序就会一直阻塞等待,直到内核准备好数据后才会返回。在这种模型下,应用程序通常只能同时处理一个连接,效率较低。

非阻塞IO模型:当应用程序调用read或write等IO操作后,如果内核没有准备好数据,那么应用程序不会被阻塞,而是立即返回一个Eagain或EWouldBlock错误码,表示当前资源不可用。在这种模型下,应用程序需要不断轮询来检查是否有数据准备好,可以同时处理多个连接,但轮序频繁可能会占用过多CPU资源。

IO复用模型:使用select、poll或epoll等系统调用来监听多个IO事件,当有IO事件发生时再进行处理。在这种模型下,应用程序也只需要通过一个线程来监听多个连接,效率比非阻塞IO模型要高。

信号驱动IO模型:应用程序调用sigaction函数注册一个信号处理函数,在数据准备好时内核会向应用程序发送一个SIGIO信号,应用程序收到信号后再进行IO操作。这种模型比较适合于处理低频率的IO事件。

异步IO模型:应用程序调用aio_read或aio_write等异步IO函数,内核会在IO操作完成后通知应用程序。在这种模型下,应用程序不需要等待IO操作完成,可以继续执行其他任务,当IO操作完成后再进行回调处理。异步IO模型在高并发场景下更具优势。

注意:在非阻塞IO模型中,应用程序每一次轮询检查数据是否准备好时,都会涉及到从用户态到内核态的切换。因此对于非阻塞IO模型,每一次轮询都是昂贵的系统调用。

而非阻塞IO模型与多路复用IO模型的区别就在于:
多路复用IO模型将轮询的任务交给了操作系统,由操作系统对连接进行监听,当有事件时才会返回向用户态的应用程序返回事件列表。大大减少了用户态和内核态切换的系统调用开销。

参考:
计算机网络——阻塞IO、非阻塞IO、IO多路复用
美团后端开发暑期实习一面

标签:调用,多路复用,模型,阻塞,应用程序,内核,IO
From: https://www.cnblogs.com/tyhA-nobody/p/17414170.html

相关文章

  • 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Paddle Inference 模型推理
    PaddleInference模型推理流程分别介绍文字检测、方向分类器和文字识别3个模型,基于PaddleInference的推理过程。PaddleInference的Python离线推理离线推理,即在特定机器上部署的代码只能在这台机器上使用,无法通过其他机器进行访问使用whl包预测推理“WHL”是“WHeeL”......
  • Connections could not be acquired from the underlying database!
    报错内容:五月19,20239:02:42上午org.apache.catalina.core.StandardWrapperValveinvoke严重:在路径为的上下文中,Servlet[springmvc]的Servlet.service()引发了具有根本原因的异常Requestprocessingfailed;nestedexceptionisorg.springframework.transaction.CannotCre......
  • 点、线、面、体、魂——企业精益数字化的五阶段模型
     制造业精益数字化是企业精益管理实践与数字化技术的深度融合与相互赋能,其实现路径主要包括“点、线、面、体、魂”五个阶段以及每个阶段所匹配的三层次数字技术。精益数字化的关键驱动力是企业精益实践的不断迭代升级,并在该过程中辅以适配的数字技术。部分典型制造企业通过......
  • 「CF1718E」Impressionism
    题目点这里看题目。Burenka有两张图片$a$和$b$,它们的大小可以表示为$n\timesm$的像素组合。每幅画的每个像素都有一个颜色——表示为一个从$0$到\(2\times10^5\)的数字,并且在两幅画的每一行或每一列中都没有重复的颜色,除了颜色$0$。Burenka想把图片\(......
  • FL Studio21那个版本最便宜,2023年那个版本更适合新手使用
    前阵子世界级电音盛会Tomorrowland在比利时如期举行,拉开了疫情下Rave文化复兴的帷幕。而国内,也推出了如《超感星电音》等电子音乐综艺,在节目上大家也更多地了解到了电子音乐的制作过程。节目中最被大家看好的制作人Carta所使用的FLStudio这款软件也因此被许多观众所记住,大......
  • Go常见问题(一)Visual Studio Code 无法识别 go 指令
    参考链接:https://www.jianshu.com/p/e2ddc10588fc $env:Path=[System.Environment]::GetEnvironmentVariable("Path","Machine")......
  • ent M2M模型在pxc集群中的一个大坑
    entM2M模型在pxc集群中的一个大坑事故简要分析PXC集群3个节点,在插入数据时,如果使用数据库自己生成的主键,一般顺序为1,4,7,10…这里就是坑的源头,在ent底层代码中,在做M2M模型插入时,会先插入两个模型,再插入中间表。即,假设M2M模型为group和user(https://entgo.io/docs/schema-edges......
  • Solution Set - CDQ分治
    A[洛谷P2163].给定平面上若干个点,多次询问给定矩形内的点数。B[洛谷P3810].给定若干个三元组,对所有\(k\),求这样三元组的个数:恰有\(k\)个三元组,满足其每个分量都不超过它的相应分量。C[洛谷P3157].给定一个序列,从中依次删去某些元素,求每次删除前逆序对数目。D[CF762E/CF1045G].......
  • 文心大模型提示词笔记——应用场景案例
    发现:绝大多数应用场景的Prompt,质量都与使用者对“好结果”的了解成正比。1产品海报2写科普文 3写代码指定Markdown、js总结一下这几个例子·拿到应用场景后,先试着判断场景的任务特点,结合任务共性先优化一波。再结合场景主体、应用场合的特点,对生成内容的需求做一些补充说明。......
  • 「聊天机器人构建、智能文档问答」大模型应用开发实操课程来了
    此刻,生成式AI正以惊人的势头改变着我们的世界,无论是在科技、商业还是日常生活中,新的浪潮席卷着全球各个行业和领域。跟过去十几年中“有多少人工就有多少智能”的智障AI比起来,大模型如OpenAI的GPT-4、百度的文心一言、谷歌的PaLM2所展现出惊人的语言理解和生成能力,让人......