当前位置: 首页 > news >正文

二:操作系统之进程概念

揭秘操作系统核心:进程的生命旅程与五种状态

在现代计算机系统中,我们同时运行着各种各样的程序:浏览器、音乐播放器、文本编辑器、后台服务…… 操作系统如何有效地管理这些并发执行的任务,让它们既能共享系统资源,又不相互干扰,安全有序地运行?答案在于进程(Process)

进程是操作系统中最基本、最重要的概念之一。理解进程,就是理解操作系统的核心工作之一。

1. 什么是进程 (Process Concept)?

最简单也最准确的定义:进程是程序的一次执行实例。

这句话包含了几个关键点:

  • 程序 (Program): 程序是静态的,它是一组存储在磁盘上的指令集合。就像菜谱一样,只是一份蓝图或说明书。
  • 执行 (Execution): 进程是动态的,它代表了程序正在运行的过程。就像按照菜谱“做菜”一样,是一个正在进行中的活动。
  • 实例 (Instance): 同一个程序可以同时运行多次,每次运行都是一个独立的进程。比如,你可以同时打开多个浏览器窗口,每个窗口通常对应一个或多个独立的进程。

所以,当你双击一个应用程序图标时,操作系统就会为你创建一个进程,并将该程序的指令和数据加载到内存中,然后让 CPU 开始执行这些指令。

一个进程不仅仅包含程序代码,它还包含程序执行所需的各种资源和状态信息:

  • 程序代码 (Text Segment): 正在执行的程序的机器指令。
  • 程序数据 (Data Segment): 全局变量、静态变量等。
  • 堆 (Heap): 运行时动态分配的内存区域。
  • 栈 (Stack): 存储局部变量、函数参数和返回地址等,用于函数调用。
  • 进程控制块 (Process Control Block, PCB): 这是操作系统用来管理进程的关键数据结构。它包含了进程的几乎所有信息,如进程 ID (PID)、进程状态、程序计数器 (PC)、CPU 寄存器值、内存管理信息(页表/段表)、文件描述符表、调度信息、优先级等。PCB 是进程存在的唯一标志,操作系统通过 PCB 来跟踪和控制进程。

可以把 PCB 看作是进程的“身份证”和“状态记录表”。

2. 进程与程序的区别

通过上面的定义,我们可以明确区分进程和程序:

特征程序 (Program)进程 (Process)
概念静态的指令集合动态的程序执行实例
存在形式存储在磁盘或文件系统中存在于内存中,由操作系统管理
生命周期永久存在(除非被删除)有生命周期:创建、运行、终止
资源不拥有系统资源(如内存、文件句柄)拥有和控制系统资源
并发性不具备并发性可以并发执行(多个进程同时运行同一个程序)
实体无对应的系统实体操作系统管理的独立实体,有唯一的 PID 和 PCB

举例:

假设你在电脑上安装了 Google Chrome 浏览器 (chrome.exe)。

  • chrome.exe 文件:这是程序。它静静地躺在你的硬盘上,不会消耗 CPU 或内存(除了存储空间)。
  • 你打开了三个 Chrome 窗口:这时,操作系统为你创建了三个或更多(Chrome 会为每个标签页等创建独立进程)进程,每个进程都运行着 chrome.exe 的代码。这三个进程是独立的,它们有各自的内存空间(数据、堆、栈)、文件句柄(如打开的网页文件)、进程 ID。它们是 chrome.exe 这个程序的三次独立的执行实例。你关闭一个窗口(一个进程终止)并不会影响其他窗口(其他进程)。

3. 进程的状态 (Process States)

进程在其整个生命周期中,会经历不同的阶段,这些阶段被称为进程状态。操作系统需要跟踪进程的状态以便进行有效的管理和调度。常见的进程状态有五种:

  1. 新建 (New): 进程正在被创建。操作系统正在为其分配资源(如内存、PCB)。
    • 何时进入: 当用户启动一个程序(例如双击应用图标),或者一个进程通过系统调用(如 fork()) 创建另一个进程时。
    • 举例: 你刚点击运行某个程序,系统正在准备它。
  2. 就绪 (Ready): 进程已经被创建,所需的资源(除了 CPU)都已分配到位,并已被加载到主存。它已准备好随时运行,只等待 CPU 的调度
    • 何时进入: 新建状态的进程资源分配完成后;运行状态的进程时间片用完被剥夺 CPU 时;等待状态的进程等待的事件发生后。
    • 举例: 你的多个程序都已启动并加载到内存,等待 CPU 执行它们的指令。
  3. 运行 (Running): 进程的指令正在 CPU 上执行。在单核 CPU 系统中,任意时刻只有一个进程处于运行状态;在多核 CPU 系统中,每个核上最多有一个进程处于运行状态。
    • 何时进入: 操作系统调度器从就绪队列中选择一个进程分配 CPU。
    • 举例: 当前 CPU 正在执行你的浏览器进程的代码。
  4. 等待/阻塞 (Waiting / Blocked): 进程由于等待某个事件的发生而被暂停执行。这些事件通常是 I/O 操作完成、等待某个资源可用、等待接收某个信号等。处于等待状态的进程即使 CPU 空闲也无法运行。
    • 何时进入: 进程发出 I/O 请求(如读写文件、发送网络数据);进程等待某个锁或信号量;进程调用 sleep() 函数;进程等待子进程结束 (wait())。
    • 举例: 你的文本编辑器正在等待你输入键盘字符;你的音乐播放器正在等待从硬盘读取下一首歌曲。
  5. 终止 (Terminated): 进程执行完毕(正常退出),或者被操作系统或用户强制终止。操作系统会回收该进程所占用的所有资源(内存、文件描述符等),并最终移除其 PCB。
    • 何时进入: 进程调用 exit() 系统调用正常结束;进程收到终止信号被杀死;父进程调用 kill() 杀死子进程;操作系统出现错误终止

相关文章:

  • 例举3种强制类型转换和2种隐式
  • 【Bluedroid】蓝牙HID DEVICE 报告发送与电源管理源码解析
  • 《Python星球日记》 第92天:AI模型部署工程化基础
  • DSU-Net
  • 第二十八天打卡
  • 基于PageHelper的分页查询
  • Leetcode 3552. Grid Teleportation Traversal
  • 数据库触发器Trigger
  • 算法题(149):矩阵消除游戏
  • 大模型评测体系综述
  • 学习黑客Active Directory 入门指南(四)
  • 苍穹外卖--修改菜品
  • 【超详细】面试中问到事件循环(Event Loop)机制?
  • 如何本地部署Qwen3系列的大小模型235B/32B并进行推理服务及并发测试?
  • C#自定义扩展方法 及 EventHandler<TEventArgs> 委托
  • 【linux驱动】【设备树】按键设备树讲解
  • WaterStamp —— 一个实用的网页水印生成器开发记
  • 【周输入】510周阅读推荐-3
  • c/c++数据类型转换.
  • 二:操作系统之进程控制块(PCB)
  • 《习近平新时代中国特色社会主义思想学习论丛》第十一辑至第十五辑出版发行
  • IPO周报|本周2只新股申购,比亚迪、上汽“小伙伴”来了
  • 江苏疾控:下设部门无“病毒研究所”,常荣山非本单位工作人员
  • 下周或迎外贸“抢出口”高峰,跨境电商敏感货物如何便利化“登机”?
  • 人形机器人灵犀X2掌握新技能:有了“内心戏”,还会拳脚功夫
  • 圆桌丨新能源车超充技术元年,专家呼吁重视电网承载能力可能面临的结构性挑战