《第3章进程管理-计算机操作系统》由会员分享,可在线阅读,更多相关《第3章进程管理-计算机操作系统(211页珍藏版)》请在金锄头文库上搜索。
1、第3章 进程管理,3.1 进程的概念 3.2 进程的描述 3.3 进程状态及其转换 3.4 进程控制 3.5 进程互斥 3.6 进程同步 3.7 进程通信 3.8 死锁问题 3.9 线程,3.1 进程的概念 现代操作系统的中: 程序的并发执行; 资源被共享; 用户随机地使用计算机。 它们是互相联系和依赖的,反映独立的用户如何使用有限的计算机系统资源的反映。 为了使用户充分、有效地利用系统资源。采用一个什么样的概念,来描述程序的执行过程和作为资源分配的基本单位才能充分反映操作系统的并发执行、资源共享及用户随机的特点呢?这个概念就是进程。,3.1.1 程序的并发执行 1. 程序的顺序执行 程序是一
2、个静态的概念,是指令的集合。是一个操作的序列。程序只有经过执行才能得到最终结果。 而且一般用户在编写程序时不考虑在自己的程序执行过程中和其他用户程序竞争资源这一事实。 另外,计算机 CPU是通过时序脉冲来控制顺序执行指令的。其执行过程可以描述为:IR指令寄存器 Repeat IR Mpc M:内存,PC:程序计数器 pc pc+1 Execute (instruction in IR) Until CPU halt,程序的顺序执行的有向图(前驱,后继),t,输入: 计算: 输出:,t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10,t,程序2:,程序3:,I2,C2,P2,I3
3、,C3,P3,我们把程序独占处理机执行,直至最终结束的过程称为程序的顺序执行。 程序的顺序执行具有如下特点: (1) 顺序性:上一条指令执行的结果是下一条指令开始执行的充分必要条件。 (2) 封闭性:执行得到的最终结果由给定的初始条件决定,不受外界因素的影响。 (3) 可再现性:只要输入的初始条件相同,则重复执行该程序都会得到相同的结果。与执行速度无关。 问题:执行过程能否再现?,2. 多道程序系统中程序执行环境的变化 该环境,能够同时处理多个具有独立功能的程序。 批处理系统、分时系统、实时系统以及网络与分布式系统等都是这样的系统。 这样的执行环境具有下述三个特点: (1) 程序的并发执行:
4、多个作业或进程的执行在时间上是重叠的。 见下图:,输入: 计算: 输出:,t0 t1 t2 t3 t4 t5 t6,t,t,三个程序并发执行的前驱图,没有前驱关系的过程可以并发执行(I3,C2,P1),这是系统的并发性,提高 (9-5)/9*100% = 44%。,(2) 随机性 在多道程序环境下,特别是在多用户环境下,程序和数据的输入与执行开始时间都是随机的。 (3) 资源共享 资源共享将导致对进程执行速度的制约。 有两种方式: A:由系统统一分配。先向系统提出申请,然后按一定的策略统一分配。如硬资源。 B:由程序自行分配。如数据表,变量等软资源。但系统应提供协调机构,避免因竞争资源而发生混
5、乱。,多道程序的执行,t,A,A,t,等待I/O的时间(6个t),(a)单道情况,11,0,7,8,B,B,t,A,A,t,(b)两道情况,11,0,7,1,8,9,t,t,(c)四道情况,11,0,7,1,8,9,2,3,10,图3.1 单道、两道和四道情况,1,4,2,吞吐率:1/8t = 0.125道程序/t,吞吐率: 2/9t = 0.222道程序/t,吞吐率: 4/11t = 0.363道程序/t,多道程序环境的特点: (1)独立性: 每道程序逻辑上是独立的,执行速度(占用CPU的时间)与其它程序无关,但程序的周转时间延长了。 (2)随机性: 多个用户的程序和数据的输入,执行的时间都
6、是随机的。 (3)资源共享: 程序的道数 CPU和外设的个数,导致了资源必须共享。,3. 程序的并发执行 (1) 什么是程序的并发执行 是为了增强计算机系统的处理能力和提高资源利用率所采取的一种同时操作技术(在一段时间内)。或一组在逻辑上独立的程序,在执行的过程中在时间上是重叠的。即一个程序的执行尚未结束,而另一个程序的执行已经开始。 可分为两种: 第一种:是多道程序系统引起的并发执行(无关程序)。 由于资源的有限性,产生资源的共享与竞争。从而制约各道程序的执行速度。 因此,尽管多道程序的并发执行在宏观上是同时进行的,但在微观上仍是顺序执行的。,第二种:在某道程序内部包含着若干可以同时执行或顺
7、序颠倒执行的代码(相关程序) 。例如语句: read (a) ; read (b) ; 它们既可以同时执行,也可颠倒次序执行。 对于这样的语句,同时执行不会改变顺序程序所具有的逻辑性质。因此,可以采用并发执行来充分利用系统资源以提高计算机的处理能力。 程序的并发执行不同于程序的并行执行。程序的并行执行是指一组程序在一个时间的瞬间同时执行。在时间上不重叠。 *只有一个资源的情况。 *不同类型资源的情况。 *同类型有多个资源的情况。,只能并发执行,可并行执行,可并行执行,可以将并发执行过程描述为: S0 Cobegin P1;P2;. Pn Coend Sn 在S0,Cobegin 和 Coend
8、,Sn中包含P1;P2;. Pn 其中P1,P2,Pn是可以并发执行的语句。 问题:P1.Pn,哪一个程序先执行?,两相邻语句S1,S2可以并发执行的条件: 将程序中任一语句 Si 划分为两个变量的集合R(Si)和W(Si) 其中: R(Si)=a1, a2, am,aj(j=1,m) 是语句Si在执行期间必须对其读的变量集合; W(Si)=b1, b2, bn,bj(j=1,n) 是语句Si在执行期间必须对其进行修改变量集合; 如果对于语句S1和S2,有 R(S1) W(S2)=; 交运算,空集。 W(S1) R(S2)=; W(S1) W(S2)= 同时成立,则语句S1和S2是可以并发执行
9、的。,如有语句 c =a - b 和 w = c +1; 能否并发执行(其 “读集”和“写集”分别为): 第一条语句的读写集合 R(ca-b) a,b ;W(ca-b) c 第二条语句的读写集合 R(wc+1) c ;W(wc+1) w 交集运算集合 R(ca-b)W(wc+1) R(wc+1)W(ca-b) c 所以:两条语句不能并发执行。,(2) 程序的并发执行所带来的影响 A:充分地利用了系统资源,从而提高了系统的处理能力; B:由于系统资源有限,导致资源共享和资源竞争,作业的周转时间长了。 实现并发执行的条件: A:硬件:有多道程序驻留且互不干扰的存储空间; B:软件:有能将源程序编译
10、成并发程序的编译器。 在多道环境下,如果并发执行的程序段不按照规定的方法进行资源共享和竞争,则其执行结果将失去封闭性(不受外界因素的影响)和可再现性(程序重复执行会得到相同的结果。与执行速度无关)。,例:设有堆栈S,栈指针top,栈中存放内存中相应数据块地址如图,设有两个程序段: getaddr(top):从给定的top所指栈中取出相应的内存数据块地址(出栈); reladdr(blk):则将内存数据块地址blk放入堆栈S中(进栈) 。 procedure getaddr(top) 取数据(出栈) begin local r;定义局部变量 r (top);取数据 top top-1;移动指针
11、return(r);返回值 end,procedure reladdr(blk) 存数据(进栈) begin top top+1;移动指针 (top) blk;存放地址 end 显然,如果getaddr 和 reladdr程序段按顺序执行,其执行结果具有封闭性和可再现性。 但如果对这两个程序段采用并发执行,则在单CPU系统中,将有可能出现下述情况:,例子:取数据(出栈)操作 先写reladdr(blk) ,后读getaddr(top) 图3.1 堆栈的取数过程,这说明了在某些情况下,程序的并发执行使得其执行结果不再具有封闭性和可再现性,使程序出现错误。 错误原因是由于两程序段共享资源堆栈S,从
12、而使得执行结果受执行速度影响。 为了使并发执行时不出现错误结果,必须采取某些措施来制约、控制各并发程序段的执行速度。 为了控制和协调各程序段对资源的共享和竞争,必须有一个描述各程序段执行过程和共享资源的基本单位。 用程序作为其执行过程以及共享资源的基本单位是不合适的。这个基本单位被称为进程(或任务)。,3.1.2 进程的定义 进程的概念是60年代初期出现的。 进程的定义: (1) 进程是可以并行执行的计算部分(S.E.Madnick,J.T.Donovan); (2) 进程是一个独立的可以调度的活动(E.Cohen,D.Jofferson); (3) 进程是一抽象实体,当它执行某个任务时,将要
13、分配和释放各种资源(P.Denning); (4) 行为的规则叫程序,程序在处理机上执行时的活动称为进程(E.W.Dijkstra);,(5) 一个进程是一系列逐一执行的操作,而操作的确切含义则有赖于以何种详尽程度来描述进程(Brinch Hansen)。 (6)一个具有独立功能的程序对某个数据集在处理机上执行的过程和分配资源的基本单位。 进程的本质是一个动态的执行过程这一概念。 进程的特征: (1)动态性: 有创建,运行,消亡的过程(生命周期)。 (2)并发性: 任何进程都可以同其他进程一起并发执行。,(3)异步性: 由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知
14、的速度向前推进。 (4)独立性: 进程是一个独立的运行,分配资源,管理,调度的基本单位。 (5)结构性: 进程由程序、数据和进程控制块(PCB)三部分组成。 进程控制块包含:一般信息,资源信息,控制信息等。 进程是多道程序和分时系统的需要,也是描述程序并发执行的需要。,好处: 提高了资源的利用率,提高了系统的吞吐量。 不足: (1)空间开销:用于管理进程的数据结构PCB要占用一定的存储空间; (2)时间开销:为了不断地填写,更新系统和进程的数据结构的内容; 为了进程的切换,保护现场,都需要占用CPU的时间。,进程管理的功能: (1)进程的控制:创建与撤销进程及多个进程状态的转换。 (2)进程的
15、协调:出现资源竞争时,如何对进程间的制约进行控制(互斥)。 (3)进程的通信:对进程间的信息交换和通信进行管理(同步)。 (4)进程的调度:按一定的策略将CPU分配给进程。 (5)进程的安全:死锁,多个进程争夺资源陷入僵局。 上述工作是由操作系统的内核完成的。,操作系统内核的概念: 现代操作系统广泛采用了层次结构,为了减少系统本身的开销,在进行层次设计时,往往将一些与硬件紧密相关的模块,运行频率较高的模块,关键性的数据结构,公共的基本操作模块,安排在靠近硬件的层次,并使之常驻内存,以提高操作系统运行的效率。这些模块的集合-内核。 内核的基本功能: (1)中断处理:系统活动的基础(系统调用,命令
16、输入,进程调度,设备驱动,文件操作,进程并发执行)。 (2)进程管理:对进程各个阶段的管理。 (3)系统的基本操作:时钟I/O接口及设备,安全机制,文件系统等。,近年来,为了更进一步减少操作系统的运行开销,提出了“微内核”的概念。 Micro kernel:没有文件系统的内核。 进程和程序的区别如下: (1) 进程是一个动态概念:进程强调执行过程,它动态地被创建,并被调度执行后消亡。而程序则是一个静态概念。程序是指令的有序集合。 (2) 进程具有并行特征:表现在两个方面,即独立性和异步性。程序不反映执行过程,所以不具有并行特征。 (3) 进程是竞争计算机系统资源的基本单位,受到系统资源的制约。制约就是对进程独立性和异步性