同步、异步、阻塞、非阻塞

用户空间和内核空间

用户空间:用户空间是常规进程所在的区域,是非特权的空间,在该空间运行的代码不能访问硬件设备
内核空间:是操作系统所在的区域,是特权空间,能与设备控制器通讯,控制着用户区域进程的运行状态,最重要的是所有的I/O都直接或间接的通过内核空间。

运行内容是否有特权是否可以访问硬件
用户进程常规进程
内核进程操作系统
I/0模型

对于网络的I/O操作,可以分为两个准备阶段和操作阶段。
准备阶段:判断数据是否能够操作(即等待数据是否可用),在内核空间进行。
操作阶段:从内核缓冲区拷贝数据到用户缓冲区,这是实际的I/O操作。
在这里插入图片描述

同步&异步

同步/异步是用户空间的调用
同步 I/O:用户调用系统I/O服务,如果内核空间没有数据,进程将被挂起,内核着手把数据读进内存。
异步 I/O:用户发起系统调用,系统会立即返回,如果没有数据,就返回特定标识,由系统负责等待数据,数据到达就通知用户。

实际上同步与异步是针对应用程序与内核的交互而言的。同步过程中进程触发IO操作并等待或者轮询的去查看IO操作是否完成。异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通知进程IO完成。如下图所示:
在这里插入图片描述

阻塞&非阻塞

阻塞/非阻塞是内核空间的调用
阻塞:内核空间判断数据是否到达,没有到达就处于等待状态。
非阻塞:内核判断数据是否到达,如果未到达就立即返回。

简单理解为需要做一件事能不能立即得到返回应答,如果不能立即获得返回,需要等待,那就阻塞了,否则就可以理解为非阻塞。如下图所示:
在这里插入图片描述

参考资料

https://www.cnblogs.com/Anker/p/3254269.html
https://blog.csdn.net/qq_32725491/article/details/78679414
https://blog.csdn.net/lengxiao1993/article/details/78154467
https://www.cnblogs.com/MRRAOBX/articles/3617440.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值