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

    一、五种I/O模型:

    阻塞I/O,非阻塞I/O,I/O复用模型,信号驱动I/O,异步I/O
    前四种属于同步iO,最后一种属于异步IO。因为前四种真正的I/O操作将阻塞进程。异步I/O不导致请求被进程阻塞。由内核完成I/O操作。

    1、阻塞IO

    2、非阻塞IO

    非阻塞IO,recv返回错误-1(EWOUDBLOCK) 很少用,数据未到的这段时间,数据要一直循环接收(忙等待)

    3、IO复用模型

    管理多个文件描述符,一旦其中一个描述符或多个有数据到来,select就返回。这时再调用recv就不会再阻塞了。

    4、信号驱动IO(拉)

    用户空间程序可以安装信号处理函数,安装之后,程序处理其他任务。一旦有数据到来,用信号来通知信号处理程序,信号处理程序来读取数据。

    5、异步IO(推)

    异步IO与信号驱动IO的区别在于,异步IO中内核将内核缓冲区数据写入到用户缓冲区,aio_read会递交一个应用层buf给内核(推)之后才发信号给进程来处理数据;而信号驱动IO模型中,内核有数据到来时发信号通知进程。

    由进程的信号处理函数recv来从内核读取数据(拉)。

  • 相关阅读:
    jquery选择器(复习向)
    如何使元素/文字 垂直居中?
    mvc与mvvm的区别与联系
    python16_day26【crm 增、改、查】
    python16_day25【crm】
    python16_day24【restful、crm表构、认证】
    python16_day23【cmdb前端】
    django 【认证】
    python16_day22【cmdb注释】
    django【F和Q】
  • 原文地址:https://www.cnblogs.com/wsw-seu/p/10950982.html
Copyright © 2011-2022 走看看