基础概念
进程的概念和特征 Process
概念
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
进程存在的唯一标志―进程控制块
特征
- 动态性
- 并发性
- 独立性
- 异步性
- 结构性
进程的状态与转换
- 运行态
- 就绪态
- 阻塞态
- 创建态
- 结束态
- 前 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)