美文网首页
2020-02-19 阻塞IO和非阻塞IO

2020-02-19 阻塞IO和非阻塞IO

作者: tanbin_tech | 来源:发表于2020-02-19 10:52 被阅读0次

unix系统下常见的五种IO模型

  1. 阻塞式
  2. 非阻塞式
  3. IO复用(select,poll)
  4. 信号驱动(SIGIO)
  5. 异步调用(POSIX的aio系列函数)

一个输入操作通常具有两个不同的阶段

  1. 等待数据准备好
  2. 从内核将数据复制到进程

对于一个网络套接字上的输入操作:
1)等待数据从网络中到达 。
2)将内核缓冲区的数据复制到进程中

五种IO模型简介

1. 阻塞式

阻塞式(截取UNIX网络编程卷1)

2. 非阻塞式

非阻塞式(截取UNIX网络编程卷1)

应用进程反复轮询内核,查看操作是否就绪,这样做往往消耗大量的cpu时间

3. 信号驱动

信号驱动(截取UNIX网络编程卷1)

4. 多路复用

多路复用(截取UNIX网络编程卷1)
  • 阻塞在select操作,监听一组文件描述符,当某个就绪的时候就通知用户,优势在于可以监听多个描述符
  • 多线程中也有类似的模型,不过不是使用select监听一组描述符,而是使用多个线程(一个描述符对应一个线程),这样每个线程都可以自由调用recvfrom之类的阻塞式IO操作了。

5. 异步

异步(截取UNIX网络编程卷1)

五种IO模型的对比

  • 阻塞与非阻塞的区别在于第二阶段,将数据从内核区域复制到用户空间的时候是否阻塞


    五种IO模型的比较(截取UNIX网络编程卷1)

可见:前四种模型都是同步IO,因为真正的IO操作(recvfrom)将阻塞进程,只有最后一种才是异步IO

相关文章

  • IO模型

    原文参考链接 四种状态 同步 异步 阻塞 非阻塞 IO分类 同步阻塞IO 同步非阻塞IO 异步非阻塞IO注意: 没...

  • 操作系统 JVM

    非阻塞IO和异步IO(NIO、AIO) 非阻塞 IO 说完了阻塞模式的使用及其缺点以后,我们这里就可以介绍非阻塞 ...

  • 非阻塞IO

    非阻塞io(NIO)包含两重含义:1、连接阻塞 -> 连接非阻塞 2、io阻塞 -> io非阻塞nio包下Ser...

  • Java IO快速入门

    网络IO实现方式分为BIO(阻塞IO)、线程池伪异步IO、NIO(非阻塞IO)、AIO(异步非阻塞IO); 异步、...

  • Netty-基础篇(1)-网络IO,同步IO&异步IO,阻塞IO

    目录: 1、阻塞IO(Block IO)与非阻塞IO(Non-Block IO)1.1、阻塞IO(Block IO...

  • 2018-07-25

    网络IO之阻塞、非阻塞、IO复用、异步IO、同步IO 之前在看一些资料的过程中,经常提到阻塞、非阻塞、IO复用、异...

  • 阻塞非阻塞 同步异步 IO模型及其应用 NIO实现原理

    1.同步异步概念 2.阻塞非阻塞概念 3.常见I/O模型:同步阻塞IO,同步非阻塞IO,异步阻塞IO,异步非阻塞I...

  • 2020-02-19 阻塞IO和非阻塞IO

    unix系统下常见的五种IO模型 阻塞式 非阻塞式 IO复用(select,poll) 信号驱动(SIGIO) 异...

  • Java NIO 和 IO 之间的主要差别

    NIO 和 IO 之间的主要差别 IO NIO 面向流 面向缓冲 阻塞IO 非阻塞IO 无 ...

  • 面试(二)

    1.非阻塞IO和阻塞IO的区别 在阻塞模式下,若从网络流读取不到指定大小的数据量,阻塞IO就在那里阻塞着。非阻塞I...

网友评论

      本文标题:2020-02-19 阻塞IO和非阻塞IO

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