zoukankan      html  css  js  c++  java
  • Unix的5种IO模型

    Unix系统有5种IO模型,这些IO模型的目的是为了提高服务器能够并行处理的连接数,而不是提高程序的执行性能。

    • 阻塞IO:应用程序调用一个IO函数导致阻塞,在数据准备好前一直阻塞。
    • 非阻塞IO:当所请求的I/O操作无法完成时,进程不休眠,轮询代替阻塞,在内核数据准备期间可以执行其他事情,但是不停轮询数据是否准备好所以会占用CPU较大资源。
    • IO多路复用:用到select或poll函数,会导致进程阻塞
      1. 多个网络IO链接可以注册到一个复路器select上。
      2. 由一个进程或线程调用该复路器。
      3. 调用复路器会使进程或线程挂起,阻塞
      4. 内核轮询监视复路器上的每一个链接。
      5. 有一个连接的数据准备好了,该select返回,进程或线程退出阻塞状态
      6. 该进程或线程会进行系统调用,内核缓冲区的数据赋值到用户缓冲区。  
    • 信号驱动:在socket连接上安装一个信号处理函数,进程不阻塞,当数据准备好时,进程会收到一个信号,可以在信号处理函数中调用I/O操作函数处理数据。
    • 异步IO:进程收到IO连接,发起aio_read系统调用,立即返回,进程不阻塞,继续执行。数据准备好以后,内核直接把数据从内核缓冲区复制到用户缓冲区,无需用户进程发起系统调用再复制。数据复制完以后返回指定信号给用户进程,用户进程可直接再用户缓冲区拿数据处理。

    参考:https://blog.csdn.net/qq_40837310/article/details/106129120、https://blog.csdn.net/sunyubo458/article/details/6096723

  • 相关阅读:
    Angular 组件通信的三种方式
    Vue 之keep-alive的使用,实现页面缓存
    Angular Service设计理念及使用
    Git提交规范
    angular的生命周期
    CPU 是如何认识和执行代码的
    Ubuntu 常用软件
    UltraSQL / sqlserver-kit (SQLServer DBA )高手
    便宜的网站模板下载
    Audio over Bluetooth: most detailed information about profiles, codecs, and devices
  • 原文地址:https://www.cnblogs.com/smallzhen/p/14559766.html
Copyright © 2011-2022 走看看