美文网首页
Unix的五种IO模型

Unix的五种IO模型

作者: 听一首老歌 | 来源:发表于2018-12-03 10:45 被阅读0次

1,Blocking IO 阻塞IO

通过recvfrom系统调用,检查是否就绪

IO读取分为两个阶段,第一阶段准备数据 ,第二阶段 处理数据包 拷贝到用户空间

IO执行的两个阶段都被Blocking了

2,Non Blocking IO  非阻塞IO

调用recvfrom时候,不会阻塞线程而是直接返回(错误或者准备就绪)

应用需要不断调用recvfrom去检查(polling)

用户需要不断询问IO是否准备就绪。

为了避免CPU空转,引入了代理select,后来又有poll代理

系统空闲时候会将线程阻塞掉,当有一个或者多个流IO时间时候,将会唤起当前线程,于是会轮询所有的IO流。

缺点:需要无差别轮询所有的流,找出能够读写的流。处理的流越多,耗费的无差别轮询时间越长\

epoll可以理解为event poll,会通知我们是那个流发生了怎么样的事件

3,IO 多路复用

通过一种机制,一个进程可以同时等待多个文件描述符,任意一个文件描述进入就绪状态,select函数就会返回。

处理连接数很多的情况下,优势比较明显。

4,信号驱动IO

信号通知,数据包已经准备好被处理,数据报已经准备好被读取

5,异步IO

信号驱动IO告诉我们何时可以启动一个IO操作,异步IO则由内核通知IO操作何时完成,其他都交给内核处理。

同步IO,IO操作将会被阻塞,non-blocking IO在第一阶段不会阻塞IO,但是第二阶段,从内核拷贝到用户内存,进程会被阻塞。所以仍然是同步IO

异步IO,IO操作不会被阻塞

参考:https://www.jianshu.com/p/f00ad612153b

相关文章

  • 【Netty开发指南】搭稳Netty开发的地基

    Linux网络编程5种IO模型 根据UNIX网络编程对于IO模型的分类,UNIX提供了5种IO模型,分别是 阻塞I...

  • linux select/epoll

    一、Unix/Linux网络IO模型在经典的Unix网络编程中,总结出了5种不同的网络IO模型,分别是阻塞式IO,...

  • Unix下5种IO模型

    目录一:Unix下5种IO模型二:同步I/O和异步I/O 一:Unix下5种IO模型 阻塞式IO 非阻塞式IO I...

  • Unix IO模型

    1.同步,异步,阻塞,非阻塞的概念:一般来说,一个输入操作包含两个阶段:(1)等待数据准备好(2)将数据从内核拷贝...

  • IO模型

    描述 本文摘自UNIX网络编程卷1:套接字联网API,描述了UNIX中五种IO模型。阻塞IO、非阻塞IO、IO复用...

  • 彻底搞懂Java的网络IO

    IO是Input/Output的缩写。Unix网络编程中有五种IO模型: blocking IO(阻塞IO) no...

  • 四、高性能IO模型浅析

    按照《Unix网络编程》的划分,IO模型可以分为:阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO;按照PO...

  • 阻塞与非阻塞,同步与非同步,你真的懂吗?

    按照《Unix网络编程》的划分,IO模型可以分为:阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO。按照PO...

  • netty

    netty 高性能,异步,事件驱动库 Unix io模型 阻塞io 非阻塞io,netty主要就是基于epoll的...

  • 异步IO简析

    什么是异步IO 《UNIX网络编程卷1》中的IO多路复章节总结了几种典型IO模型,包括: 阻塞IO 非阻塞IO I...

网友评论

      本文标题:Unix的五种IO模型

      本文链接:https://www.haomeiwen.com/subject/wtwecqtx.html