码文不易,希望支持,谢谢->支持原创
一.多道程序设计
1.前趋图定义
前趋图是一个有向无循环图,图中的每个节点可以表示一条语句、一个程序段或一个进程,节点间的有向边表示两个节点之间存在的偏序或前趋关系“→”;
p1 → p2,则称p1是p2的直接前驱, p2是p1的直接后继。在前趋图中,没有前驱的节点称为初始节点,没有后继的节点称为终止节点。
2. 程序顺序执行
程序顺序执行时基本特征是顺序处理:程序的操作按某种顺序依次执行,只有当前一个操作完成后,才能执行下一个操作。
程序顺序执行时的特征:
(1)顺序性。处理机的操作严格按照程序所规定的顺序执行,只有当上一个操作完成后,下一个操作才能执行。除非有人为的干预造成机器暂时停顿外,前一个动作的结束就意味着下一个操作的开始。因此,程序和处理机执行程序的活动一一对应。
(2)封闭性。程序运行在一个封闭的环境中,即程序运行时独占系统的全部资源,这些资源的状态只能因程序的执行而改变,不受任何外界因素的影响。
(3)可再现性。由于程序顺序执行的封闭性,只要程序顺序执行时的初始条件和执行环境相同,当程序重复执行时,都将获得相同的结果(即程序的执行结果与时间有关) 。正由于程序顺序执行的特点,程序员可以检测和重现程序的错误,可以调试和校正程序。
3.程序并发执行
程序的并发执行是指若干个程序(或程序段)同时在系统中运行,这些程序(或程序段)的执行在时间上是重叠的,即一个程序(或一个程序段)的执行尚未结束,另一个程序(或一个程序段)的执行已经开始。
在同一作业中,作业的输入操作、计算操作和打印操作必须顺序执行,但对一批作业而言,情况就不一样了。例如,在作业1的输入操作完成后可以进行该作业的计算操作;与此同时,也可以进行作业2的输入操作,这使得作业1的计算操作和作业2的输入操作同时进行。
程序并发执行特征:
(1)间断性
(2)失去封闭性:主要由共享资源引起
(3)不可再现性:因为程序的执行顺序难以预知。
二.进程的描述
码文不易,希望支持,谢谢->支持原创
1.进程的概念
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。又称任务(Task)为了描述程序在并发执行时对系统资源的共享,所需的一个描述程序执行时动态特征的概念。
① 进程(或任务)是可以和别的计算共同执行的计算(J.T.Donoven);
② 进程是程序在一个数据集合上运行的过程,它是系统进行资
源分配和调度的一个独立单位。
③ 进程是一抽象实体,当它执行某个任务时,将要分配和释放
各种资源(P.Denning);
④ 行为的规则叫程序,程序在处理机上执行时所发生的活动称
为进程(E.W.Dijkstra);
⑤ 一个进程是一系列逐一执行的操作,而操作的确切含义则有
赖于以何种详尽程度来描述进程(Brinch Hansen);
⑥ 进程是进程映象的执行(UNIX).
2.进程的特征
(1)动态性。进程是一个动态的概念,实质上是程序的一次执行过程。进程具有生命期:它因“创建”而产生,因“调度”而执行,执行时还走走停停,因“撤消”而灭亡。
(2)并发性。在一个系统中,可以同时存在多个进程,它们并发地执行,共享系统资源。正由于多个进程的并发执行,才使系统资源得到充分的利用,系统的处理能力大大增强。
(3)独立性。进程是一个能独立运行的基本单位,也是系统进行资源分配和调度的基本单位。未建立进程的程序不能作为一个独立单位参与运行,并发进程获得所需的资源才能向前推进。
(4)异步性。每个进程按各自独立的不可预知的速度向前推进。正由于进程的异步性,并发进程相互穿插地执行,才失去了程序的可再现性。但由于进程之间相互制约,进程执行时也常间断,出现走走停停的现象。
(5)结构特征。从结构上看,一个进程实体由三个部分组成,即程序
、数据
和进程控制块
。进程要完成一个任务,就必须执行描述其任务的程序,并对要求加工的数据进行处理。为对进程实施有效的管理,系统就必须为进程设立一个专门的数据结构——进程控制块。
程序与进程的联系和区别
(1)进程是动态的,程序是静态的。进程是程序的一次执行过程,而程序是指令的有序集合,是一个静态的概念。
(2)进程具有生命期,从创建时存在,到撤消时消失,其存在是暂时的,而程序是静态的,可以长久保存。
(3)进程具有结构特征,由程序、数据和进程控制块三者组成,而程序仅是指令的有序集合,是进程的组成部分之一。
(4)进程和程序的组成不同:进程的组成包括程序、数据和进程控制块。
(5)通过多次执行,一个程序可以产生多个不同的进程;通过调用关系,一个进程可以执行多个程序。进程可创建其他进程,而程序不能形成新的程序。
(6)进程具有并行特性(独立性、异步性),程序则没有。
3.进程的基本状态及其转换
进程的三种基本状态:
1. 运行态(Running):
2. 就绪态(Ready):
3. 等待态(Blocked):阻塞态、封锁态、睡眠态
进程状态转换的原因
- 就绪 –> 运行
调度程序选择一个新的进程运行 - 运行 –> 就绪
运行进程用完了时间片
一个高优先级进程处于就绪状态,中断正在运行的进程 - 运行 –> 等待
当一个进程必须等待时
OS尚未完成服务
对一资源的访问尚不能进行
初始化I/O 且必须等待结果
等待某一进程提供输入 (IPC) - 等待 –> 就绪
当所等待的事件发生时
执行状态只能由就绪状态转换,而无法由阻塞状态直接转换。
一个具体进程在任何一个指定的时刻必须而且只能处于一种状态。
五状态转换图
进程的其他状态
具有挂起状态的进程状态
- 就绪状态(活动就绪)(Ready):进程在内存且可立即进入运行状态
- 阻塞状态(活动阻塞)(Blocked):进程在内存并等待某事件的出现
- 阻塞挂起状态(静止阻塞)(Blockeda, suspend):进程在外存并等待某事件的出现
- 就绪挂起状态(静止就绪)(Readya, suspend):进程在外存,但只要进入内存,即可运行
挂起(Suspend):把一个进程从内存转到外存;可能有以下几种情况:
- 活动阻塞→静止阻塞:没有进程处于就绪状态或就绪进程要求更多内存资源时,发生这种转换,以提交新进程或运行就绪进程
- 活动就绪→静止就绪:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程
- 运行→静止就绪:对抢占式系统,当有高优先级静止阻塞进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到静止就绪状态
激活(Activate):把一个进程从外存转到内存;可能有以下几种情况:
- 静止就绪→活动就绪:没有就绪进程或静止就绪进程优先级高于就绪进程时,发生转换
- 静止阻塞→活动阻塞:当一个进程释放足够内存时,系统会把一个高优先级静止阻塞(系统认为会很快出现所等待的事件)进程