操作系统:2. 进程管理

141 阅读6分钟

1. 进程与线程

1.1 进程的概念和特征

  1. 概念
  • 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
  • 进程映像:程序段+相关数据段+进程控制块PCB
  1. 特征:动态性、并发性、独立性、异步性、结构性

1.2 进程的状态与转换

  1. 状态
  • 运行态
  • 就绪态
  • 阻塞态
  • 创建态
  • 结束态
  1. 转换

image.png

1.3 进程控制

一般把进程控制用的程序段称为原语

  • 进程的创建
  • 进程的终止
  • 进程的阻塞和唤醒
  • 进程切换

1.4 进程的组织

  • 进程控制块(PCB)
  • 程序段
  • 数据段

1.5 进程的通信

  • 共享存储
  • 消息传递
  • 管道通信

1.6 线程概念和多线程模型

  1. 线程的基本概念
  • 引入目的:引入进程的目的是更好的使多道程序并发执行,提高资源利用率和系统吞吐量;引入线程的目的是减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能
  1. 线程和进程的比较
  • 调度、拥有资源、并发性、系统开销、地址空间和其他资源、通信方面
  1. 线程的属性

  2. 线程的实现方式

  • 用户级线程、内核级线程
  1. 多线程模型
  • 多对一模型、一对一模型、多对多模型

2. 处理机调度

2.1 调度的概念

  • 调度的基本概念:处理机调度是对处理机进行分配,即从就绪队列中按照一定的算法(公平、高效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行
  • 调度的层次:作业调度、中级调度、进程调度
  • 三级调度的联系

2.2 调度的时机、切换与进程

2.3 进程调度方式

  • 非剥夺调度方式,又称非抢占方式
  • 剥夺调度方式,又称抢占方式

2.4 调度的基本准则

  • CPU利用率

  • 系统吞吐量

  • 周转时间

    周转时间 = 作业完成时间 - 作业提交时间

    带权周转时间 = 作业周转时间 / 作业实际运行时间

  • 等待时间

  • 响应时间

2.5 典型的调度算法

  1. 先来先服务(FCFS)调度算法
  2. 短作业优先(SJF)调度算法
  3. 优先级调度算法
  • 适用于实时操作系统
  1. 高响应比优先调度算法
  • 主要用于作业调度,响应比R=(等待时间+要求服务时间)/要求服务时间,适用于分时操作系统
  1. 时间片轮转调度算法
  • 主要用于分时系统,时间片的大小对系统性能的影响很大
  1. 多级反馈队列调度算法
  • 时间片轮转调度算法和优先级调度算法的综合与发展,适用于分时操作系统

3. 进程同步

3.1 进程同步的基本概念

在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系,为了协调进程之间的相互制约关系,引入了进程同步的概念。

  • 临界资源:一次仅允许一个进程使用的资源称为临界资源,如物理设备、被若干进程共享的变量、数据等。访问临界资源的那段代码成为临界区。
  • 同步:直接制约关系,为协调工作次序而等待、传递信息所产生的制约关系
  • 互斥:间接制约关系,为禁止两个进程同时进入临界区,同步机制应遵循准则:空闲让进、忙则等待、有限等待、让权等待

3.2 实现临界区互斥的基本方法

软件实现方法、硬件实现方法

3.3 信号量

信号量机制是一种功能较强的机制,可用来解决互斥和同步问题,它只能被两个标准的原语wait(S)和signal(S)访问,也可记为“P操作”和“V操作”

  • 整型信号量
  • 记录型信号量
  • 利用信号量实现同步
  • 利用信号量实现进程互斥
  • 利用信号量实现前驱关系
  • 分析进程同步和互斥问题的方法步骤:关系分析、整理思路、设置信号量

3.4 管程

  • 管程的定义:这个代表共享资源的数据结构,以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序,称为管程
  • 条件变量

3.5 经典同步问题

  • 生产者-消费者问题:同步且互斥
  • 读者-写者问题:关键特征-互斥访问的计数器count
  • 哲学家进餐问题
  • 吸烟者问题

4. 死锁

4.1 死锁的概念

  1. 死锁的定义
  • 多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进
  1. 死锁产生的原因
  • 系统资源的竞争
  • 进程推进顺序非法
  • 死锁产生的必要条件:互斥、不剥夺、请求并保持、循环等待

4.2 死锁的处理策略

  • 要么,事先预防避免死锁的产生,要么,允许死锁产生,但当死锁发生时能检测出死锁并恢复。具体包括:死锁预防(破坏产生死锁的四个条件之一)、避免死锁(在资源动态分配过程中,防止系统进入不安全状态)、死锁的检测及解除

4.3 死锁预防

  • 破坏互斥、破坏不剥夺、破坏请求并保持(静态分配法)、破坏循环等待(顺序资源分配)

4.4 死锁避免

  1. 系统安全状态
  • 所谓安全状态,是指系统能按某种进程推进顺序(p1, p2, ...,pn)为每个进程Pi分配其所需的资源,直至满足每个进程对资源的最大需求,使每个进程都可顺序完成。此时称p1,p2,...,pn为安全序列。若系统无法找到一个安全序列,则称系统处于不安全状态
  1. 银行家算法

    (1) 数据结构描述

  • 可利用资源向量Available:Available[j]=K表示系统中现有Rj类资源K个

  • 最大需求矩阵Max: Max[i][j]=K表示进程i需要Rj类资源最大数目为K

  • 分配矩阵Allocation:Allocation[i][j]表示进程i已分配Rj类资源为K

  • 需求矩阵Need: Need[i][j]表示进程i还需要Rj类资源为K

  • 三矩阵关系:Need = Max - Allocation

    (2) 银行家算法描述

    (3) 安全性算法

4.5 死锁检测与解除

  1. 资源分配图

  2. 死锁定理

  • 简化资源分配图可检测系统状态S是否为死锁状态。S为死锁的条件是当且仅当S状态的资源分配图是不可完全简化的,该条件为死锁定理
  1. 死锁解除
  • 资源剥夺法、撤销进程法、进程回退法

5. 本章疑难点

  • 进程与程序的区别与联系
  • 死锁与饥饿
  • 银行家算法的工作原理
  • 进程同步、互斥的区别与联系
  • 作业和进程的关系