httpd服务归纳:浅谈I/O模型

1. 四种理论的I/O模型 

    1) 调用者(服务进程):

        阻塞:  进程发起I/O调用,如果调用为完成,进程被挂起休眠,不能再执行其他功能

        非阻塞:进程发起I/O调用,被调用的函数完成之前,依然可以执行其他功能

    2) 被调用函数或过程(系统调用I/O读写操作)

        同步: 函数或功能被进程调用时,不立即返回值,直到此调用完成 

        异步: 函数或功能被进程调用时,不能立即完成则返回未完成状态,完成后通知调用进程

    3)四中理论模型

         同步阻塞 

         同步非阻塞(几乎没人使用)

         异步阻塞 

         异步非阻塞: 真正的异步I/O 

    

2. 五种网络服务中的I/O模型  

    1) 同步阻塞模型

        工作进程调用I/O请求库函数后,工作进程被阻塞等待I/O完成第一阶段,数据从硬盘加载到内核空间,此时工作进程在库函数返回数据之前继续被阻塞参与完成第二阶段数据从内核空间复制到用户进程空间的过程,最后拿到数据。 

同步阻塞.png

    2)I/O复用(同步阻塞模型):select(), poll()

         工作进程调用一个管理I/O的特殊库函数,此库函数可以接受并管理多个I/O请求,工作进程则可以同时等待多个I/O请求,虽然是阻塞,但是阻塞在多个进程上,可以提高效率。第二阶段依然需要工作进程参与库函数把内核空间数据复制到用户空间,第二阶段依旧阻塞。 

IO复用模型.png

    3) 同步非阻塞(盲等待模型)

            工作进程调用I/O库函数,工作进程不需要I/O完成依旧可以处理其他事物,但是需要反复查看I/O是否完成。第二阶段依然需要工作进程参与库函数把内核空间数据复制到用户空间,第二阶段依旧阻塞。 

        

同步非阻塞.png

    4) 事件触发模型(同步非阻塞): epoll(), kqueue() 

        工作进程调用I/O库函数,工作进程不需要等待I/O完成,内核空间I/O完成后会通过事件通知进程。第二阶段依然需要工作进程参与库函数把内核空间数据复制到用户空间,第二阶段依旧阻塞。  

事件驱动(同步非阻塞).png

    5) 全异步:AlO 调用

        全异步1: 工作进程调用I/O库函数,工作进程不需要等待I/O完成,内核空间I/O完成后会通过事件通知进程。第二阶段不需要工作进程参与库函数把内核空间数据复制到用户空间,库函数完成复制后自行返回数据给工作进程

异步非阻塞.png

        全异步2: 工作进程调用I/O库函数,工作进程不需要等待I/O完成,内核空间I/O完成后会通过事件通知进程。第二阶段不需要库函数从内核空间复制数据,而是通过内存映射来实现(mmap)。 

mmap.png

        实现以上功能,libevent   库 

         libevent.png

原创文章,作者:以马内利,如若转载,请注明出处:http://www.178linux.com/4811

(0)
以马内利以马内利
上一篇 2015-05-27 10:05
下一篇 2015-05-28 09:41

相关推荐

  • 计算机的组成和Linux发行版本介绍

    计算机的组成及功能 计算机的五大组成,如下 各部分的作用; 控制单元和算数逻辑单元是CPU的两个主要组成部分  控制单元主要协调各组件与各单元间的工作  算数逻辑单元主要负责程序运算与逻辑判断 内存,DRANM(Dynamic Random Access Memory)动态随机访问内存;CPU读取的数据都是从内存读取来的。 输入单元,下指…

    2017-07-02
  • 马哥教育网络班22期+第9周课程练习

    week9: 1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin); 分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # SHELL1="/sbin/nologin" declare -i sum1=sum2=0 for&nb…

    Linux干货 2016-10-17
  • Linux基础学习总结(二)

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 常用基础命令:cd、pwd、mkdir、touch 查看:cat,more,less,tail,head,tac 复制:cp 移动:mv 删除:rm 创建:touch 元数据属性:stat 查看内容类型:file 二、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及…

    Linux干货 2016-09-24
  • Linux系统下的翻译神器——Goldendict

    Linux系统下的翻译神器——Goldendict 学习Linux时明显感受到学习英文的重要性。绝大多数Linux的发行版英文版的功能要远强于中文。因此一款好的翻译软件是了解熟悉Linux系统的必需品。在Windows系统下有各种好用的词典程序,包括有道词典、bing词典、金山词霸等等,而这些软件都不能在linux下使用,即使能够使用也只是测试版,功能太少。…

    Linux干货 2017-04-24
  • 集中管理利器-puppet快速入门-中

    集中管理利器-puppet快速入门-中 6.    尝试启动master puppet 启动master puppet,并确认8140端口已被监听:  #puppet返回成功,但不一定能成功启动,puppet这个功能希望能改进… 7.    目录结构 /etc/puppet/  …

    Linux干货 2015-05-04
  • 硬链接和软链接的说明

    1、硬链接和软链接的区别    (1)、原理上:                   【1】 硬链接(hard link):                 &…

    2017-07-21

评论列表(2条)

  • 以马内利
    以马内利 2015-05-27 11:15

    各位大神见谅,非专业出身,I/O 模型实在不知道怎么表现才真正准确,自己也很浅

  • clover
    clover 2015-06-12 07:52

    已经很棒了