有哪些常见的 IO 模型?
操作系统-五种
UNIX 系统下, IO 模型一共有 5 种: 同步阻塞 I/O、同步非阻塞 I/O、I/O 多路复用、信号驱动 I/O 和异步 I/O。
这也是我们经常提到的 5 种 IO 模型。
Java 中 3 种常见 IO 模型
BIO
NIO
AIO

AIO : 用户发起系统调用后,等待内核将文件准备好,并拷贝到用户空间后,通知程序。Netty 之前也尝试使用过 AIO,不过又放弃了。这是因为,Netty 使用了 AIO 之后,在 Linux 系统上的性能并没有多少提升。AIO的底层实现仍使用EPOLL,没有很好实现AIO,因此在性能上没有明显的优势。Netty整体架构是reactor模型, 而AIO是proactor模型, 混合在一起会非常混乱,把AIO也改造成reactor模型看起来是把epoll绕个弯又绕回来
Java-网络IO
- Buffer 可以写入数据的内存块
- Channel 通道 一个channel对应着一个socket连接
Selector选择器: