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

二:操作系统之进程概念

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

在现代计算机系统中,我们同时运行着各种各样的程序:浏览器、音乐播放器、文本编辑器、后台服务…… 操作系统如何有效地管理这些并发执行的任务,让它们既能共享系统资源,又不相互干扰,安全有序地运行?答案在于进程(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() 杀死子进程;操作系统出现错误终止
http://www.xdnf.cn/news/7041.html

相关文章:

  • Unity学习总结篇(1)关于各种坐标系
  • 信息学奥赛一本通1012:计算多项式的值
  • Spring-Beans的生命周期的介绍
  • python3.13版本降为3.12
  • 基于STM32F103与Marvell88W8686的WIFI无线监控视频传输系统研发(论文)
  • 生成树的保护机制
  • 【运营商查询】批量手机号码归属地和手机运营商高速查询分类,按省份城市,按运营商移动联通电信快速分类导出Excel表格,基于WPF的实现方案
  • 院校机试刷题第六天:1134矩阵翻转、1052学生成绩管理、1409对称矩阵
  • AI驱动的研发流程:定义高度专业和系统化的规划基准
  • 软件架构设计--期末复习
  • 5月18总结
  • 拓展运算符
  • 海盗王改60帧时有关树木抖动的问题
  • 数字电子技术基础(六十)——使用Digital软件绘制脉冲触发的触发器
  • 《Python星球日记》 第89天:LlamaIndex 与知识图谱
  • 中国与全球电子取证行业市场报告(公开信息版)
  • 生产模式下react项目报错minified react error #130的问题
  • 互联网大厂Java求职面试:AI与大模型应用集成及云原生挑战
  • Java核心API实战:从字符串到多线程全解析
  • symfonos: 2靶场
  • Compose笔记(二十五)--Brush
  • 行业事件 | 中国灾害防御协会雷电灾害分会在京正式成立
  • MySQL开发规范
  • Atcoder Beginner Contest 406
  • 网络安全深度解析:21种常见网站漏洞及防御指南
  • 一文读懂----Docker 常用命令
  • SQL性能分析
  • 23种设计模式考试趋势分析之——适配器(Adapter)设计模式——求三连
  • IDE/IoT/搭建物联网(LiteOS)集成开发环境,基于 VSCode + IoT Link 插件
  • ubuntu18.04编译qt5.14.2源码