(汤小丹版)第二章 进程的描述与控制 复习思维导图
2、进程的描述与控制
2.1、前驱图和程序执行
前驱图
-
- 有向无环图,用于描述进程之间执行的先后顺序
程序顺序执行
-
- 一个程序由若干个程序段组成,需按照某种先后顺序执行, 仅当前一段程序运行完成后,才会运行后一段程序
- 特征:
- 1、顺序性
- 2、封闭性
- 3、可再现性
程序并发执行
-
- 条件:不存在前驱关系的程序才有可能并发执行
- 特征:
- 1、间断性
- 2、失去封闭性
- 3、不可再现性
2.2、进程的描述
进程的定义与特征
-
- 1.进程的定义
- 进程是程序的执行过程, 是系统进行资源分配和调度的一个独立单位
- 进程实体(进程映像,简称为进程)构成:
- 1、程序段
- 2、相关的数据段
- 3、PCB(重要)
- 2.进程的特征
- 1、动态性
- 进程由创建而产生,由调度而执行,由撤销而消亡
- 2、并发性
- 多个进程共存于内存中,且能在一段时间内同时执行
- 3、独立性
- 独立运行、独立获得资源、独立接受调度的基本单位
- 4、异步性
- 按各自独立的、不可预知的速度向前推进
- 1、动态性
- 1.进程的定义
进程的基本状态与转换
-
- 进程的3种基本状态
- 1、就绪状态
- 2、执行状态
- 3、阻塞状态
- 进程3种基本状态间的转换
- 三种基本状态的转换
- 进程的3种基本状态
-
- 创建状态和中止状态
- 加入创建和中止后,五种基本状态的转换
- 创建状态和中止状态
挂起操作和进程状态的转换
-
- 挂起:机器的资源是有限的,在资源不足的情况下,操作系统对在内存中的程序进行合理的安排。 挂起的进程指:暂时被淘汰出内存的进程,条件允许,会被再次调回内存
- 挂起操作的引入 (1)终端用户的需要。 (2)父进程的需要。 (3)负荷调节的需要。 (4)操作系统的需要。
- 引入挂起操作后进程三个基本状态间的切换 (执行 就绪 阻塞)
- 活动就绪(可被调度)-->静止就绪(不可被调度)
- 静止就绪-->活动就绪
- 活动阻塞-->静止阻塞
- 阻塞等待的事件发生后,会从静止阻塞变为静止就绪
- 静止阻塞-->活动阻塞
- 引入挂起后进程5个基本状态间的转换
- 状态图
进程管理中的数据结构
-
- 为了便于使用和管理计算机中的各类资源(包括硬件和信息), OS将它们抽象为相应的各种数据结构,并提供了一组对资源进行操作的命令; 用户可利用这些数据结构及操作命令来执行相关的操作,而无须关心其实现的具体细节。
- 1.OS中用于管理资源和控制进程的数据结构
- 操作系统控制表的一般结构
-
-
-
- 1.内存表
- 2.设备表
- 3.文件表
- 4.进程表(PCB)
-
- 2.PCB的作用
- PCB是进程存在于系统中的唯一标志
- 1.作为独立运行基本单位的标志
- 2.实现间断运行的方式
- 3.提供进程管理所需要的的信息
- 4.提供进程调度所需要的的信息
- 5.实现与其他进程的同步与通信
- PCB是进程存在于系统中的唯一标志
- 3.PCB中的信息
- 1.进程标识符
- 唯一地标志一个进程
- 2.处理机状态
- 由处理机的各种寄存器中的内容组成 当进程被切换时,处理机状态信息都必须保存在相应的PCB中,以便在该进程被重新调度时,能再从断点处继续执行。
- 3.进程调度信息
- 操作系统来调度进程时 必须了解有关进程调度的信息
- 进程状态
- 进程优先级
- 进程调度所需的其他信息
- 事件
- 操作系统来调度进程时 必须了解有关进程调度的信息
- 4.进程控制信息
- 程序和数据的地址
- 进程同步和通信机制
- 资源清单
- 链接指针
- 1.进程标识符
- 4.PCB的组织方式
- 线性方式
- 链接方式
- 索引方式
-
2.3、进程的控制
进程的创建
-
- 进程的层次结构
- Unix类系统
- 创建进程的进程称为父进程 被创建的进程称为子进程,子进程可以继续创建进程, 由此形成进程的层次结构
- 子进程可以继承父进程所拥有的资源。 撤销父进程时必须撤销其所有的子进程
- Windows
- 不存在进程层次结构概念,所有进程地位相等
- 一个进程创建另一个进程后,创建进程获得句柄,可用来控制被创建的进程。 句柄可以传递
- Unix类系统
- 进程树
- 分支主题
- 进程的层次结构
-
- 引起进程创建的事件
- 用户登录
- 登录系统成功,系统会为用户创建一个进程,放入就绪队列
- 作业调度
- 把作业从外存装入内存,为它们创建进程
- 提供服务
- 用户提出请求,如打印,系统会为其创建打印进程
- 应用请求
- 需要用户自己创建进程
- 用户登录
- 进程的创建
- 1、申请空白PCB
- 2、为新进程分配其运行所需的资源
- 3、初始化PCB
- 4、如果就绪队列空闲则将新进程插入队列
- 引起进程创建的事件
进程的终止
-
- 正常结束
- 异常结束
- 分支主题
进程的阻塞和唤醒
-
- 引起进程阻塞与唤醒的事件
- 向系统请求共享资源失败
- 等待某种操作的完成
- 新数据尚未到达
- 等待新任务的到达
- 引起进程阻塞与唤醒的事件
进程的挂起与激活
2.4、进程通信
进程通信的类型
-
- 共享存储器系统
- 在共享存储器系统中,相互通信的进程共享某些数据结构或存储区, 进程之间能够通过这些空间进行通信
- 基于共享数据结构的通信方式
- 基于共享存储区的通信方式
- 在共享存储器系统中,相互通信的进程共享某些数据结构或存储区, 进程之间能够通过这些空间进行通信
- 管道通信系统
- 所谓“管道”, 是指用于连接读进程和写进程以实现双方通信的一个共享文件,又名pipe文件。 向管道(共享文件)输入的发送进程(即写进程),会以字节流形式将大量的数据送入管道; 而接收管道的接收进程(即读进程),则会从管道中接收(读)数据
- 消息传递系统
- 以格式化的消息为单位、将通信的数据封装在消息中,并利用OS提供的一组通信命令 (原语),在 进程间进行消息传递,完成进程间的数据交换。当前应用得最为广泛的一类进程通信机制。
- 客户机-服务系统
- 套接字
- 远程过程调用和远程方法调用
- 远程过程调用看上去与本地过程调用一样, 调用者感觉不到此次调用的过程是在其他主机(远程)上执行的
- 共享存储器系统
消息传递通信的实现方式
-
- 直接通信
- 在直接消息传递系统中采用直接通信方式,即发送进程利用OS所提供的发送命令(原 语),直接把消息发送给目标进程。
- 间接通信(信箱通信)
- 建立在随机存储器的公用缓冲区上,用来暂存发送进程发送给目标进程的消息; 接收进程可以从该实体中取出发送进程发送给自己的消息。 消息在邮箱中可以安全地保存,只允许核准的目标用户随时读取。
- 直接通信
2.5、线程的概念
线程的引入
-
- 在OS中引入进程的目的是为了使多个程序能并发执行,以提高资源利用率和系统吞吐量。 那么,在OS中引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。
- 进程的两个基本属性
- 进程是一个可拥有资源的独立单位
- 进程同时又是一个可独立调度和分派的基本单位
- 在传统的OS中,进程是作为独立调度和分派的基本单位,因而进程是能独立运行的 基本单位。在每次被调度时,都需要进行上下文切换,开销较大。
- 为解决上述缺陷,可以将进程的两个基本属性分开,由OS分开处理, 即并不把作为调度和分派的基本单位的同时作为拥有资源的基本单位。
线程与进程的比较
-
- 调度的基本单位
- 在引入线程的OS中,把线程作为调度和分派的基本单位,因而线程是能独立运行的基本单位。 当线程切换时,仅需保存和设置少量寄存器内容(资源),切换代价远低于进程。
- 并发性
- 不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行, 甚至还允许在一个进程中的所有线程都能并发执行。同样,不同进程中 的线程也能并发执行。
- 拥有资源
- 进程可以拥有资源,并作为系统中拥有资源的一个基本单位。然而,线程本身并不拥 有系统资源,而是仅有一点必不可少的、能保证独立运行的资源。允许多个线程共享该进程所拥有的资源
- 独立性
- 进程高,线程低
- 系统开销
- 线程的切换代价也远低于进程
- 支持多处理机系统
- 对于多线程进程,可以将一个进程中的多个线程分配到多个 处理机上,使它们并行执行
- 调度的基本单位
线程状态和线程控制块
-
- 三个状态
- 执行状态
- 就绪状态
- 阻塞状态
- 线程控制块TCB
- 三个状态
多线程OS中的进程属性
-
- 进程是一个可拥有资源的基本单位
- 多个线程可并发执行
- 进程己不是可执行的实体
- 在多线程OS中,把线程作为独立运行(或称调度)的基本单位。 此时的进程已不再是一个基本的可执行实体。 所谓进程处于“执行”状态,实际上是指该进程中的某线程正在执行。
2.6、线程的实现
线程的实现方式
-
- 内核支持线程
- 用户级线程
- 组合方式