文章目录

  • 五种网络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相关推荐

  1. 因为取了个快递我搞懂了五种网络IO模型

    五种网络IO模型 目录 前段时间,我有个朋友因为拿快递和家里闹别扭了,今天我就借这事来讲讲五大网络模型 阻塞IO模型 第一天: 刘:今天因为拿快递被我妈骂了一顿 我:说来听听 刘:我本来在家里打扫家务 ...

  2. 【Linux网络编程】深入理解Linux五种网络IO模型

    相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分别是什么含义. ...

  3. 【Linux网络编程学习】阻塞、非阻塞、同步、异步以及五种I/O模型

    文章目录 1. 基本概念 1.1 阻塞与非阻塞 1.2 同步与异步 1.3 为什么没有"异步阻塞" 2. 五种IO模型 2.1 阻塞 blocking 2.2 非阻塞 non-bl ...

  4. linux的socket模型有哪些,异步io 编程 Linux Socket五种I/O模型(zhuan(3)

    需要说明的是并非所有的Windows SocketsAPI在非阻塞模式下调用,都会返回WSAEWOULDBLOCK错误.例如,以非阻塞模式的套接字为参数调用bind()函数时,就不会返回该错误代码.当 ...

  5. 同步I/O、异步I/O、阻塞I/0、非阻塞I/O、五种I/O模型、高性能网络模型

    10.I/O相关概念 https://www.cnblogs.com/xiaoxi/p/6525396.html 10.1.同步和异步 ​ 同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须 ...

  6. 五种网络I/O模型详解

    Table of Contents 网络IO模型介绍 阻塞式IO (blocking IO) 无阻塞式IO (nonblocking IO) IO多路复用 (IO multiplexing) 异步IO ...

  7. Java网络编程(一):五种I/O模型

    1 概念说明 在进行解释之前,首先要说明几个概念: 用户空间和内核空间进程切换进程的阻塞文件描述符缓存 IO 1 2 3 4 5 6 7 8 9 1.1 用户空间与内核空间 现在操作系统都是采用虚拟存 ...

  8. java非阻塞io流_阻塞式和非阻塞io流初认识

    1  什么是阻塞式和非阻塞式? 阻塞式IO:IO即input/output,阻塞式IO指的是"一旦输入/输出工作没有完成,则程序阻塞,直到输入/输出工作完成".在目前,我们从书本上 ...

  9. I/O模型之一:Unix的五种I/O模型

    目录: <I/O模型之一:Unix的五种I/O模型> <I/O模型之二:Linux IO模式及 select.poll.epoll详解> <I/O模型之三:两种高性能 I ...

最新文章

  1. 牛客练习赛84:牛客推荐系统开发之标签重复度(点分治+动态开点权值线段树)
  2. centos telnet 安装 配置
  3. msm8953+android8.1蓝牙名称修改、多产品采用不同名字的兼容
  4. ASP.NET N问N答 (一) ASP.NET怎么导出到WORD?(把girdview里面的数据到出到word)
  5. java之代理设计模式
  6. 互联网新人最热门去处:前三名毫无意外!
  7. 荣耀30S正式发布!荣耀赵明回应红米叫板:被强行捆绑,不太想搭理
  8. oracle 10g crs_stop -all 命令后遇到 UNKNOWN
  9. python运行游戏是否需要pygame_用Python和Pygame写游戏-从入门到放弃(1)
  10. SAP License:SAP系统上线注意事项之合同日期
  11. apktool(android app逆向)
  12. DBCP数据库连接失效的解决方法(Io 异常:Connection reset)
  13. OpenMP中的常用函数
  14. CDD数据库文件制作(一)
  15. html中自定义右键菜单功能,HTML中自定义右键菜单功能
  16. 悲痛!长安福特AE工程师之死:985高校吉大毕业,入职8年,年仅30岁抑郁跳楼身亡...
  17. java背单词页面_简易Web背单词软件 #01# 当前功能
  18. 百度红包架构分析与推测
  19. 苹果支付v2 通知(订阅/退款回调通知)
  20. Android---简易Snackbar

热门文章

  1. 【转载】基于深度卷积网络方法的高光谱图像分类
  2. Tars-K8SFramework离线部署
  3. 爬取中国知网搜索cnki.net
  4. 基于嵌入式STT-MRAM的架构方案
  5. Java学习手册:thissuper
  6. Android MVVM基础版 DataBinding+Retrofit+RxJava(一)
  7. mysql中IFIND_IN_SET和like的区别
  8. 如何打开mysql数据库
  9. 找准品牌定位,努力称为一个合适的品牌营销人才
  10. keystore生成 linux_linux下的keystore