网络IO模型的分类
来源:互联网 发布:西南期货软件 编辑:程序博客网 时间:2024/04/28 08:31
这是之前在俱乐部邮件列表中讨论的一个问题。问题起于IBM DW上的一篇文章,也就是参考资料1。文章中对于IO模型的分类,采用同步、异步与阻塞、非阻塞交叉配对,形成了4中IO模型。让人总是感觉难以理解。
关于I/O Models,建议阅读《Unix Network Programming》Section 6.2
stevens将IO模式分为5种:
blocking I/O
nonblocking I/O
I/O multiplexing (select and poll)
signal driven I/O (SIGIO)
asynchronous I/O (the POSIX aio_functions)
关于同步与异步,POSIX标准的定义:
A synchronous I/O operation causes the requesting process to be
blocked until that I/O operation completes.
An asynchronous I/O operation does not cause the requesting
process to be blocked.
按照上面的定义划分:前四种都属于同步,
由于的当前操作系统的协议栈设计的HS/HA模型,
为了确认,我查了一下aio_read的用法,
因此,从上面分析看来,组合虽然有四种,
阻塞的一定是同步;同步的不一定是阻塞,
---------------------------------------------------------------------------
同步方式容易理解,编程简单,但是效率比较低;异步方式不容易理解,而且编程也比较复杂。为了综合同步和异步的优点,有人提出了半同步半异步的模型。上层提供同步接口;下层使用异步实现。
参考资料4中讲述半同步半异步模型,其例子是协议栈的实现,讲到数据包的到达是异步的,达到后触发中断,进行中断响应,借用其他执行体的堆栈结构。给上层应用提供同步接口。上层应用是一个执行体顺序的执行,有自己独立的堆栈结构。
在HS-HA.pdf中,举的例子是协议栈的实现,讲到数据包的到达是异步的,
---------------------------------------------------------------------------
参考:
http://www.ibm.com/developerworks/cn/linux/l-async/
http://en.wikipedia.org/wiki/
http://www.sogou.com/labs/
http://www.cs.wustl.edu/~
http://beej.us/guide/bgnet/
- 网络IO模型的分类
- 网络IO模型的简明教程
- 网络编程的5个IO模型
- 网络编程的5个IO模型
- Java IO:网络IO模型
- 网络io模型:epoll
- 网络IO模型
- 网络IO模型
- 网络IO模型
- 网络IO模型
- 网络IO模型
- 网络IO模型
- 网络IO模型
- 网络IO模型
- 网络IO模型
- 【网络模型】IO复用
- 网络IO模型
- 网络IO模型
- 解决TEMU对XP sp3中样本的trace结果为空
- Ubuntu 10.04 LTS 安装 sun-java6-jdk 错误解决办法
- 采用swing的Graphics画图
- java中ArrayList 、LinkList、List区别
- java web serivce初探
- 网络IO模型的分类
- 从ext前端发送异步请求到 struts的Action后端,并获取后端的返回信息
- Json格式数据转换
- 申请GoogleMap apikey
- CodeIgniter中语言设置
- #include <cctype>的函数
- JMS学习
- C#设计模式之16——解释器模式
- poj 2553 The Bottom of a Graph