五种网络IO模型:阻塞式IO 非阻塞式IO IO复用(IO multiplexing) 信号驱动式IO 异步IO
文章目录
- 五种网络IO模型
- 举例说明
- 阻塞式I/O模型
- 非阻塞式I/O
- I/O多路复用
- 信号驱动式I/O
- 异步I/O
- 比较结果
- 总结
- 同步 异步 阻塞 非阻塞
- 阻塞/非阻塞:
- 同步/异步:
- 举例子:小宇去新华书店买书
- 场景:
五种网络IO模型
阻塞式IO
非阻塞式IO
IO复用(IO multiplexing)
信号驱动式IO
异步IO(POSIX的aio_系列函数)
其中前四种都是同步IO
举例说明
用户态 内核态
一个网络数据输入操作包括两个不同的阶段:
a. 等待数据准备好
b. 从内核向用户态复制数据
阻塞式I/O模型
非阻塞式I/O
I/O多路复用
信号驱动式I/O
异步I/O
比较结果
总结
同步 异步 阻塞 非阻塞
阻塞/非阻塞:
关注的是用户态进程/线程(程序)的状态
其要访问的数据是否就绪,进程/线程是否需要等待;
同步/异步:
关注的是消息通信机制 – 内核与应用程序的交互
访问数据的方式,同步需要主动读写数据,在读写数据的过程中还是会阻塞;
异步只需要关注I/O操作完成的通知,并不主动读写数据,由操作系统内核完成数据的读写
举例子:小宇去新华书店买书
场景:
小宇去新华书店买书
如果新华书店没有,就一直等着书店有了书之后才走。 (同步阻塞)
如果新华书店没有,先离开书店;然后每天都去书店逛一次,直到书店到货了,买了就走 。(同步非阻塞)
如果新华书店没有,留下电话号码;书店有货时,老板打电话通知他,他再去书店买书。(信号驱动IO 同步非阻塞)
如果新华书店没有,留下地址;书店有货时,老板直接把书 送到家(异步非阻塞)
对应于程序:用户进程调用系统调用用户进程对应小宇,内核对应书店老板,书对应数据, 买书就是一个系统调用,而内核拷贝数据到进程这个过程近似于老板送书到小宇手中。
五种网络IO模型:阻塞式IO 非阻塞式IO IO复用(IO multiplexing) 信号驱动式IO 异步IO相关推荐
- 因为取了个快递我搞懂了五种网络IO模型
五种网络IO模型 目录 前段时间,我有个朋友因为拿快递和家里闹别扭了,今天我就借这事来讲讲五大网络模型 阻塞IO模型 第一天: 刘:今天因为拿快递被我妈骂了一顿 我:说来听听 刘:我本来在家里打扫家务 ...
- 【Linux网络编程】深入理解Linux五种网络IO模型
相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分别是什么含义. ...
- 【Linux网络编程学习】阻塞、非阻塞、同步、异步以及五种I/O模型
文章目录 1. 基本概念 1.1 阻塞与非阻塞 1.2 同步与异步 1.3 为什么没有"异步阻塞" 2. 五种IO模型 2.1 阻塞 blocking 2.2 非阻塞 non-bl ...
- linux的socket模型有哪些,异步io 编程 Linux Socket五种I/O模型(zhuan(3)
需要说明的是并非所有的Windows SocketsAPI在非阻塞模式下调用,都会返回WSAEWOULDBLOCK错误.例如,以非阻塞模式的套接字为参数调用bind()函数时,就不会返回该错误代码.当 ...
- 同步I/O、异步I/O、阻塞I/0、非阻塞I/O、五种I/O模型、高性能网络模型
10.I/O相关概念 https://www.cnblogs.com/xiaoxi/p/6525396.html 10.1.同步和异步 同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须 ...
- 五种网络I/O模型详解
Table of Contents 网络IO模型介绍 阻塞式IO (blocking IO) 无阻塞式IO (nonblocking IO) IO多路复用 (IO multiplexing) 异步IO ...
- Java网络编程(一):五种I/O模型
1 概念说明 在进行解释之前,首先要说明几个概念: 用户空间和内核空间进程切换进程的阻塞文件描述符缓存 IO 1 2 3 4 5 6 7 8 9 1.1 用户空间与内核空间 现在操作系统都是采用虚拟存 ...
- java非阻塞io流_阻塞式和非阻塞io流初认识
1 什么是阻塞式和非阻塞式? 阻塞式IO:IO即input/output,阻塞式IO指的是"一旦输入/输出工作没有完成,则程序阻塞,直到输入/输出工作完成".在目前,我们从书本上 ...
- I/O模型之一:Unix的五种I/O模型
目录: <I/O模型之一:Unix的五种I/O模型> <I/O模型之二:Linux IO模式及 select.poll.epoll详解> <I/O模型之三:两种高性能 I ...
最新文章
- 牛客练习赛84:牛客推荐系统开发之标签重复度(点分治+动态开点权值线段树)
- centos telnet 安装 配置
- msm8953+android8.1蓝牙名称修改、多产品采用不同名字的兼容
- ASP.NET N问N答 (一) ASP.NET怎么导出到WORD?(把girdview里面的数据到出到word)
- java之代理设计模式
- 互联网新人最热门去处:前三名毫无意外!
- 荣耀30S正式发布!荣耀赵明回应红米叫板:被强行捆绑,不太想搭理
- oracle 10g crs_stop -all 命令后遇到 UNKNOWN
- python运行游戏是否需要pygame_用Python和Pygame写游戏-从入门到放弃(1)
- SAP License:SAP系统上线注意事项之合同日期
- apktool(android app逆向)
- DBCP数据库连接失效的解决方法(Io 异常:Connection reset)
- OpenMP中的常用函数
- CDD数据库文件制作(一)
- html中自定义右键菜单功能,HTML中自定义右键菜单功能
- 悲痛!长安福特AE工程师之死:985高校吉大毕业,入职8年,年仅30岁抑郁跳楼身亡...
- java背单词页面_简易Web背单词软件 #01# 当前功能
- 百度红包架构分析与推测
- 苹果支付v2 通知(订阅/退款回调通知)
- Android---简易Snackbar