UNIX下五种I/O模型如下所示,可以将每一种I/O分为两个部分---->内核等待数据(第一阶段)和内核将数据复制到用户空间(第二阶段)~~~
  • 阻塞式I/O:如果没有数据供读/写,进入睡眠,直到有数据供读/写,直接完成,从第一阶段开始一直阻塞。
  • 非阻塞式I/O:如果没有数据供读/写,返回错误,若有,直接读/写,若第一阶段准备好,阻塞在第二阶段
  • I/O复用:poll, select, pselect, 检测文件描述符状态,第一阶段阻塞在函数本身,第二阶段阻塞在读/写调用
  • 信号驱动式I/O:使用信号,让内核在第一阶段结束时通知进程,进程阻塞在第二阶段
  • 异步I/O:内核直到全部完成两个阶段,才通知进程。。。(甩手掌柜既视感。。。)
简单归纳如下图:
Unix下五中I/O模型简介-LMLPHP
10-27 18:39
查看更多