-
阻塞IO模型(读写过程会发生阻塞现象)
用户线程发出IO请求后,查看内核数据是否已经准备就绪,若未就绪,则线程释放CPU进入阻塞态; 当内核数据准备完毕后,内核会将数据copy到用户线程,返回结果给用户线程,用户线程进入就绪态
-
非阻塞IO模型
用户线程发起IO请求后,无需等待,会马上收到内核反馈,如果反馈结果为error, 则表示数据未准备就绪。 用户线程会不断的去内核进行询问,直到数据准备好为止 缺点:CPU占用率非常高
-
多路复用IO模型(如 Java的NIO)
多个用户线程发起IO请求后,若内核数据未准备好,用户线程处于阻塞态,同时内核由单线程不断地轮询用户线程 所需的数据是否准备完毕,准备完毕后通知用户线程,用户线程进行就绪态,等待进入执行态读取数据
-
信号驱动IO模型
用户线程发起IO请求并注册一个信号函数,然后继续执行其他操作(不阻塞);内核准备完数据后发送信号给用户线程; 用户线程收到信号后再去内核取出数据
-
异步IO模型(理想IO模型)
用户线程发起IO请求后立即执行其他操作,内核数据加载完毕后,自动将数据拷贝到用户线程中,然后内核再发信息告诉 用户线程IO请求读取完毕,全程用户线程只需发起IO请求这一个操作
I/O模型随笔
最新推荐文章于 2021-03-17 23:23:39 发布