Java I/O History

《Netty 权威指南》(第二版)——第一章 Java 的 I/O 演进之路。

Linux 网络 I/O 模型简介

Linux 内核将所有外部设备都看做一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令,返回一个 file descriptor(fd,文件描述符)。而对一个 socket 的读写也会有相应的描述符,成为 socketfd(socket 描述符),描述符就是一个数字,它指向内核中的一个结构体(文件路径,数据区等一些属性)。
根据 UNIX 网络编程对 I/O 模型的分类,UNIX 提供了 5 种 I/O 模型:

  1. 阻塞 I/O 模型
  2. 非阻塞 I/O 模型
  3. I/O 复用模型
  4. 信号驱动 I/O 模型
  5. 异步 I/O
    看完了这里的描述,并没有完全理解这五种 I/O 模型,还是以后抽时间去读一下《UNIX 网络编程》吧!

I/O 多路复用技术

在 I/O 编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者 I/O 多路复用技术进行处理。I/O 多路复用技术通过把多个 I/O 的阻塞复用到同一个 select 的阻塞上,从而使用系统在单线程的情况下可以同时处理多个客户端请求。对于 Linux 系统支持 I/O 多路复用的调用:select、pselect、poll、epoll等以后还是去看专门讲解这方面的书籍吧!