汤子瀛--汤小丹--人民邮电出版社
(自用)
进程的描述与控制
前趋图和程序执行
前趋图
是指一个有向无环图,它用于·描述程序之间执行的先后顺序。图中每个节点均可用于表示一个进程或一段程序,甚至是一条语句,节点间的有向边则表示来表示两个节点之间所存在的偏序或前趋关系
程序顺序执行
一个程序由若干个程序段组成,每个程序段负责完成特定的功能,且他们都需要按照某种先后次序被顺序运行,仅当前一程序段运行完成后,才会运行后一程序段
- 特征
• 顺序性
• 封闭性
• 可再现性
程序并发执行
优点
- 提高系统吞吐量和资源利用率
特征
- 间断性
- 不可再现性
- 失去封闭性
进程的描述
进程的定义与特征
进程的定义
- 进程是程序执行过程,是系统进行资源分配和调度的一个独立单位
• 特征
• 动态性
• 并发性
• 独立性
• 能够独立运行,独立获得资源,独立接受调度的基本单位
• 异步性
• 按各自独立的,不可预知的速度向前推进
- 进程和程序
• 进程是程序的一个实例,是程序的一次执行
• 进程是活动的,程序是静止的
• 程序是进程代码部分,是进程执行逻辑
• 进程在内存中,程序在外存中
进程控制块(PCB)
- 为了使参与并发执行的每个程序(含数据)都能独立运行,在OS中必须为之配置一个专门的数据结构,称之为进程控制块。
- 进程的PCB是系统感知进程的唯一实体
进程的基本状态与转换
进程的基本状态
- 就绪(ready)状态(无cpu)
• 进程已处于准备好执行的状态,即进程已分配到除CPU以外的所有必要资源后,只要在获得CPU,便可立即执行。通常会以一定的策略(如优先级策略)排成一个队列,称该队列为就绪队列
- 执行(running)状态(有CPU)
- 阻塞(block)状态
• 正在执行的进程由于发生某事件(如I/O请求,申请缓冲区失败等)而暂时无法继续执行,即指进程的执行受到了阻塞。此时会引发进程的进程调度,OS会把处理机分配给另一个就绪进程,而让受阻进程处于暂停状态,一般将这种暂停状态称为阻塞状态,有时也称为等待状态或封锁状态。
进程3种基本状态间的转换
创建状态和终止状态
- 创建状态
• 由进程申请一个空白PCB,并向PCB填写用于控制和管理进程的信息,然后为该进程分配运行时所必须的资源,最后把该进程的状态转换为就绪状态并插入就绪队列之中
- 终止状态
• 等OS进行善后处理,然后将PCB清零,并将PCB空间返还OS
进程控制
进程的创建
进程的层次结构
- 父进程
• 在OS中,允许一个进程创建另一个进程,通常把创建进程的进程称为父进程
- 子进程
• 把被创建的进程称为子进程
- 孙进程
• 子进程可以继续创建其自己的子孙进程
- 子进程可以继承父进程所拥有的资源
- Windows系统中不存在任何进程层次结构的概念
进程图
- 用于描述进程间关系的一棵有向树
引发进程创建的事件
- 用户登录
- 作业调度
- 提供服务
- 应用请求
进程的创建
- 申请空白PCB
- 为新进程分配其运行所需的资源
- 初始化PCB
进程的终止
引起进程终止的事件
- 正常结束
- 异常结束
- 外界干预
进程的挂起与激活
进程的挂起
将内存中的移出到外存
进程的激活
将外存中的移入到内存
进程通信
低级进程通信
效率低
通信对用户不透明
控制信息实现进程同步和互斥
高级进程通信
使用方便
高效的传输大量数据
线程
引入目的
使多个程序能并发执行,以提高资源利用率和系统吞吐量,在OS中在引入线程则是为了减少程序在并发执行时所付出的时空(时间和空间)开销,以使OS具有更好地并发性
属性
是一个可拥有资源的独立单位
同时又是一个可独立调度和分派的基本单位
线程具有传统进程所具有的很多特征,因此又称为轻型进程或进程元,相应地把传统进程称为重型进程
线程与进程的比较
调度的基本单位
在同一进程中,线程的切换不会引起进程的切换,但从一个进程的线程切换到另一个进程的线程时,必然会引起进程的切换
并发性
允许一个进程中的所有线程都能并发执行
拥有资源
线程可以说是几乎不拥有资源,其仅有的一点儿必不可少的资源也是为了确保自身能够独立运行,线程除了拥有自己少量的资源外,还允许多个线程共享他们共属的进程所拥有的资源
独立性
在同一个进程中的不同线程之间的独立性,要比不同进程之间独立性低得多,每个进程都拥有独立的地址空间和其他资源,但是同一进程中的不同线程,往往是为了提高并发性以满足进程间的合作需求而创建的
系统开销
在创建(撤销)进程是,系统要为它分配(向它回收)PCB和其他资源(如内存空间和i/o设备等)。OS为此付出的开销,明显大于线程创建/撤销时所付出的开销。在进行进程切换时,涉及进程上下文的切换,进程的切换代价则远低于进程的,线程之间同步和通信也比进程简单
支持多处理机系统
线程状态和线程控制块
状态
执行状态
就绪状态
阻塞状态
线程控制块(TCB)
线程标识符
一组寄存器的内容
线程执行状态
优先级
线程专有存储区
信号屏蔽
堆栈指针
线程的实现
线程的实现方式
内核支持线程(KST)
用户级线程(ULT)
两种线程的组合方式
- 多对一模型
• 将多个ULT映射到一个KST上
- 一对一模型
• 将每个ULT映射到一个KST上
- 多对多模型
• 将许多ULT映射到同样数量或较少数量的KST上