关于五种IO模型的小笔记

五种IO模型的小笔记

本次笔记主要是记录学习这五种IO模型时总是容易混淆或者忘记,如今我要理解它!记下它!学习资源来源:网络上各种文章、微信视频号【程序员老王Go】
------五种io模型------
—阻塞IO—:进程在发起IO请求到IO请求数据完成整个阶段内进程都处于阻塞状态。

—非阻塞IO—:进程在发起IO请求给内核处理,如果内核缓存中没有数据/数据没有准备好,就会立刻返回一个错误表明IO数据还没准备好,此时用户进程处于非阻塞状的一个状态,不会腾出CPU并且不断询问内核数据是否准备好了,如果内核缓存已经有了IO数据则内核会将缓存中的IO数据拷贝给用户进程,此时用户进程也处于阻塞状态。

—IO多路复用—:多个进程IO注册在一个select上,然后专门以另外一个进程调用该select,如果注册的进程IO都没有数据到达只会阻塞调用select的进程,如果有一个进程IO数据已经ready了,select就会立即返回并且通知相应的进程来读取数据。

—信号驱动IO—:当进程发起IO操作会向内核注册一个信号处理函数,然后进程返回不阻塞,继续执行其他的处理操作(应用程序没有被IO操作所阻塞),当内核IO数据准备就绪时就会发出一个信号给进程,进程便在信号处理函数调用IO来处理数据。

—异步IO—:当进程发起一个IO操作,进程会立刻返回不阻塞也不会返回结果,当内核把整个IO处理完成后会通知进程结果

其中阻塞IO、非阻塞IO、IO多路复用、信号驱动IO都是同步IO模式,数据从内核空间拷贝到用户空间的时候进程都处于阻塞状态。
而异步IO是异步IO模式,用户进程和IO之间是完全异步的,各干各的,在IO数据从内核空间拷贝到用户空间的时候进程也不会阻塞,内核会通知进程处理完成。

其中IO多路复用又叫异步阻塞IO信号驱动IO又叫异步非阻塞IO

是否阻塞:其实就是看进程是否会腾出CPU
同步/异步的定义:其实就是看进程调了一个方法/事件处理后要不要去等它返回结果后在执行后续操作

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值