[第二章]进程的描述与控制

前趋图和程序执行

前趋图

有向无关图,用于描述程序执行先后顺序

表示方式

结点:表示一条语句、一个程序或一段进程(P1、P2)
有向边:P1→P2或P={P1,P2}→=(P1,P2)

程序的顺序执行

  • 程序执行具有固定的时序
  • 特征:顺序性、封闭性、可再现性

程序的并发执行

  • 特征:间断性、失去封闭性、不可再现性

进程的描述

进程的特征和定义

进程是程序的执行过程,是系统进行资源分配调度的一个独立单位
目的:为了使程序可以并发执行,并且可以对并发执行的程序加以描述和控制。

进程的特征

  • 结构特征
    • 进程控制块(PCB)
    • 进程由程序段、数据段和进程控制块三部分组成
  • 动态性
    • 由创建而产生,由调度而运行,由得不到资源而阻塞,由撤销而消亡
  • 并发性
  • 独立性
    • 进程是独立获得资源的基本单位
  • 异步性(间断性)
    • 各自独立,速度不可预知

程序和进程的比较

  • 程序是静态的,进程是动态的;
  • 程序是静态指令的有序集合,进程是系统分配调度的独立单位,能与其他进程并发执行,更能真实地描述并发,而程序不能;
  • 程序可作为软件资源长期保存,进程只是一次执行过程,是暂时的,进程是结构化的,由程序和数据、PCB组成的
  • 进程有生命周期,有诞生有消亡,短暂的;
  • 一个程序可对应多个进程;
  • 进程具有创建其他进程的功能,而程序没有

进程状态及转换

  • 基本状态
    • 就绪状态(Ready):得到CPU就可以运行
    • 运行状态(Running)
    • 等待/阻塞状态(Wait/Blocked)
  • 转换
    • notion image
  • 创建和终止
    • 创建状态:创建PCB,分配资源,置就绪状态并插入就绪队列,全部创建过程未完成不能被调度
    • 终止状态:完成等待OS善后处理,清空并归还PCB
    • notion image
  • 挂起操作
    • 目的:终端用户的需要、父进程的需要、负荷调节的需要、OS的需要
    • 挂起状态:被唤出内存的状态
      • 静止就绪Readys、静止阻塞Blockeds
    • 非挂起状态
      • 活动就绪Readya、活动阻塞Blockeda
      • notion image
为什么将进程划分成执行、就绪和阻塞三个基本状态?
  • 根据多道程序执行的特点,进程的运行是走走停停的。因此进程的初级状态应该是执行和等待状态。
    • 处于执行状态的进程占用处理机执行程序,
    • 处于等待状态的进程正在等待处理机或者等待其它某种事件的发生。
  • 但是,当处理机空闲时,并不是所有处于等待状态的进程都能放到处理机上执行,有的进程即使分配给它处理机,它也不能执行,因为它的执行条件没有得到满足。因此,将等待状态的进程分成两部分:
    • 一部分是放在处理机上就能立即执行,这就是就绪的进程;
    • 另一部分是仍需等某种事件发生的进程,即使放在处理机上也不能执行的进程,这就是阻塞进程。
进程的挂起状态与进程的阻塞状态和就绪状态有何异同?
  • 相同点:它们都没有占用处理机。
  • 不同点:
    • 挂起状态的进程是处于一种静止状态,不会参与对资源的竞争,在解除挂起之前,进程不会有新的资源要求,也不会有占用处理机的机会;
    • 阻塞状态和就绪状态的进程均处于活动状态,它们都有获得处理机的机会,都可能有新的资源要求。

进程管理的数据结构

  1. 程序数据块(PCB)
    1. PCB的作用
        • 作为独立运行的基本单位的标志
        • 能实现间断性运行方式
        • 提供进程管理所需要的信息
        • 提供进程调度所需要的信息
        • 实现与其他进程的同步与通信
    2. 进程控制块中的信息
        • 进程标识符:内部标识符、外部标识符
        • 处理机状态:通用寄存器、程序计数器、程序状态字、用户栈指针
        • 处理机调度信息:进程当前状态、进程优先级、调度所需其他信息、等待事件
        • 进程控制信息:程序和数据地址、进程同步和通信机制、资源清单、PCB链接指针
      • 进程控制块中断组织方式
        • 线性:PCB表
        • notion image
        • 链接方式组织:PCB队列
          • 就绪队列:按进程优先级进程的PCB排在队列前面。优先级将其PCB从高到低排列
          • 阻塞队列
          • 空白队列
          notion image
        • 索引方式组织:PCB表
          • 就绪索引
          • 阻塞索引
          notion image

进程控制

一般由OS内核中的原语来实现

创建进程

进程层次结构

  • OS运行一个进程创建另一个进程

进程图

  • 有向树,结点代表进程

引起创建进程的事件

  1. 用户登陆
  1. 作业调度
  1. 提供服务
  1. 应用请求:用户自己创建的新进程

创建进程过程

  • 申请空白PCB
  • 为新进程分配资源
  • 初始化PCB
  • 插入就绪队列

创建进程原语:create

终止进程

引起进程终止的原因

  • 正常结束
  • 异常结束
  • 外界干预

终止步骤

  • 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,读出进程状态若为执行态
  • 终止执行,置调度标志真
  • 若有子孙进程,终止它们将进程所拥有的资源交给父进程或系统进程
  • 移出所在队列,释放PCB

终止原语:

撤销一个指定进程

进程阻塞

  • 期待的某事件未出现,进程调用阻塞原语将自己阻塞

阻塞原因

  • 请求资源/服务得不到满足
  • 启动某种操作而需同步
  • 新数据尚未到达
  • 无心工作可做

阻塞原语:b

lock原语

进程唤醒

唤醒原因

  • 系统服务得到满足
  • I/O完成
  • 新数据到达
  • 进程提出新请求
  • 处于阻带状态的进程不可能唤醒自己

唤醒原语

进程挂起

挂起原语

进程激活

  • 阻塞唤醒由OS自动实现
  • 挂起和激活可由用户干预

进程通信

进程的信息交换。

分类

低级通信

  • 交换信息量少
  • 缺点:效率低、不透明

高级通信

  • 交换信息量多
  • 优点:使用方便,可用通信原理,对用户透明,效率高
  • 类型
    • 共享存储器
      • 共享存储结构:通过公用数据结构交换信息,低效不透明
      • 共享存储区:系统中共享存储区,高效,速度快
    • 管道通信(共享文件方式)
      • 管道:连接一个读进程和写进程的共享文件(pipe文件)
      • 功能:大量的数据发收
    • 消息传递系统
      • 信息单位:不借助数据结构或存储区,以格式化的消息(message)为单位
      • 分为直接通信方式、间接通信方式—信箱通信
      • 实现:一组通信命令(原语),具有透明性
    • 客户机服务器
      • 网络环境的主流通信
      • 套接字(Socket)
      • 远程过程调用
      • 远程方法调用

直接消息传递系统

发送进程利用OS原语直接把消息发给接收者
  • 对称寻址方式
    • 双方显示提供对方的标识符
  • 非对称寻址方式
    • 接收与多个发送进程通信
  • 进程同步方式
    • 发送接收都阻塞:用于紧密同步,都无缓冲区,来消息时传递
    • 发送不阻塞,接收阻塞:发送进程发来消息时唤醒
    • 发送接收都不阻塞:发生某个事件,无法运行才阻塞
  • 通信链路:显示、隐式

间接通信方式

发送进程将消息发送到某种中间实体中(信箱),接收也从中接收
  • 优点:非实时通信

信箱结构

  • 信箱头
  • 信箱体
notion image

信箱通信原语

  • send(MailBox,M)
步骤:进程控制
  1. 查找指定信箱
  1. 若信箱未满,则把信件M送入信箱且唤醒“等信件”者
  1. 若信箱满,则置发送信件进程为“等信件”状态
  • receive(MailBox,X)
步骤:进程控制
  1. 查找指定信箱
  1. 若信箱中有信,则取出一封信于X中且唤醒“等信箱”者
  1. 若信箱中无信,则置信箱进程为“等进程”状态

信箱类型

  • 私用信箱
  • 公用信箱
  • 共享信箱

线程的概念

线程是进程的一个实体,被系统独立调度和分派的基本单位
  • 基本不拥有系统资源
  • 同属一个进程的其他线程共享进程中的全部资源
  • 线程可以创建撤销线程

线程和进程区别

进程:分配资源的基本单位,可以独立调度和分派的基本单位
目的:多个程序并发执行,改善资源利用率,提供系统吞吐量
线程:进行调度的基本单位
目的:进一步提高并发程度,减少程序拽发执行付出的时空开销
引入进程的原因:进程创建、撤销、切换,系统只需付出较大的时空开销
拥有资源:
线程一般不拥有系统资源,但可以访问隶属进程的资源
进程是拥有资源的基本单位
独立性
同一进程中的线程独立性比不同进程间独立性低
支持多处理机系统
单线程进程:运行在一个处理机
多线程进程:多个线程可以运行在多个处理机
系统开销
进程创建可撤销、切换的开销远大于线程创建与撤销的开销
进程切换时,当前进程的cpu环境要保存,新教程的cpu环境要设置
进程切换时只保存和设置少量寄存器,拽住设计存储器管理操作
同一进程内的各个线程间同步通信的实现也比较容易实现

线程的状态与线程控制块

线程状态

  • 就绪、运行、阻塞
  • 线程控制块TCB

多线程OS中的进程属性

  • 进程不是可执行的实体
  • 多线程可并发执行
  • 进程是拥有资源的基本单位

单线程进程模型

notion image

多线程进程模式

notion image

线程和进程对应关系

  • 1:1,每一个线程有自己的地址空间和资源的唯一进程:UNIX
  • M:1 进程定义了拥有的地址空间和动态资源 :WINDOWS NT

线程的实现

两类基本实现

  • 内核支持线程
    • 内核实现
    • 优点:同时调度同一进程的多个线程。阻塞是线程一级的。具有很小的数据结构,切换快,开销小。
    • 缺点:同一进程内线程切换调用内核,速度下降
    • 在线调度和管理在内核实现
  • 用户级进程‘
    • 不用系统调用实现
    • 应用程序完成所有的线程管理
    • 通过线程库实现
    • 优点:不需转到核心态,快速,可以在一个不支持线程的OS实现,调度是应用程序特定的
    • 缺点:调用阻塞问题,不能利用多处理机

组合方式

  • 线程创建在用户空间、内核空间完成
  • 大量线程调度和同步在用户空间完成
  • 程序员可以调整KLT数量
  • 可以取两者最好的

多对一

多个用户级线程映射道单个内核线程

一对一

  • windows 98

多对多

  • windows NT

课后题


多道程序的执行一定不具备再现性
错,可以通过编程控制使其再现
 
P72
12345
16 21
 
Prev
[第一章]操作系统引论
Next
[第三章]处理机调度与死锁
Loading...
Article List
一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++