挂起与阻塞

Posted by JimWang on 2021-02-03

挂起与阻塞

阻塞

线程在运行的过程中因为某些原因而发生阻塞,阻塞状态的线程特点是:该线程放弃CPU的使用,暂停运行,只有等导致阻塞的原因消除后才恢复,或者被其他线程中断阻塞,抛出异常

正在执行的进程暂时无法继续执行,导致进程调度,OS把处理器分配给了其他的就绪进程,那么受阻塞进程就进入了阻塞状态。

挂起

挂起进程在操作系统中可以定义为暂时被淘汰出内存的进程,机器的资源是有限的,在资源不足的情况下,操作系统对在内存中的程序进行合理的安排,其中有的进程被暂时调离出内存,当条件允许的时候,会被操作系统再次调回内存,重新进入等待被执行的状态即就绪态

相同与不同

相同

  1. 进程都暂停执行
  2. 进程都会释放cpu,涉及到上下文切换

不同

  1. 虽然都释放cpu,阻塞的进程会一直在内存内,而挂起的会通过中级调度,被置换到外存

  2. 发生时机不同:阻塞一般在进程等待资源(IO资源、信号量等)时发生;而挂起是由于用户和系统的需要,例如,终端用户需要暂停程序研究其执行情况或对其进行修改、OS为了提高内存利用率需要将暂时不能运行的进程(处于就绪或阻塞队列的进程)调出到磁盘

  3. 恢复时机不同:阻塞要在等待的资源得到满足后,才会进入就绪状态。被挂起的进程需要由挂起对象将其主动激活。