5种I/O模型

helloworld_82566120
• 阅读 1529
  • 阻塞I/O(blocking I/O)

  • 非阻塞I/O(non-blocking I/O)

  • 同步I/O(synchronous I/O)or多路复用I/O(multiplexing I/O)

  • 异步I/O(asynchronous I/O)

  • 信号驱动I/O(signal-driven I/O)

1. 阻塞I/O: 5种I/O模型

  • 第1阶段:内核准备数据,进程阻塞

  • 第2阶段:拷贝数据(从kernel缓冲区拷贝到用户缓冲区),进程阻塞

2. 非阻塞I/O:

5种I/O模型

  • 阶段1:进程不阻塞

    • 非阻塞的recvform系统调用调用之后,进程并没有被阻塞,内核马上返回给进程,如果数据还没准备好,此时会返回一个error(EAGAIN *或 *EWOULDBLOCK);

    • 进程在返回之后,可以干点别的事情,然后再发起recvform系统调用。重复上面的过程,循环往复的进行recvform系统调用;这个过程通常被称之为轮询

  • 阶段2:进程阻塞

    • 轮询检查内核数据,直到kernel数据准备好,再拷贝数据到进程,进行数据处理;

    • 拷贝数据的整个过程,进程仍然是阻塞状态

3. 多路复用I/O:

5种I/O模型

  • 阶段1:进程有的阻塞,有的不阻塞,有的可以阻塞又可以不阻塞

    • select、poll、epoll
  • 阶段2:进程阻塞

4. 异步I/O:

5种I/O模型

  • 阶段1:进程不阻塞
  • 阶段2:进程不阻塞

5. 信号驱动I/O:

5种I/O模型

  • 阶段1:进程不阻塞
  • 阶段2:进程阻塞

总结:

5种I/O模型

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
1年前
Java NIO选择器【源码笔记】
目录一、I/O复用模型回顾二、创建选择器1.Pipe函数2.Poll函数三、注册Channel到Selector四、Select返回就绪事件集合一、I/O复用模型回顾!(https://oscimg.oschina.net/oscnet/01e7f742f41c502c3ae941a
Wesley13 Wesley13
1年前
Java【NIO2】- 系列 1: 为什么要写【NIO2】系列?
1\. 基本概念IO是主存和外部设备(硬盘、终端和网络等)拷贝数据的过程。IO是操作系统的底层功能实现,底层通过I/O指令进行完成。所有语言运行时系统提供执行I/O较高级别的工具。(c的printfscanf,java的面向对象封装)2\.  Java标准io回顾Java标准
Wesley13 Wesley13
1年前
STM32 GPIO详解
下文将根据STM32F207参考手的中GPIO框图讲解GPIO功能。01、I/O接口电路带FT的是说明可以容忍5V电压的,I/O电路框图!(https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8wUmc4RGRwQWliZlhIM
Stella981 Stella981
1年前
Linux自动检测网站心跳通知shell脚本
!/bin/bashLIST("http://xxxx.com")NAME("评价系统getwindowList接口")for((i0;i<${LIST@};i))doHTTP_CODEcurlo/dev/nullsw"%{http_code}""${LIST
Stella981 Stella981
1年前
Redis和多路复用模型
作者:Rico原文:hogwartsrico.github.io/2020/06/24/RedisandMultiplexing/几种I/O模型为什么Redis中要使用I/O多路复用这种技术呢?首先,Redis是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的
Stella981 Stella981
1年前
NVMe协议笔记分享
NVMe概述NVMe是一个针对基于PCIe的固态硬盘的高性能的、可扩展的主机控制器接口。NVMe的显著特征是提供多个队列来处理I/O命令。单个NVMe设备支持多达64K个I/O队列,每个I/O队列可以管理多达64K个命令。当主机发出一个I/O命令的时候,主机系统将命令放置到提交队列(SQ),然后使用门铃寄存器(DB)通知NVMe设
Stella981 Stella981
1年前
Netty学习三:线程模型
1Proactor和ReactorProactor和Reactor是两种经典的多路复用I/O模型,主要用于在高并发、高吞吐量的环境中进行I/O处理。I/O多路复用机制都依赖于一个事件分发器,事件分离器把接收到的客户事件分发到不同的事件处理器中,如下图:!(https://oscimg.oschi
Wesley13 Wesley13
1年前
o2o系统为什么如此受企业商家欢迎?
o2o是一种结合线上线下的商业模式,一些具备了一定实力的企业和加盟商,都非常青睐于这种商业模式,o2o业务通过打折、提供信息、服务等方式,将线下的商户消息提供给互联网的用户群体,把他们带到这些商户中进行消费,那么企业进行o2o系统的搭建有哪些好处呢?!(https://oscimg.oschina.net/oscnet/up238d37e83a2b
Stella981 Stella981
1年前
O2OA开发平台:(前端)在O2OA中使用系统o2.DL构建弹出框
1、使用O2OA平台封装好对象o2.DL的open方法创建弹出层,传入options参数构建弹出框内容、按钮等元素实现效果:!image.png(https://cdn.nlark.com/yuque/0/2020/png/689690/15918528543063f9ff6b92a2a4e9a82ce704d2f27f3f3.png)
Wesley13 Wesley13
1年前
mysql中一次字符集和排序规则引起的sql查询报错
先看sqlo.city_nameAS'城市',o.city_codeAS'城市编码',o.comp_nameAS'公司',o.comp_codeAS'分公司编码',b.brand_
helloworld_82566120
helloworld_82566120
Lv1
儿童见说深惊讶,却问何方是故乡。
1
文章
0
粉丝
0
获赞
热门文章

暂无数据