什么是进程挂起和进程切换?
让我们首先了解什么是进程挂起。
进程挂起
当主存中的进程进入阻塞状态时,操作系统会将一个进程挂起,将其放入挂起状态并转移到磁盘。内存中空闲的空间用于调入另一个进程。
许多操作系统都围绕就绪、运行、阻塞状态。但通常,操作系统的运行中还有一个挂起状态。
如果任何处于就绪状态的进程没有占用主存,操作系统会将一个阻塞进程换出到挂起队列。
假设,当一个挂起进程准备运行时,它会进入就绪挂起队列。因此,我们还有另外两种状态:阻塞挂起和就绪挂起。
目的
进程挂起的目的如下:
交换
定时
交互式用户请求
父进程请求
现在让我们讨论进程切换。
进程切换
当操作系统从当前运行的进程获得控制权时,随时可能发生进程切换。让我们考虑一下系统中断。有两种类型的系统中断,如下所示:
中断
陷阱
切换进程
当我们可以切换进程时,将在下面解释。
监督调用 - 程序的显式请求,例如来自文件的请求。该进程可能会被阻塞。
陷阱 - 上一条指令导致的错误。这可能会导致进程移至终端状态。
中断 - 这是当前进程外部执行的原因。
进程切换步骤
进程切换的步骤如下:
保存 CPU 上下文(使用模式位从用户模式切换到内核模式)。
更新当前进程的 PCB(进程控制块)。
将当前进程的 PCB 移动到相应的队列。
选择另一个进程执行。(由 CPU 调度程序)
更新所选进程
更新内存管理结构
恢复新 PCB 的 CPU 上下文(从内核模式切换到用户模式)。
目的
进程切换是操作系统调度程序从一个正在运行的程序切换到另一个程序。这需要保存当前正在执行程序的所有状态,包括其寄存器状态、相关的内核状态及其整个虚拟内存配置。然后加载新程序的所有状态,并继续执行。
区别
进程切换和进程挂起的主要区别如下:
进程挂起
挂起的进程不会立即可用。
进程可能正在等待事件,也可能不在等待。
在代理发出移除命令之前,进程可能不会从挂起状态中移除。
进程切换
进程切换也称为上下文切换,它涉及保存信息。
更新控制信息。
并恢复 CPU 信息。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP