IO模型——进程工作的方式

I/O模型

模型:阻塞型、非阻塞型、复用型、信号驱动型、异步

同步/异步:

关注消息通知机制

    

消息通知:

         同步:等待对方返回消息

         异步:被调用者通过状态、通知或回调机制通知调用者被调用者的运行状态

一次IO请求,都会由两阶段组成:

第一步:等待数据,即数据从磁盘到内核内存

第二步:复制数据,即数据内核内存到进程内存

阻塞/非阻塞:

关注调用者在等待结果返回之前所处的状态

    

阻塞:blocking,调用结果返回之前,调用者被挂起

IO模型——进程工作的方式

    

非阻塞:nonblocking,调用结果返回之前,调用者不会被挂起

IO模型——进程工作的方式

复用型IO调用:

select():最大只支持1024个连接,http的prefork和work都是此模型

poll():

3.jpg

event-driven:<信号驱动型>

epoll(Linux):libevent

Kqueue(BSD):

Solaris:/dev/poll

4.jpg

异步IO模型:

 当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者的输入输出操作

5.jpg

5个I/O模型的比较:

6.jpg

原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/55510

赞 (1)
megedugaomegedugao
上一篇 2016-10-25 11:08
下一篇 2016-10-25 16:27

相关推荐

  • 关于Raid的各种类型特点概要

    关于Raid需要了解掌握的要点

    Linux干货 2017-11-26
  • 姗姗来迟的第三周作业

    一,列出当前系统上所有已经登录的用户的用户名,注意,同一个用户登录多次只显示一次即可 w -h | cut -d" " -f1 | uniq who |cut -d" " -f1|uniq 二,取出最…

    Linux干货 2016-11-21
  • Centos 7 之systemd

    Centos 7 之systemd systemd POST –> Boot Sequence –> Bootloader –> kernel + initramfs(initrd) –> rootfs –> /sbin/init init: CentOS 5: Sys…

    Linux干货 2016-09-23
  • passwd

    http://www.cnblogs.com/wzhuo/p/6706774.html

    Linux干货 2017-04-17
  • 文本处理及正则表达式

    文本处理工具:     more:分页查看文件     less:分页控制显示文件     head 查看文件的前几行         -n 3   显示前三行      &nbs…

    Linux干货 2017-05-31
  • 一个“蝇量级” C 语言协程库

    协程(coroutine)顾名思义就是“协作的例程”(co-operative routines)。跟具有操作系统概念的线程不一样,协程是在用户空间利用程序语言的语法语义就能实现逻辑上类似多任务的编程技巧。实际上协程的概念比线程还要早,按照 Knuth 的说法“子例程是协程的特例”,一个子例程就是一次子函数调用,那么实际上协程就是类函数一样的程序组件,你可以…

    Linux干货 2016-08-15