I/O模型随笔

  1. 阻塞IO模型(读写过程会发生阻塞现象)

     用户线程发出IO请求后,查看内核数据是否已经准备就绪,若未就绪,则线程释放CPU进入阻塞态;
     当内核数据准备完毕后,内核会将数据copy到用户线程,返回结果给用户线程,用户线程进入就绪态
    
  2. 非阻塞IO模型

     用户线程发起IO请求后,无需等待,会马上收到内核反馈,如果反馈结果为error, 则表示数据未准备就绪。
     用户线程会不断的去内核进行询问,直到数据准备好为止
     缺点:CPU占用率非常高
    
  3. 多路复用IO模型(如 Java的NIO)

     多个用户线程发起IO请求后,若内核数据未准备好,用户线程处于阻塞态,同时内核由单线程不断地轮询用户线程
     所需的数据是否准备完毕,准备完毕后通知用户线程,用户线程进行就绪态,等待进入执行态读取数据
    
  4. 信号驱动IO模型

    用户线程发起IO请求并注册一个信号函数,然后继续执行其他操作(不阻塞);内核准备完数据后发送信号给用户线程;
    用户线程收到信号后再去内核取出数据
    
  5. 异步IO模型(理想IO模型)

    用户线程发起IO请求后立即执行其他操作,内核数据加载完毕后,自动将数据拷贝到用户线程中,然后内核再发信息告诉
    用户线程IO请求读取完毕,全程用户线程只需发起IO请求这一个操作
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值