大家好,我是林译川,今天我们来聊聊操作系统中的两个重要概念——阻塞和挂起。它们虽然听起来相似,但实际上有着本质的区别。读完这篇文章,你将能清晰地理解这两个状态,以及它们在操作系统中的作用。
阻塞,顾名思义,就是进程因为某些原因(比如I/O请求、申请缓冲区失败等)暂时无法继续执行。这时候,操作系统会进行进程调度,将CPU分配给其他就绪进程,而将受阻进程挂起。这个过程涉及到上下文切换,也就是说,CPU的控制权从当前进程转移到了其他进程。
挂起,则是因为系统和用户的需要而引入的操作。进程被挂起后,会处于静止状态。如果进程正在执行,它会暂停执行;如果原本处于就绪状态,则不再接受调度。
那么,它们有什么共同点和不同点呢?
- 共同点:
- 1. 进程都暂停执行。
- 2. 进程都释放CPU,即两个过程都会涉及上下文切换。
- 不同点:
- 1. 对系统资源占用不同:虽然都释放了CPU,但阻塞的进程仍处于内存中,而挂起的进程通过“对换”技术被换出到外存(磁盘)中。
- 2. 发生时机不同:阻塞一般在进程等待资源(IO资源、信号量等)时发生;而挂起是由于用户和系统的需要,例如,终端用户需要暂停程序研究其执行情况或对其进行修改、OS为了提高内存利用率需要将暂时不能运行的进程(处于就绪或阻塞队列的进程)调出到磁盘。
- 3. 恢复时机不同:阻塞要在等待的资源得到满足(例如获得了锁)后,才会进入就绪状态,等待被调度而执行;被挂起的进程由将其挂起的对象(如用户、系统)在时机符合时(调试结束、被调度进程选中需要重新执行)将其主动激活。
了解了这些,你对阻塞和挂起有了更深的认识吗?这两个概念在操作系统中扮演着重要的角色,对于理解系统的运行机制非常有帮助。如果你对操作系统还有更多疑问,欢迎访问新派编程网,那里有更多精彩内容等你探索。
我是林译川,我们下期再见!
