IO模型

linux中总共有5种IO模型,分别是阻塞IO模型非阻塞IO模型信号驱动IO模型IO复用模型异步IO模型

  1. 阻塞IO模型
    最简单的IO模型,线程或进程一直等待某个条件,条件满足才进行下一步操作,否则一直等待。

  2. 非阻塞IO模型
    应用进程与内核进行交互,没有获取到数据也直接返回,然后通过轮训的方式询问内核是否已经准备好数据。如果某一次轮训发现数据已经准备好,则将数据拷贝到用户空间中。

  3. 信号驱动IO模型
    应用进程预先向内核注册一个信号处理函数,然后进程返回,当数据准备好时内核会向进程发送一个信号,收到信号后进程会调用信号处理函数进行后续处理,把数据拷贝到用户空间。注意,信号驱动IO模型数据准备阶段是异步的,但数据拷贝是同步的,所以信号驱动IO模型不是异步模型。

  4. IO复用模型
    可以将多个应用进程注册在同一个管道上,由管道统一和内核进行交互,当管道中的某一个请求的数据准备好之后,进程再把数据拷贝到用户空间中。由于IO复用模型没有向内核注册信号处理函数,因此是阻塞的。

  5. 异步IO模型
    应用进程把请求传给内核后,直接返回,由内核直接负责数据的准备以及拷贝到用户空间中。完成这些操作后会向进程发送一个信号告知进程操作已完成。

java中有三种IO模型,分别是BIO(阻塞模型)、NIO(非阻塞模型)、AIO(异步模型)。三种IO模型对文件的操作依赖于底层操作系统的实现。可以看做是java对操作系统IO模型的封装。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值