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

文章目录

一、进程管理


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 调度无关的资源 需要与其它线程共享 , 这些 资源的拥有者是 进程 ;

  • 内存地址空间
  • 代码
  • 数据
  • 文件等资源
相关推荐
christine-rr4 小时前
【25软考网工】第五章(8)路由协议RIP、OSPF
运维·网络·网络工程师·软考·考试
LUCIAZZZ11 小时前
Caffeine快速入门
java·后端·spring·缓存·操作系统·springboot
ssslar12 小时前
MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - user/_sleep 是什么?做什么?
操作系统·xv6·risic-v
ssslar1 天前
MIT XV6 - 1.2 Lab: Xv6 and Unix utilities - pingpong
操作系统·risc-v·xv6
Watink Cpper1 天前
[Linux]多线程(一)充分理解线程库
linux·系统·进程·多线程·pthread
羑悻的小杀马特3 天前
【Linux篇章】Linux 进程信号1:解锁系统高效运作的 “隐藏指令”,开启性能飞跃新征程(精讲信号产生和保存)
linux·运维·服务器·学习·操作系统·进程信号
望获linux5 天前
北京亦庄机器人马拉松:人机共跑背后的技术突破与产业启示
linux·人工智能·机器人·操作系统·开源软件·rtos·具身智能
獭.獭.5 天前
Linux -- 操作系统
linux·操作系统·冯诺依曼体系
红白小蛋糕5 天前
《操作系统真象还原》调试总结篇
操作系统·内核·开发笔记
碎梦归途6 天前
23种设计模式-行为型模式之状态模式(Java版本)
java·jvm·设计模式·状态模式·软考·软件设计师·行为模式