2.28k likes | 2.42k Views
多道程序设计 进程 进程间的相互作用 进程间的通信 进程调度( CPU 调度) 线程. 第四章 进程管理. 顺序程序 并发程序 多道程序设计. 4.1 多道程序设计. 程序: 指令或语句序列,体现了某种算法,所有程序是顺序的 顺序环境: 在计算机系统中只有一个程序在运行,这个程序独占系统中所有资源,其执行不受外界影响. 4.1.1 顺序程序. 特征: 程序执行的顺序性 程序执行的封闭性 独占资源,执行过程中不受外界影响 程序执行结果的确定性 即:程序结果的可再现性 程序运行结果与程序执行速度无关,只要初始状态相同,结果应相同. 并发环境:
E N D
多道程序设计 进程 进程间的相互作用 进程间的通信 进程调度(CPU调度) 线程 第四章 进程管理
顺序程序 并发程序 多道程序设计 4.1 多道程序设计
程序: 指令或语句序列,体现了某种算法,所有程序是顺序的 顺序环境: 在计算机系统中只有一个程序在运行,这个程序独占系统中所有资源,其执行不受外界影响 4.1.1 顺序程序
特征:程序执行的顺序性 程序执行的封闭性 独占资源,执行过程中不受外界影响 程序执行结果的确定性 即:程序结果的可再现性 程序运行结果与程序执行速度无关,只要初始状态相同,结果应相同
并发环境: 在一定时间内物理机器上有两个或两个以上的程序同处于开始运行但尚未结束的状态,并且次序不是事先确定的 A B A B B A B A 4.1.2 并发程序
特征: (1)程序结果的不可再现性 并发程序执行的结果与其执行的相对速度有关,是不确定的 (2)在并发环境下程序的执行是间断性的 执行——停——执行
(3)资源共享系统中资源被多个进程使用(4)独立性和制约性独立的相对速度、起始时间 进程之间可相互作用(相互制约) 可分为直接作用和间接作用(5)程序和计算不再一一对应 (计算:一个程序的执行)
引入并发的目的: 引入并发是为了提高资源利用率,从而提高系统效率 并发与并行概念的区别: concurrency,parallel 4.1.2 并发程序
DEV1 DEV2 CPU CPU CPU A 20 30 40 10 15 DEV2 DEV 1 DEV2 CPU CPU B 20 30 40 25 10 在顺序环境下 CPU利用率= 40/80 = 50% DEV1利用率= 15/80=18.75% DEV2利用率= 25/80=31.25% 例: t(s) t(s)
在并发环境下 CPU利用 = 89% DEV1并发环境下利用 = 33% DEV2并发环境下利用 = 66% A CPU DEV1 CPU DEV2 CPU t(s) 45 25 35 20 30 40 10 15 B DEV1 CPU DEV2 CPU DEV2 例:
定义:Multiprogramming 多道程序设计是指允许多个程序同时进入内存并运行 (引入目的是为了提高系统效率) 与并发不完全是一个概念,但效果相似 4.1.3 多道程序设计
考虑因素: 在多道程序环境下如何向用户提供服务 在并发程序之间如何正确传递消息(通讯) 如何对CPU进行调度,保证每个用户相对公平地得到CPU (CPU是一个只可调度,不可分配的资源)
如何管理其他资源 当各用户对资源使用上发生冲突时,如何处理竞争 对CPU只能通过调度来解决竞争问题,而对于其他资源通过申请—分配—使用—回收的办法进行管理,当且仅当占有CPU的时候才可以申请,否则要排队等候
4.1.4 与时间有关的错误 一飞机订票系统,两个终端,运行T1、T2进程 T1 : T2: ... ... Read(x); Read(x); if x>=1 then if x>=1 then x:=x-1; x:=x-1; write(x); write(x); ... ...
Cobegin get; copy; put; Coend get copy put f s t g 复制一个记录
f s t g 初始状态3,4,...,m 2 2 (1,2) g,c,p 4,5,...,m 3 3 (1,2,3) g,p,c 4,5,...,m 3 3 (1,2,2) X c,g,p 4,5,...,m 3 2 (1,2,2) X c,p,g 4,5,...,m 3 2 (1,2,2) X p,c,g 4,5,...,m 3 2 (1,2,2) X p,g,c 4,5,...,m 3 3 (1,2,2) X 设信息长度为m,有多少种可能性?
p p g c c c p g g 并行环境下程序间的制约关系
进程的概念 进程的状态及其转换 进程控制块(Process Control Block) 进程的特征 4.2 进程
OS 必须交替执行多个进程,以便最大程度的使用CPU,同时提供合理的响应时间 OS 必须将资源分配给进程,同时避免死锁 OS必须支持进程间通信以及用户进程创建 OS 对进程的要求
定义:Process 进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位 4.2.1 进程的概念
提交一个批处理作业 用户登录 由OS创建,用以向一用户提供服务( 如:打印文件) 由已存在的一进程创建 一个用户程序可创建成多个进程 进程何时创建?
批处理作业发出暂停(Halt)指令 用户退出登录 进程执行一中止服务请求 出错及失败因素 进程何时中止?
正常结束 给定时限到 缺少内存 存储器出界 保护性出错 例子: 写只读文件 算术错 超出时间 进程等待超过对某事件的最大值 进程中止的原因
I/O 失败 无效指令 如试图执行数据 特权指令 操作系统干预 如当死锁发生时 父进程请求中止某一子进程 父进程中止,所以子进程也中止 进程中止的原因(续1)
程序与进程之间的区别: 进程更能真实地描述并发,而程序不能 进程是由程序和数据两部分组成的 程序是静态的,进程是动态的 进程有生命周期,有诞生有消亡,短暂的;而程序是相对长久的 一个程序可对应多个进程,反之亦然 进程具有创建其他进程的功能,而程序没有
进程的分类: 系统进程 用户进程 (系统进程优先于用户进程)
进程的三种基本状态: 进程在生命消亡前处于且仅处于三种基本状态之一 不同系统设置的进程状态数目不同 4.2.2 进程的基本状态及其转换
运行态(Running): 进程占有CPU,并在CPU上运行 就绪态(Ready): 一个进程已经具备运行条件,但由于无CPU暂时不能运行的状态(当调度给其CPU时,立即可以运行) 等待态(Blocked):阻塞态、挂起态、封锁态 冻结态、睡眠态 指进程因等待某种事件的发生而暂时不能运行的状态 (即使CPU空闲,该进程也不可运行)
运行 等待 就绪 进程的状态及其转换
进程状态转换: 在进程运行过程中,由于进程自身进展情况及外界环境的变化,这三种基本状态可以依据一定的条件相互转换 就绪—运行 运行—就绪 运行—等待 等待—就绪
就绪 --> 运行 调度程序选择一个新的进程运行 运行 --> 就绪 运行进程用完了时间片 运行进程被中断,因为一高优先级进程处于就绪状态 进程转换
运行 --> 等待 当一进程必须等待时 OS尚未完成服务 对一资源的访问尚不能进行 初始化I/O 且必须等待结果 等待某一进程提供输入 (IPC) 等待 --> 就绪 当所等待的事件发生时 进程转换(续1)
其他状态: 创建状态,终止状态 挂起状态 (调节负载,对换,父进程,操作系统,终端用户)
OS 已完成为创建一进程所必要的工作 已构造了进程标识符 已创建了管理进程所需的表格 但还没有允许执行该进程 (尚未同意) 因为资源有限 创建( 新new)状态
中止后进程移入该状态 它不再有执行资格 表格和其它信息暂时由辅助程序保留 例子: 为处理用户帐单而累计资源使用情况的财务程序 当数据不再需要后,进程(和它的表格)被删除 终止(退出exit)状态
准备退出:父进程可中止子进程 五状态进程模型
挂起 活动 调度 释放 超时 挂起 事件 发生 事件 发生 等待 事件 活动 挂起 七状态进程模型
阻塞 -->阻塞挂起 当所有进程都阻塞,OS会安排空间让一就绪进程进入内存 阻塞挂起 --> 就绪挂起 当等待的事件发生时 (状态信息已在OS中) 就绪挂起-->就绪 当内存中没有就绪进程时 就绪-->就绪挂起 (较少见) 当没有被阻塞的进程,而为了性能上的考虑,必须释放一些内存时 新状态转换 (中期调度)
概念: 系统为了管理进程设置的一个专门的数据结构,用它来记录进程的外部特征,描述进程的运动变化过程 系统利用PCB来控制和管理进程,所以PCB是系统感知进程存在的唯一标志 进程与PCB是一一对应的 4.2.3 进程控制块(Process Control Block)
用户程序 用户数据 栈 用于过程调用和参数传递 进程控制块PCB (执行上下文) 控制进程所需的数据(进程属性),包括: 进程标识符信息 处理器状态信息 进程控制信息 进程映象 (进程要素)
PCB的内容: 调度信息: 进程名;进程的内部标识;用户名;进程状态;进程优先级;进程的存储信息(起始地址,长度);进程资源清单;进程家族关系;进程的队列指针;进程的消息队列指针;进程当前打开的文件… ... 现场信息: 记录了重要的寄存器;(虚)时钟等内容
可使用一些数字标识符 统一进程标识符 (必然的) 索引至 (直接或间接) 主进程表 用户标识符 与某个作业对应的用户 创建本进程的某个进程的标识符 进程标识符 (在PCB中)
处理器寄存器内容 用户可见寄存器 控制和状态寄存器 栈指针 程序状态字 (PSW) 包含状态信息 例子: 在Pentium机中的EFLAGS寄存器 处理器状态信息 (在PCB中)
调度和状态信息 进程状态 (如: 运行,就绪,阻塞...) 进程优先级 该进程在等待的事件 (若被阻塞) 数据结构信息 进程可能需要有指向其他PCB的指针, 父-子进程关系及其它结构 进程控制信息 (在PCB中)
进程间通信 IPC可能需要标志和信号 进程特权 如: 访问特定的内存地址... 存储管理 指向赋予该进程的段/页表的指针 所拥有的资源和使用情况 使用中的资源: 打开的文件,I/O设备... (CPU , I/O...)的时间使用史 进程控制信息 (在PCB中)
为了提供对PCB (和OS其它数据)的保护,多数处理器支持至少两种执行方式: 特权方式 (又称作系统方式,内核方式,管理方式,控制方式) 操作控制寄存器,基本 I/O指令, 存储管理... 用户方式 为此, CPU提供一个(或一些)方式位,这些二进制位只能被中断、陷阱或OS调用所设置 执行的方式
PCB表: 系统把所有PCB组织在一起,并把它们放在内存的固定区域,就构成了PCB表 PCB表的大小决定了系统中最多可同时存在的进程个数,称为系统的并发度 (注:多道程序中的多道与系统并发度不同)
常用索引方式,对具有相同状态的进程,分别设置各自的PCB索引表,表明PCB在PCB表中的地址常用索引方式,对具有相同状态的进程,分别设置各自的PCB索引表,表明PCB在PCB表中的地址 (其他方式:线性表或链表) 进程队列:不同状态进程分别组成队列 运行队列、就绪队列、等待队列 PCB表组织方式: