操作系统中睡眠、阻塞、挂起的区别形象解释
作者:网络转载 发布时间:[ 2013/9/30 14:21:41 ] 推荐标签:
“阻塞(pend)”与“挂起(suspend)”的区别? [
操作系统中睡眠、阻塞、挂起的区别形象解释
首先这些术语都是对于线程来说的。对线程的控制好比你控制了一个雇工为你干活。你对雇工的控制是通过编程来实现的。
挂起线程的意思是你对主动对雇工说:“你睡觉去吧,用着你的时候我主动去叫你,然后接着干活”。
使线程睡眠的意思是你主动对雇工说:“你睡觉去吧,某时某刻过来报到,然后接着干活”。
线程阻塞的意思是,你突然发现,你的雇工不知道在什么时候没经过你允许,自己睡觉呢,但是你不能怪雇工,肯定你这个雇主没注意,本来你让雇工扫地,结果扫帚被偷了或被邻居家借去了,你又没让雇工继续干别的活,他只好睡觉了。至于扫帚回来后,雇工会不会知道,会不会继续干活,你不用担心,雇工一旦发现扫帚回来了,他会自己去干活的。因为雇工受过良好的培训。这个培训机构是操作系统。
——————————————————————————————————————————————
我是这么认为的:
挂起和阻塞,使进程失去CPU,阻塞一般是被动的需要等待资源,而挂起可以被别的进程给抢占导致挂起,也可以自己主动挂起自己。阻塞一般是TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE,而挂起除了这两个,还可以是TASK_RUNNING。
——————————————————————————————————————————————
挂起是主动的,一般需要用挂起函数进行操作,若没有resume的动作,则此任务一直不会ready。而阻塞是因为资源被其他任务抢占而处于休眠态。两者的表现方式都是从绪态里“清掉”,即对应标志位清零,只不过实现方式不一样.
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11