Process Concept & Process Control 第二章 进程描述与控制 Process Concept & Process Control
进程的基本概念 Process Concept 进程的引入 进程的定义和特征 进程的基本状态及其转换 具有挂起功能的进程状态及其转换
进程的引入 多道程序系统的特点是并行性。为了充分利用系统资源,在主存中同时存放多道作业运行,所以各作业之间是并行的 各程序由于同时存在于主存中,它们之间必定会存在相互依赖,相互制约的关系。 (间接制约关系、直接制约关系) 在多道程序系统所带来的复杂环境中,程序具有了并行、制约、动态的特性,原来的程序概念,难以刻画系统中的情况。 程序本身完全是静态的概念 程序概念也反映不了系统中的并行特性
1、程序的顺序执行 一个较大的程序通常都是由若干个程序段组成。在程序执行时,必须按照某种先后次序逐个执行,仅当前一操作执行完后,才能执行后继操作。 例如:在进行计算时,总是先输入用户的程序和数据,然后才能计算,计算完成后再将结果打印出来。
对于一个程序段中的多条语句来说,也有一个执行顺序的问题。如果对于下述三条语句的程序段: S1: a=x+y S2: b=a-5 I1 C1 P1 P2 I2 C2 程序顺序执行时的前驱图 对于一个程序段中的多条语句来说,也有一个执行顺序的问题。如果对于下述三条语句的程序段: S1: a=x+y S2: b=a-5 S3: C=b+1 (其中S2必须在a被赋值以后才能执行;同样S3也只能在b被赋值 以后才能执行)
2、 程序顺序执行时的特征 顺序性 封闭性(失去交换性) 可再现性 2、 程序顺序执行时的特征 顺序性 处理机的操作,严格按照程序所规定的顺序执行,即只有前一操作结束后,才能执行后继操作。 封闭性(失去交换性) 程序是在封闭的环境下运行的。即程序在运行时,它独占全机资源,因而机内各资源的状态(除初始状态外),只有程序才能改变它。程序一旦开始运行,其执行结果不受外界因素的影响。 可再现性 只要程序执行时的环境和初始条件都相同,不论它是从头到尾的不停顿的执行,还是“走走停停”地执行,都将获得相同的结果。
3. 多道程序的并发执行 计算机能够同时处理多个具有独立功能的程序(批处理系统,分时系统、实时系统、网络与分布式系统)。这样的执行环境具有三个特点: 独立性 随机性 资源共享 硬件资源:CPU、输入输出设备,存储器 软件资源:各种例行程序、各种共享的数据 多道程序环境下执行程序的道数>计算机系统中CPU的个数 单CPU中,则由N-1道程序处在等待CPU的状态 输入输出设备有限将导致这些设备被共享、内存有限将导致内存被共享
程序并发执行可分为两种: 多道程序系统的程序执行环境变化所引起的多道程序的并发执行 由于资源有限,多道程序的并发执行总是伴随着资源的共享与竞争,制约了各道程序的执行速度。 在某道程序段中,包含着一部分可以同时执行或顺序颠倒执行的代码 例如:read(a); read(b); 既可以同时执行,也可以颠倒次序执行,同时执行不会改变顺序程序所具有的逻辑行为,可采用并发执行来充分利用资源。
程序并发执行 一组逻辑上相互独立的程序或程序段在执行过程中,其执行时间在客观上相互重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的这种执行方式。
程序的并发执行 I1 I2 I4 I3 C1 C2 C3 P1 C4 P4 P3 P2 程序并发执行时的前驱图
4.程序并发执行时的特征 间断性 程序在并发执行时,由于它们共享资源或为完成某一项任务而合作,致使在并发程序之间存在相互制约的关系。(I、C、P是三个相互合作的程序,当计算程序完成Ci-1的计算后,如果输入程序I尚未完成对Ii的处理,则计算程序无法进行Ci处理,致使计算程序在停运行。) 失去封闭性 程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性。
4.程序并发执行时的特征(续) 不可再现性 k+1,k+1,0 k, 0, 1 k, k+1, 0 程序在并发执行时,由于失去了封闭性,也导致失去了可再现性。 例如:有两个循环程序A和B,它们共享一个变量N。程序A每执行一次时都要做N=N+1操作;程序B每执行一次时,都要做print(N)操作,然后再将N置成“0”,程序A和B以不同的速度运行。(假定某时刻变量N的值为k) (1)N=N+1在print(N)和N=0之前,此时得到的N值分别为 (2)N=N+1在print(N)和N=0之后,此时得到的N值分别为 (3)N=N+1在 print(N)和N=0之间,此时得到的N值分别为 k+1,k+1,0 k, 0, 1 k, k+1, 0
5.程序并发执行的条件 1966年,Bernstein(伯恩斯坦)提出了相邻语句P1,P2可以并发执行的条件。
定义程序读集与写集符号 R(Pi)={a1,a2,···,am} W(Pi)={b1,b2,···,bm} 表示程序Pi在执行期间需引用的变量的集合,称Pi的读集; W(Pi)={b1,b2,···,bm} 表示程序Pi在执行期间需改变的变量的集合,称Pi的写集; 若有两条语名P1: c=a+b; P2:x=x+1; 则它们的读集与写为: R(P1)={ a, b } W(P1)={ c } R(P2)={ x } W(P2)={ x } P1的读集与写集的交集为空;P2的读集与写集的交集非空; R(P1)∩W(P1)={ } R(P2) ∩W(P1)={ x }
Bernstein条件 若两个程序P1和P2能满足下述条件,它们便能并发执行,否则不能 即 ① R (P1)∩W(P2)={ } R(P1)∩W(P2) ∪ R(P2)∩W(P1) ∪ W(P1) ∩W(P2)={ } R(P1)∩W(P2) ∪ R(P2)∩W(P1) ∪ W(P1) ∩W(P2)={ } 即 ① R (P1)∩W(P2)={ } ② W(P1)∩R (P2)={ } ③ W(P1)∩W(P2)={ } 同时成立
例1 若有两条语句P1:c=a-b和P2:w=c+1,判断它们是否可以并发执行? 解:它们的“读集”和“写集”分别为 R(P1)={a,b}; W(P1)={c} R(P2)={c} ; W(P2)={w} R(P1)∩W(P2)={ } R(P2)∩W(P1)={c} 所以:两条语句不能并发执行。
同一语句的“读集”和“写集”的交集是空集。 R(c=a-b)∩W(c=a-b)={ } R(w=c+1)∩W(w=c+1)={ } 同一语句的“读集”和“写集”也可能相同(交集不为空) 例如计数语句: x=x+1 读集和写集相同 R(x=x+1)=W(x=x+1)={x}
例:下述四条语句 R(S1)={x,y} W(S1)={a}; R(S2)={z} W(S2)={b}; S1: a=x + y S2: b=z + 1 S3: c=a + b S4: w=c + 6 S1 S2 S4 S3 R(S1)={x,y} W(S1)={a}; R(S2)={z} W(S2)={b}; R(S3)={a,b} W(S3)={c}; R(S4)={c} W(S4)={w};
程序顺序执行、并发执行特征比较 程序的顺序执行 程序的并发执行 1 顺序性 1 间断性 2 封闭性 2 失去封闭性 程序的顺序执行 程序的并发执行 1 顺序性 1 间断性 2 封闭性 2 失去封闭性 3可再现性 3 不可再现性
进程的定义 进程有许多各式各样的定义 (1)进程是可以并发执行的计算部分 (2)进程是一个独立的可以调度的活动 (3)进程是一个抽象的实体,当它执行某个任务时,将要分配和释放各种资源 (4)行为的规则叫程序,程序在处理机上执行的活动称为进程。 (5)一个进程是一系列逐一执行的操作,而操作的确切含义则有赖于以何种详尽程度来描述进程。
我国对进程的定义 进程:一个具有独立功能的程序关于某个数据集合的一次运行过程。 在处理机上的执行过程和分配资源的基本单位 在这里,程序指一组操作序列,而数据集则是接受程序规定操作的一组存储单元的内容。
进程和程序的区别 动态性, 进程的实质是程序的一次执行过程,它由“创建”而产生,由“调度”而执行,因得不得资源而暂停执行,最后由“撤销”而消记亡,是有一定的生命期,而程序只是指令的集合,本身无运行的含义,是静态的。 并发性,并发性是进程的重要特征,引入进程的目的正是为了使其程序和其它程序并发执行;而程序(没有建立进程)是不能并发执行的。 独立性,是指进程一个能独立运行、独立分配资源和独立调度的基本单位;凡未建立进程的程序,都不能作为一个独立的单位参加运行。 异步性,各进程各自以独立的、不可预知的速度向前推进。
进程的三种基本状态 (Process State) 就绪 (Ready): 万事具备,只欠东风(被执行). 执行 (Running) 占有CPU. 阻塞(Blocked/Waiting) 进程因为等待某事件的发生(如I/O完成),不能继续执行.
进程3种状态间的转换 就绪->执行 执行->就绪 执行->阻塞 阻塞->就绪
进程基本状态图diagram of process state 进程创建 进程撤消 进程调度 事件发生 等待事件
挂起功能的引入 对换的需要 系统负荷调节的需要 终端用户的需要 为缓解内存紧张的情况,将内存中处于阻塞状态的进程换至外存上,使进程处于一种有别于阻塞状态的新状态。 系统负荷调节的需要 系统中负荷过重,资源数目相对不足时需要挂起一部分进程以调整系统负荷。 终端用户的需要 用户检查自己作业执行情况和中间结果时,因同预期结果不符而要求挂起进程以便进行检查和改正。
进程的5种状态 活动就绪 (Ready_Active) 静止就绪 (Ready_Static) 执行 (Running) 活动阻塞(Blocked_A) 静止阻塞(Blocked_S)
进程5种状态间的转换图
进程描述 操作系统的控制结构 进程的结构描述 PCB的结构 PCB的组织形式
进程和资源的关系 处理机 I/O 内存 P1 P2 Pn 虚拟内存 计算机资源
操作系统的控制结构 为掌握每一个进程和资源的当前状态信息, OS为每个被管理的对象建立并维护一张信息表,称为操作系统控制表,包括 内存表 输入/输出表 文件表 进程表
进程的主要组成部分 进程控制块(PCB) 程序 数据 系统栈
进程上下文 上文: 已执行过的进程指令\数据在寄存器和栈中的内容 正文 正在执行的 下文 待执行的进程指令\数据在寄存器和栈中的内容
机器指令与寄存器 通过DEBU了解机器指令理解寄存器 C程序 汇编程序 int a = 3; mov [010B], 3 a=a+1; mov ax, [010B] add ax, 1 mov [010B], ax b=a+2; mov ax, [010B] add ax, 2 mov [010D], ax
CPU现场保护的必要性 CPU 进程A 进程B mov ax, 3 add ax, 1 mov [010B], ax mov ax, 5 CX AX BX … mov ax, 3 add ax, 1 mov [010B], ax mov ax, 5 add ax, bx mov [020C], ax 进程A 进程B
Process Control Block (PCB进程控制块) OS为了管理、控制进程,设置PCB,存储进程相关信息 Process number 进程标识符 Process state 进程现行状态 Program counter 程序计数器 CPU registers 寄存器值 CPU scheduling information调度信息 Memory-management information 存储管理信息 Accounting information记帐信息 I/O status information I/O状态信息,如打开的文件
进程控制块的组织形式:链接方式
进程控制块的组织形式:索引方式
进程在各队列间迁移 方块表示队列,圆圈表示资源
CPU Switch From Process to Process