什么是NIO

NIO 技术概览
NIO Non-blocking I/O ,在 Java 领域,也称为 New I/O ),是一种同步非阻塞的 I/O 模型,也是 I/O 多路
复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、 I/O 处理问题的有
效方式。
IO 模型的分类
按照《 Unix 网络编程》的划分, I/O 模型可以分为:阻塞 I/O 模型、非阻塞 I/O 模型、 I/O 复用模型、信号
驱动式 I/O 模型和异步 I/O 模型,按照 POSIX 标准来划分只分为两类:同步 I/O 和异步 I/O
如何区分呢?首先一个 I/O 操作其实分成了两个步骤: 发起 IO 请求和实际的 IO 操作 。同步 I/O 和异步 I/O
区别就在于第二个步骤是否阻塞,如果实际的 I/O 读写阻塞请求进程,那么就是同步 I/O ,因此阻塞 I/O
非阻塞 I/O I/O 复用、信号驱动 I/O 都是同步 I/O ,如果不阻塞,而是操作系统帮你做完 I/O 操作再将结果
返回给你,那么就是异步 I/O
阻塞 I/O 和非阻塞 I/O 的区别在于第一步,发起 I/O 请求是否会被阻塞,如果阻塞直到完成那么就是传统的
阻塞 I/O ,如果不阻塞,那么就是非阻塞 I/O
阻塞 I/O 模型 :在 linux 中,默认情况下所有的 socket 都是 blocking
非阻塞 I/O 模型: linux 下,可以通过设置 socket 使其变为 non-blocking
I/O 复用模型:我们可以调用 select poll ,阻塞在这两个系统调用中的某一个之上,而不是真
正的 IO 系统调用上:
信号驱动式 I/O 模型:我们可以用信号,让内核在描述符就绪时发送 SIGIO 信号通知我们
异步 I/O 模型:用户进程发起 read 操作之后,立刻就可以开始去做其它的事。而另一方面,从内核
的角度,当它受到一个 asynchronousread 之后,首先它会立刻返回,所以不会对用户进程产生任
block 。然后,内核会等待数据准备完成,然后将数据拷贝到用户内存,当这一切都完成之后,
内核会给用户进程发送一个 signal ,告诉它 read 操作完成了:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值