进程生命周期-架构快速进阶教程
1. 概述
在本教程中,我们将讨论操作系统中进程的生命周期。
2. 什么是进程?
在操作系统中,进程是当前正在执行的计算机程序的实例。因此,具有活动状态的计算机程序是一个进程。例如,用户正在打开 Web 浏览器进行 Web 冲浪或使用某些音乐播放器应用程序播放音乐。
当我们想要同时运行多个进程时,这些进程会按顺序执行。例如,让我们有四个进程。
让我们看看进程执行的概念模型:
在这里,进程框的大小表示进程的执行时间。操作系统根据进程的执行时间和开始时间从左到右开始执行进程:
在我们继续前进之前需要注意的一点是,过程和程序是不一样的。程序是存储在操作系统内存中的可执行文本文件。当我们执行文本文件时,它变成了一个进程。程序包含一些命令和指令,这些命令和指令是为执行某些特定任务而编写的。进程实际上正在操作系统中执行这些任务。
进程和程序之间的另一个根本区别是,多个用户可以使用相同的文本运行同一个程序,但程序文件的每次执行都会创建一个具有唯一进程 ID 的不同进程。
3. 进程布局
当用户执行程序时,它成为一个进程并加载到操作系统的主内存中。在主存储器中,隐含的进程布局有四个部分:堆栈、堆、数据部分和文本部分。每个部分都包含与进程相对应的一些信息:
堆栈存储临时数据,例如局部变量和函数参数。在进程运行时,它需要内存。堆是动态分配给进程的内存。数据部分存储初始化的全局变量和静态变量。下一节包含已编译的程序代码。
4. 进程的属性
进程包含各种属性。这些属性存储在过程控制块 (PCB) 中,也称为任务控制块。一些重要的属性是进程 ID、进程状态、CPU 调度信息、I/O 信息、记帐信息、内存管理信息等。
每个进程都可以使用进程 ID 唯一标识。它有助于将一个过程与另一个过程区分开来。在整个运行时中,每个进程在特定时刻都有一些与之关联的状态。进程状态显示进程在特定运行时的状态。
每个操作系统可能使用不同的调度算法。操作系统根据调度算法执行进程。CPU 调度信息包含有关操作系统当前正在使用的调度的信息。每个进程都需要一些 I/O 设备来执行。I/O 设备的详细信息存储在 I/O 信息属性中。
在执行进程时,了解与记帐相关的信息至关重要,例如用于进程执行的 CPU 量、执行 ID。进程还包含有关操作系统内存管理的信息。
5. 进程生命周期
当用户执行进程时,它会在终止之前经历几个阶段。这些阶段可能因操作系统而异。常见的进程生命周期可以有两种、五种或七种状态。
5.1. 两态模型
最简单的进程生命周期模型仅包含两种状态:正在运行和未运行。因此,在此模型中,进程要么在 CPU 上运行,要么未运行:
创建新进程时,该进程将进入未运行状态。最初,该过程存储在称为调度程序的程序中。当调度程序意识到 CPU 是空闲的时,它允许进程移动到 CPU。当调度程序允许进程使用 CPU 时,进程将进入运行状态。
当 CPU 空闲时,CPU 调度程序负责选择一个进程并将其发送到 CPU。CPU 调度程序根据操作系统使用的调度方案选取进程。
5.2. 五态模型
五态进程生命周期是双态模型的扩展版本。当所有处于未运行阶段的程序都准备好执行时,双状态模型可以高效工作。但在某些操作系统中,由于某些 I/O 操作不可用,某些进程可能尚未准备好进入运行状态。这些问题可以通过将未运行状态拆分为两种状态来解决:
开始或新状态表示刚刚创建进程。程序在调度程序中,等待移动到主内存中。一旦进程进入主内存,它就会将状态从开始更改为就绪。
当进程位于主内存中并等待 CPU 时,它处于就绪状态。当 CPU 变为空闲状态时,进程将移动到 CPU 中进一步执行。
如果进程处于运行状态,则当前正在 CPU 中执行。
在 CPU 中完成执行后,进程可能不会进入终止阶段。相反,它可能会等待某些 I/O 操作或同步信号等的完成。在这种情况下,该过程将进入等待阶段。当 CPU 再次空闲时,进程将进入就绪状态。从就绪状态,进程将达到正在运行状态。
最后,当进程完成其执行或可能由于某种原因被用户中止时,它将进入终止阶段。
5.3. 七态模型
五态模型的扩展版本是七态模型。此模型中添加了两种新状态:挂起就绪和挂起等待。让我们看一下状态图:
有时,处于就绪状态的进程可能会从主内存中交换,CPU 调度程序会将进程移动到状态为挂起就绪的外部存储中。每当进程移动到主内存中时,进程都可以转换回就绪状态。
由于缺少主内存,处于等待状态的进程可能会移动到辅助存储中。然后,进程进入挂起等待阶段。从此阶段开始,进程可以返回到等待阶段,也可以进入挂起就绪阶段。
6. 结论
在本教程中,我们了解了操作系统中进程的生命周期。我们提出了三个进程生命周期模型,并进行了详细说明。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix