IO模型笔记
IO模型笔记
UNIX下的5中IO模型
- 阻塞IO
- 非阻塞IO
- IO复用(select/poll)
- 信号驱动(SIGIO)
- 异步IO(POSIX的AIO相关)
一个输入通常包含两个不同的阶段:
- 等待数据就绪;
- 从 内核 向 进程 复制数据;
阻塞式I/O模型
非阻塞I/O模型
I/O复用模型
信号驱动式I/O模型
异步I/O模型
各种I/O模型对比
以上是操作系统底层实现的逻辑,对于操作系统(或者说C语言的网络编程实现来说)建立一个网络服务端的过程即socket、bind、listen;
通常来说java当中的BIO、NIO、AIO对应第第一个、第二个、以及第三第四个,复用IO本人理解来看,本身是一个阻塞式的IO模型,只是在应用层可以做成非阻塞的程度(通过轮训可用socket槽来实现、类似非阻塞模式通过不断检查来控制)。