关于阻塞与非阻塞 同步与异步的区别

本文深入解析了计算机系统中IO操作的两个关键阶段:等待数据和数据拷贝。详细阐述了阻塞/非阻塞与同步/异步的概念及其区别,帮助读者理解IO操作的本质。

一般来说IO分为两个阶段,第一阶段是等待数据阶段,第二阶段是内核空间的数据拷贝到用户空间,假设一个线程(或是进程)P准备执行一个IO操作的话它会经历以下过程:

第一阶段:

P发出一个IO请求,这时候会有两种情况:
1:立刻返回: 非阻塞
2:一直等待,P调用sleep/wait休眠或是挂起,让出CPU给别的线程/进程  阻塞


第二阶段:

这时内核的数据终于准备好了,
那么现在用户进程想要读取内核空间的数据有两种方式:
1:  P自己把数据从内核空间拷贝到用户空间       同步
2:P创建一个线程做数据copy的工作        异步
现在应该明白了吧。阻塞/非阻塞是针对IO的第一阶段的描述。异步/同步是针对IO的第二阶段的描述也就是IO的主体。

这里主要比较难理解的就是同步/异步。首先P在发起IO的请求的时候如果P本身还要负责IO请求后的数据copy(内核空间到用户空间)工作。那么我们就可以说是同步的。

如果P在发起IO操作后数据copy的工作由内核线程/进程或是P自己再创建一个线程/进程去完成,那么我们就可以称之为异步

 

同步IO和异步IO的区别:数据访问的时候数据是否阻塞

阻塞IO和非阻塞IO区别:应用程序的调用是否立即返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值