操作系统——CPU和内存、挂起和阻塞

CPU ≠ 内存

不妨把外存比作一个大仓库,里面有各种原材料,可以生产不同的东西。而CPU就是进行加工处理的车间。

一般来说,一个时间段,想要生产的东西也就那几样(是确定的,也是有限的,毕竟CPU也是有限的)。

产品确定了,原材料自然也是确定的。而当我们去取原材料,因为外存这个大仓库实在是大,且里面放的是所有的原材料。直接从这里取太过耗时。

所以我们把一个时间段要用到的原材料都放到了一个距离更近的小仓库,也就是内存。生产所需的材料直接从这取好了,大大缩短IO时间。

挂起(Suspend)

挂起是一种主动行为,因此恢复也应该要主动完成。

进程挂起的结果是从内存移到外存,所以挂起不占内存

因为挂起后还要受到CPU的监督(等待着激活),所以挂起不释放CPU
如果被挂起的线程任务优先级巨高,就永远轮不到其他线程任务运行。

挂起一般用于程序调试中的条件中断,当出现某个条件的情况下挂起,然后进行单步调试。

比如sleep(),不释放锁,占着CPU睡觉。

阻塞(Pend)

而阻塞是一种被动行为,是在请求IO资源时,发生的等待。 IO资源拿到后,自动加入就绪任务队列,等待分配CPU。

因为拿不到IO资源,所以阻塞时会放弃 CPU的占用。

比如wait(),释放锁,释放CPU,等待。

猜你喜欢

转载自blog.csdn.net/weixin_37641832/article/details/83217104