当前位置:网站首页>你经常遇到的IO模型
你经常遇到的IO模型
2022-07-22 09:59:00 【暴雪2008】
一、常见的IO模型:
按照《Unix网络编程》的划分,IO模型可以分为:阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO。
二、IO模型介绍:
阻塞I/O模型:
进程会一直阻塞,直到数据拷贝完成。
应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直阻塞等待….知道内核数据准备完成,从内核空间拷贝到用户空间,IO函数返回成功指示。
2.非阻塞IO模型
简单说就是反复检查内核数据是否就绪,cpu有空耗的现象。
IO多路复用:
主要有select 、 poll 、epoll 模型,select 、poll、epoll函数调用时仍然阻塞,关键在于可以同时监控多个IO操作。
从内核到内核数据准备过程中,用户线程是阻塞的,知道内核数据报准备好。
信号驱动IO:
与IO多路复用的区别是:内核 到内核数据准备的过程中,不需要阻塞,但是内核数据准备好后,从内核拷贝到用户数据仍需要阻塞等待。
不过TCP中信号较为负责,目前很难区分,信号驱动IO主要用在UDP通讯。
3.异步IO:
从发起IO请求,到系统内核准备好数据,到内核将数据拷贝到用户进程,全程都不足要用户进程参与,完全的异步。
可惜的是linux系统并没有实现,windows系统有实现。实际linux服务器上,基本还是IO多路复用。
三、IO模型对比:
简单画了导图:
select\poll\epoll
其实从如下两点考虑:
fd剧增后的效率:
select、poll 通过线性扫描所有的fd数据,随着fd剧增,必然出现 “”线性下降” 性能问题
epoll : 只有活跃的socket才会主动调用callback,所以即使fd剧增但是在活跃socket较少的情况下,没有 "线性下降"问题,但是所有socket都很活跃的情况下,可能会有性能问题。
fd消息通知方式
select、poll 通过内核空间到用户空间的拷贝。
epoll 通过使用mmap减少复制开销。
注意仅仅是fd就绪消息通知。
边栏推荐
- 7.18 正方形数组的数目
- Synchronized与lock锁区别
- 记一次 .NET 某RFID标签管理系统 CPU 暴涨分析
- Markdown数学公式语法
- PHP implementation deletes a value in a one-dimensional array
- arguments
- JS advanced - understanding of objects
- Rongyun handles political affairs: "small grid" can also achieve "big governance"
- 浏览器逻辑漏洞合集
- Force deduction solution summary 241- design priority for operation expression
猜你喜欢
Leetcode notes
Don't let fear of marriage kill your happiness!
PHP implementation deletes a value in a one-dimensional array
万兴PDF专家v8.3.8.1253专业版
派生類的構造函數和析構函數
"Pilot Cup" is coming! Summon the strongest brain in scientific computing, 360000 prize pool waiting for you
派生类成员的访问
相比技术与产品 倾听与意见才是Web3当下的首要任务
【数据挖掘工程师-笔试】2022年SHEIN 公司
QT中多线程的使用
随机推荐
Explain the adapter technology in NLP from simple to deep
[learn C and fly] Chapter 3 branch structure (exercise 3.1 simple guessing game)
Force deduction solution summary 513- find the value of the lower left corner of the tree
SQL 查询语句性能优化
PHP Cookie
Force deduction solution summary 1175 prime number arrangement
Jackson 解析 JSON 详细教程
Research on the principle of Tencent persistence framework mmkv
Force deduction solution summary 1051 height checker
YII2 composer 报错解决 requires bower-asset 问题
相比技术与产品 倾听与意见才是Web3当下的首要任务
Wanxing PDF expert v8.3.8.1253 Professional Edition
树和二叉树:树的概念
三层交换机/路由器OSPF配置详解【华为eNSP实验】
Neo4j - Cypher 语法示例
Redis深水区经验梳理--面试参考
如何不获取root权限使用第三方主题:MIUI篇
NLP text classification top meeting paper reading notes for natural language processing (2)
万兴PDF专家v8.3.8.1253专业版
Force deduction solution summary 814 binary tree pruning