1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 1. JAVA I/O演进历史 (1)jdk1.4之前 采用BIO模式 (2)jdk1.4 发布基于I/O多路复用的NIO (3)jdk1.7 发布NIO2.0,支持AIO(异步I/O操作),Netty并没有使用AIO 2. 用户线程和系统内核的交互 用户程序不直接和内核交互,而是通过缓冲区来进行交互,流程如下: (1)等待数据从网络上到达网卡,当所等待的数据到达时,他被复制到内核中的某个缓冲区。这个工作由操作系统自动完成。 (2)就是把内核缓冲区的数据复制到进程缓冲区。JAVA 举例 客户端请求:Linux通过网卡读取客户端的请求数据,将数据读取到内核缓冲区。 获取请求数据:JAVA服务器通过read系统调用,从linux内核缓冲区读取数据,再送入JAVA进程缓冲区。 服务端业务处理:JAVA服务器在自己的用户空间中处理客户端的请求。 服务端返回数据:JAVA服务器完成处理后,构建好的响应数据,讲这些数据通过write操作用户缓冲区写入内核缓冲区, 发送给客户端:LInux内核通过网络IO,将内核缓冲区中的数据写入网卡,网卡通过底层网络协议,将数据发送给客户端。
|