I/O模型
模型:阻塞型、非阻塞型、复用型、信号驱动型、异步
同步/异步:
关注消息通知机制
消息通知:
同步:等待对方返回消息
异步:被调用者通过状态、通知或回调机制通知调用者被调用者的运行状态
一次IO请求,都会由两阶段组成:
第一步:等待数据,即数据从磁盘到内核内存
第二步:复制数据,即数据内核内存到进程内存
阻塞/非阻塞:
关注调用者在等待结果返回之前所处的状态
阻塞:blocking,调用结果返回之前,调用者被挂起
非阻塞:nonblocking,调用结果返回之前,调用者不会被挂起
复用型IO调用:
select():最大只支持1024个连接,http的prefork和work都是此模型
poll():
event-driven:<信号驱动型>
epoll(Linux):libevent
Kqueue(BSD):
Solaris:/dev/poll
异步IO模型:
当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者的输入输出操作
5个I/O模型的比较:
原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/55510