基础概念

相关提炼内容见 processthread

进程的概念和特征 Process

概念

进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

进程存在的唯一标志―进程控制块

特征

  • 动态性
  • 并发性
  • 独立性
  • 异步性
  • 结构性

进程的状态与转换

process-state

  • 运行态
  • 就绪态
  • 阻塞态
  • 创建态
  • 结束态
  • 前 3 种是基本状态
  • 状态的转换
    • 就绪态 → 运行态
    • 运行态 → 就绪态
    • 运行态 → 阻塞态
    • 阻塞态 → 就绪态
    • 一个进程从运行态变成阻塞态是主动还是被动行为―主动行为
    • 从阻塞态变成就绪态是主动行为还是被动行为―是被动行为,需要其他相关进程的协助

进程控制

  • 进程的创建:创建原语
  • 进程的终止:撤销原语
    • 引起进程终止的事件主要有 ↓
      • 正常结束
      • 异常结束
      • 外界干预
  • 进程的阻塞和唤醒:阻塞原语(Block)、唤醒原语(Wakeup)
  • 进程切换

进程的组织

进程控制块 Process Control Block, PCB

pcb

实例

  • 进程描述信息
    • 进程描述符 PID Process ID
    • 用户描述符 UID User ID
  • 进程控制和管理信息
    • 当前进程状态
    • 进程优先级
  • 资源分配清单
  • 处理机相关信息

程序段―能被进程调度程序调度到 CPU 执行的程序代码段

数据段―可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果

进程的通信

ipc

低级通信方式―PV 操作

高级通信方法

  • 共享存储
  • 消息传递:直接通信方式 和 间接通信方式
  • 管道通信―是消息传递的一种特殊方式
    • 限制管道大小
    • 读进程也可能工作得比写进程快
    • 注意―从管道读数据时一次性操作,数据一旦被读取,就被管道抛弃

线程概念和多线程模型

线程 Thread

  • 概念:可以简单地理解为「轻量级进程」,是一个基本的 CPU 执行单元
  • 组成
    • 线程 ID
    • 程序计数器
    • 寄存器集合
    • 堆栈
  • 基本状态
    • 就绪
    • 阻塞
    • 运行
  • 进程与线程的区别
    • 调度:线程是独立调度的基本单位,进程是拥有资源的基本单位
    • 拥有资源: 进程是拥有资源的基本单位,而线程不拥有系统资源(除了一点点必不可少的资源)
    • 并发性:
    • 系统开销:
    • 地址空间和其他资源:进程的地址空间之间相互独立,统一进程的各线程共享进程的资源,某进程内的线程对于其他进程不可见
    • 通信方面:进程间通信(IPC)需要进程同步和互斥手段的辅助,以保证数据的一致性
  • 线程的属性 ↓
    • 线程是一个轻型实体,它不拥有系统资源,但每个线程都应有一个唯一的标识符和一个线程控制块,线程控制块记录线程执行的寄存器和栈等现场状态
    • 不同线程可以执行相同的程序,即同一个服务程序被不同的用户调用时,操作系统把它们创建成不同的线程
    • 同一进程的各个线程共享该进程所拥有的资源
    • 线程是处理机的独立调度单位,多个线程是可以并发执行的
    • 一个线程被创建后,便开始了它的生命周期,直至终
  • 线程的实现方式
    • 用户级线程 User-Level Thread, ULT
    • 内核级线程 Kernel-Level Thread, KLT ,也称为内核支持的线程
  • 多线程模型:有些系统同时支持用户线程和内核线程,由此产生了不同的多线程模型
    • 多对一模型―将多个用户级线程映射到一个内核级线程
    • 一对一模型―将每个用户及线程映射到一个内核级线程
    • 多对多模型―将 N 个用户及线程映射到 M 个内核级线程上,(N ≥ M)