zoukankan      html  css  js  c++  java
  • Atitit  五种IO模型attilax总结 blocking和nonblocking synchronous IO和asynchronous I

    Atitit  五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I

     

    1.1. .3 进程的阻塞1

    1.2. 网络IO的模型大致有如下几种:1

    1.3.  IO 模型的简单矩阵。如下图所示:2

    2. 五种IO模型总结2

    2.1. 3.1 blocking和non-blocking区别2

    2.2. 3.2 synchronous IO和asynchronous IO区别2

    2.3. 各个IO Model的比较如图所示:3

     

     

    同步、异步、阻塞与非阻塞

    1.1. .3 进程的阻塞

    正在执行的进程,由于期待的某些事件未发生,如请求系统资源失败、等待某种操作的完成、新数据尚未到达或无新工作做等,则由系统自动执行阻塞原语(Block),使自己由运行状态变为阻塞状态。可见,进程的阻塞是进程自身的一种主动行为,也因此只有处于运行态的进程(获得CPU),才可能将其转为阻塞状态。当进程进入阻塞状态,是不占用CPU资源的

    1.2. 网络IO的模型大致有如下几种:

    · 同步模型(synchronous IO)

    阻塞IO(bloking IO)

    非阻塞IO(non-blocking IO)

    多路复用IO(multiplexing IO)

    信号驱动式IO(signal-driven IO)

    · 异步IO(asynchronous IO)

    注:由于signal driven IO在实际中并不常用,所以我这只提及剩下的四种IO Model。

    1.3.  IO 模型的简单矩阵。如下图所示:

     

    2. 五种IO模型总结

    2.1. 3.1 blocking和non-blocking区别

    调用blocking IO会一直block住对应的进程直到操作完成,而non-blocking IO在kernel还准备数据的情况下会立刻返回。

    2.2. 3.2 synchronous IO和asynchronous IO区别

    在说明synchronous IO和asynchronous IO的区别之前,需要先给出两者的定义。POSIX的定义是这样子的:

    A synchronous I/O operation causes the requesting process to be blocked until that I/O operation completes;

    An asynchronous I/O operation does not cause the requesting process to be blocked;

    两者的区别就在于synchronous IO做”IO operation”的时候会将process阻塞。按照这个定义,之前所述的blocking IO,non-blocking IO,IO multiplexing都属于synchronous IO。

    2.3. 各个IO Model的比较如图所示:

     

     

     

     

    Linux 五种IO模型 - paincupid的专栏 - 博客频道 - CSDN.NET.html

     

    作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 

    汉字名:艾提拉(艾龙)   EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

    Atiend

     

  • 相关阅读:
    数位DP
    组合
    卢卡斯Lucas&扩展卢卡斯
    [HNOI2014]道路堵塞
    [模板]三维凸包(无讲解)
    [CF526G]Spiders Evil Plan
    [CCPC2019 ONLINE]H Fishing Master
    [CCPC2019 ONLINE]E huntian oy
    [CF1037H]Security
    [CF1037F]Maximum Reduction
  • 原文地址:https://www.cnblogs.com/attilax/p/15198252.html
Copyright © 2011-2022 走看看