【系统架构设计师】操作系统 - 进程管理 ① ( 进程概念 | 进程组成 | 进程 与 程序 | 进程 与 线程 | 线程 可共享的资源 - ☆考点 )

文章目录

一、进程管理


1、进程概念

进程概念 : 进程(Process)是 操作系统 中 程序 的 执行实例 , 是 资源 分配、调度 的 基本单位 ;

当一个 程序 被执行时 , 操作系统会为其创建一个 进程 , 并为其 分配所需的 资源 , 如 : CPU、内存、I/O设备等 ;

2、进程组成

进程组成 :

  • 程序块 : 程序可执行代码 ;
  • 进程控制块 : PCB , Process Control Block , 进程存在的标志 ;
    • 进程ID ( PID ) , 又称为 进程标识符
    • 进程状态
    • 程序计数器 ( PC ) , 程序执行位置信息
    • CPU 寄存器
    • 进程优先级
    • 队列指针 : 用于链接同一状态的进程 ;
    • 现场保护区 :
    • 资源信息(如打开的文件、使用的内存等)
  • 数据块 : 进程运行所需的数据资源 ;
    • 数据段(data segment):已初始化的全局变量和静态变量 ;
    • (Heap):动态分配的内存区域 ;
    • (Stack):用于存储函数调用信息、本地变量等 ;

3、进程 与 程序

进程 与 程序 :

  • 程序是 静态 的 , 存储在磁盘上 , 是一组指令和数据的集合 ;
  • 进程是 动态 的 , 是 " 程序 " 执行后在内存中的实例 , 并且拥有独立的资源 ;
  • 一个程序 可以启动 多个进程 , 如 : 同时打开多个浏览器窗口 , 每个窗口就是一个独立的进程 ;
对比项 进程(Process) 程序(Program)
定义 进程是程序的执行实例 ,是动态的 程序是静态的指令和数据集合
存储方式 进程存储在内存中,包含代码、数据、栈、堆等 程序通常存储在磁盘或其他存储设备上
运行状态 进程可以创建、运行、挂起、终止,有生命周期 程序本身是静态文件,不能直接运行
是否独立 进程是独立的,拥有自己的资源(如内存、文件等) 程序只是可执行文件,不能独立运行
多实例 一个程序可以有多个进程实例同时运行 程序本身只有一个副本
关系 进程是程序执行的实例 程序是进程运行的基础

4、进程 与 线程

进程 与 线程 :

  • 对应关系 : 线程 可以理解为 进程 的 子单位 , 一个程序 可以启动 多个进程 , 一个进程 可以启动 多个线程 ;
  • 调度主体 : 进程 是 资源分配、调度 的基本单位 ( 资源包括 CPU ) , 线程 只是 CPU 调度 的基本单位 ;
  • 资源共享 : 进程可以独立拥有资源 , 线程只能共享进程的资源 ;
    • 线程 只有自己的 CPU 调度相关资源 , 如 : PC 程序计数器 , 寄存器 , 栈 等 ;
    • 线程 执行所需的 内存地址空间、代码、数据、文件 都要共享进程的资源 ;
  • 主体通信 : 进程间 通信 ( IPC ) 比较复杂,线程间通信 ( 共享内存 ) 比较简单 ;
对比项 进程(Process) 线程(Thread)
定义 进程是程序的执行实例 ,是资源分配的基本单位 线程是进程中的执行流 ,是CPU 调度的基本单位
资源独立性 进程拥有独立的资源(如内存、文件、I/O 设备) 线程共享进程的资源(如内存、文件)
通信方式 进程间通信(IPC)需要特殊机制(如管道、共享内存、消息队列) 线程间通信无需额外机制,共享全局变量即可
调度开销 进程切换开销较大(需要保存和恢复资源) 线程切换开销较小(只需保存少量寄存器信息)
运行关系 进程可以包含多个线程,但至少有一个主线程 线程属于某个进程,不能独立存在
崩溃影响 进程崩溃不会影响其他进程,除非有父子进程关系 线程崩溃可能导致整个进程崩溃
应用场景 适用于独立运行的应用(如浏览器、数据库) 适用于需要并行执行的任务(如多线程下载、并行计算)

二、线程 可共享的资源 - ☆考点


进程 是 资源分配、调度 的基本单位 ( 资源包括 CPU ) , 线程 只是 CPU 调度 的基本单位 ;

线程 除了 CPU 调度相关资源 可以 独立拥有 之外 , 其它资源都需要 与其它线程共享 ;

线程不可共享资源 : CPU 调度相关资源 不可共享 , 也就是 线程独立拥有的资源 :

  • 程序计数器 PC
  • 寄存器
  • 栈 ( 栈指针 )

线程可共享资源 : 与 CPU 调度无关的资源 需要与其它线程共享 , 这些 资源的拥有者是 进程 ;

  • 内存地址空间
  • 代码
  • 数据
  • 文件等资源
相关推荐
软考诸葛老师1 小时前
2024下半年真题 系统架构设计师 论文写作 答案解析
系统架构·系统架构设计师·真题
GoGeekBaird12 小时前
69天探索操作系统-第52天:高级虚拟内存管理程序
后端·操作系统
GoGeekBaird1 天前
69天探索操作系统-第51天:内核错误处理深度解析 - 从异常到恢复
后端·操作系统
stackY、1 天前
【Linux】:封装线程
线程
charlie1145141912 天前
从0开始的操作系统手搓教程27:下一步,实现我们的用户进程
学习·架构·系统架构·操作系统·教程·手搓教程·用户线程
GoGeekBaird2 天前
69天探索操作系统-第50天:虚拟内存管理系统
后端·操作系统
JohnYan2 天前
工作笔记 - btop安装和使用
后端·操作系统
腾源会2 天前
OCAI + DeepSeek满血版双buff加成,OS运维从此告别焦虑
开源·操作系统·deepseek
七七知享2 天前
2024 Qiniu 跨平台 Qt 高级开发全解析
开发语言·qt·零基础·操作系统·跨平台·qt5·精通
郑州吴彦祖7722 天前
《深入解析Java synchronized死锁:从可重入锁到哲学家就餐问题》
java·线程·synchronized