跳转到内容
主菜单
主菜单
移至侧栏
隐藏
规范/协议
协议
算法
JVM
多线程/并发
存储
AI
深度学习
工具箱
最近更改
文章分类
全部文章
WHY42
搜索
搜索
外观
登录
个人工具
登录
欢迎来到Riguz的小站!这是一个私人wiki,用来记录一些我的笔记。
查看“︁Linux I/O models”︁的源代码
页面
讨论
大陆简体
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
页面信息
外观
移至侧栏
隐藏
←
Linux I/O models
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
*阻塞I/O(blocking I/O) *非阻塞I/O (nonblocking I/O) *I/O复用(select 和poll) (I/O multiplexing) *信号驱动I/O (signal driven I/O (SIGIO)) *异步I/O (asynchronous I/O (the POSIX aio_functions)) 前四种都是同步,只有最后一种才是异步IO。 =blocking IO= 阻塞IO模型是最常见的IO模型了,对于所有的“慢速设备”(socket、pipe、fifo、terminal)的IO默认的方式都是阻塞的方式。阻塞就是进程放弃cpu,让给其他进程使用cpu。进程阻塞最显著的表现就是“进程睡眠了”。阻塞的时间通常取决于“数据”是否到来。 [[Image:Blocking_IO.jpg|600px]] =nonblocking IO= 一个非阻塞模式套接字多次调用recv()函数的过程。前三次调用recv()函数时,内核数据还没有准备好。因此,该函数立即返回WSAEWOULDBLOCK错误代码。第四次调用recv()函数时,数据已经准备好,被复制到应用程序的缓冲区中,recv()函数返回成功指示,应用程序开始处理数据。 [[Image:Noneblocking_IO.jpg|600px]] =IO multiplexing= I/O复用模型会用到select、poll、epoll函数,这几个函数也会使进程阻塞,但是和阻塞I/O所不同的的,这两个函数可以同时阻塞多个I/O操作。而且可以同时对多个读操作,多个写操作的I/O函数进行检测,直到有数据可读或可写时,才真正调用I/O操作函数。 [[Image:IO_Multiplexing.png|600px]] =signal driven IO= [[Image:Signal_Driven_IO.jpg|600px]] =asynchronous IO= [[Image:Asynchronous_IO.jpg|600px]] *http://www.linuxidc.com/Linux/2015-07/120337.htm *http://blog.csdn.net/lovingprince/article/details/6426009 *http://blog.csdn.net/jay900323/article/details/18141217 [[Category:Linux/Unix]]
返回
Linux I/O models
。
搜索
搜索
查看“︁Linux I/O models”︁的源代码
添加话题