logo
导航

01. 基本概念

进程与线程的基本概念

进程(Process)

定义:进程是程序在计算机上的一次执行过程,是系统进行资源分配和调度的基本单位。

特征

  1. 动态性:进程是程序的执行过程,具有生命周期
  2. 并发性:多个进程可以同时存在和运行
  3. 独立性:进程是独立的资源分配单位
  4. 结构性:进程由程序、数据和进程控制块组成

进程的组成

  • 程序段:存放程序代码
  • 数据段:存放程序运行时的数据
  • 进程控制块(PCB):存放进程的管理信息

进程控制块(PCB)

PCB 的作用:PCB 是操作系统管理进程的核心数据结构,包含进程的所有管理信息。

PCB 的主要内容

  1. 进程标识信息

    • 进程 ID(PID)
    • 父进程 ID(PPID)
    • 用户 ID(UID)
  2. 处理机状态信息

    • 通用寄存器内容
    • 程序计数器(PC)
    • 程序状态字(PSW)
    • 栈指针
  3. 进程调度信息

    • 进程状态
    • 进程优先级
    • 调度队列指针
    • 其他调度参数
  4. 进程控制信息

    • 程序和数据地址
    • 进程同步和通信机制
    • 资源清单
    • 链接指针

线程(Thread)

定义:线程是进程内的一个执行单元,是 CPU 调度的基本单位。

特征

  1. 轻量级:线程的创建、撤销和切换开销小
  2. 共享性:同一进程内的线程共享进程的资源
  3. 并发性:多个线程可以并发执行
  4. 独立性:每个线程有独立的程序计数器和栈

线程与进程的关系

进程
├── 代码段(共享)
├── 数据段(共享)
├── 文件描述符(共享)
├── 线程1
│   ├── 程序计数器
│   ├── 寄存器集合
│   └── 栈
├── 线程2
│   ├── 程序计数器
│   ├── 寄存器集合
│   └── 栈
└── ...

进程与线程的区别

特征进程线程
资源分配独立的内存空间共享进程的内存空间
创建开销大(需要分配内存)小(共享已有资源)
切换开销大(需要切换内存空间)小(只需切换寄存器)
通信方式进程间通信(IPC)共享内存、全局变量
并发性进程级并发线程级并发
独立性完全独立相对独立

多线程模型

1. 用户级线程(ULT)

特点

  • 线程管理由用户程序完成
  • 操作系统不知道线程的存在
  • 线程切换不需要内核参与

优点

  • 线程切换开销小
  • 调度算法灵活
  • 可移植性好

缺点

  • 一个线程阻塞会影响整个进程
  • 无法利用多核 CPU

2. 内核级线程(KLT)

特点

  • 线程管理由操作系统内核完成
  • 内核为每个线程分配资源
  • 线程切换需要内核参与

优点

  • 可以充分利用多核 CPU
  • 一个线程阻塞不影响其他线程
  • 调度更加公平

缺点

  • 线程切换开销大
  • 系统资源消耗多

3. 混合模型

特点

  • 结合用户级线程和内核级线程的优点
  • 用户级线程映射到内核级线程
  • 提供更好的性能和灵活性

实现方式

  • 多对多模型:多个用户线程映射到多个内核线程
  • 一对一模型:每个用户线程对应一个内核线程
  • 多对一模型:多个用户线程映射到一个内核线程

进程状态

基本状态

  1. 就绪状态(Ready)

    • 进程已获得除 CPU 外的所有资源
    • 等待 CPU 调度执行
    • 在就绪队列中排队
  2. 运行状态(Running)

    • 进程正在 CPU 上执行
    • 占用 CPU 资源
    • 同一时刻只能有一个进程处于运行状态
  3. 阻塞状态(Blocked)

    • 进程等待某个事件或资源
    • 无法被 CPU 调度
    • 在阻塞队列中等待

状态转换

就绪状态 ←→ 运行状态 ←→ 阻塞状态
    ↑           ↓           ↓
    └───────────┴───────────┘

转换条件

  • 就绪 → 运行:CPU 调度器选择该进程执行
  • 运行 → 就绪:时间片用完或被更高优先级进程抢占
  • 运行 → 阻塞:进程请求 I/O 操作或等待资源
  • 阻塞 → 就绪:等待的事件发生或资源可用

进程控制

进程创建

创建方式

  1. 系统初始化:系统启动时创建系统进程
  2. 用户请求:用户通过命令或程序创建进程
  3. 进程派生:现有进程创建子进程

创建过程

  1. 分配 PCB
  2. 分配内存空间
  3. 初始化 PCB
  4. 将进程加入就绪队列

进程撤销

撤销方式

  1. 正常结束:进程执行完毕
  2. 异常结束:进程执行出错
  3. 外部干预:被其他进程或用户终止

撤销过程

  1. 释放进程占用的资源
  2. 释放 PCB
  3. 通知父进程

进程切换

切换时机

  • 时间片用完
  • 更高优先级进程就绪
  • 当前进程阻塞
  • 当前进程结束

切换过程

  1. 保存当前进程的上下文
  2. 更新 PCB 信息
  3. 选择下一个要执行的进程
  4. 恢复新进程的上下文
  5. 跳转到新进程执行