您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 计算机操作系统课件第2章-进程管理
进程管理进程的描述进程是资源分配和独立运行的基本单位。操作系统所具有的四大特征也是基于进程形成的,即所谓进程观点。显然,进程在操作系统中是个极其重要的概念。内容提要进程的概念进程的状态及其转换进程控制进程的同步和互斥临界资源和临界区进程同步机制管程机制线程程序的顺序执行在任何时刻,机器只执行一个操作,只有在前一个操作执行完后,才能执行后继操作。如下图:I1C1P1I2C2P2程序顺序执行的特点顺序性封闭性可再现性程序的并发执行若干个程序(或程序段)同时在系统中运行,这些程序(或程序段)的执行在时间上是重叠的,一个程序(或程序段)的执行尚未结束,另一个程序(或程序段)的执行已经开始。多道技术下作业执行过程作业A作业B开始开始空转输入空转输入空转输入空转输入停止停止‖‖程序并发执行的特点间断性失去封闭性不可再现性不可再现性举例之一S1S2S3S4可能的执行序列为:S1S2S3S4S2S1S3S4不可再现性举例之二例如,有两个循环程序A和B,它们共享一个变量N。程序A每执行一次都做N=N+1的操作,程序B每执行一次都打印N的值,并将N置为0。A和B的执行速度不同。不可再现性举例之二打印的结果为N+1,N=0N=N+1Print(N)N=0程序A程序B①不可再现性举例之二打印的结果为N,N=1N=N+1Print(N)N=0程序A程序B②不可再现性举例之二打印的结果为N,N=0N=N+1Print(N)N=0程序A程序B③进程概念的引入多道程序设计技术引入后,程序在系统中的执行是并发执行。并发程序在系统中执行时,和顺序程序相比,失去了封闭性,程序与CPU执行的活动之间不再一一对应,这样就使系统中的活动以及各种活动之间的相互关系非常复杂,从而程序这个静态的概念已不能如实地反映系统中的活动情况,为此,现代操作系统引入进程概念。进程的特征动态性并发性独立性异步性结构性进程的定义进程是程序的一次执行进程是一个程序及其数据在处理机上顺序执行时所发生的活动进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位从操作的角度理解进程图形窗口界面:一个窗口就是一个进程。打开窗口:建立一个进程;关闭窗口:一个进程结束。字符命令界面:一条命令一般就是一个进程。命令行尾回车:一个进程开始;命令执行结束(下一命令提示符出现):一个进程结束。从编程的角度理解进程进程建立:“建立进程”函数或系统调用进程结束:“撤消进程”函数或系统调用,或者程序的正常或非正常结束。进程与程序在并发环境下,一个正在执行中的程序称为进程。内存中的进程(动态)比外存上的程序(静态)要多很多内容(栈,动态数据,状态信息等)。一个进程可对应多个程序(代码覆盖)一个程序可对应多个进程(例如开两个WORD窗口)进程与程序的比较进程是动态的;程序是静态的进程具有并发性;程序本身具有顺序性,程序的并发执行是通过进程实现的进程具有独立性,是能独立运行的单位程序可作为一种软件资源而长期保存;进程是程序的一次执行,是动态的,具有临时有限的生命期进程具有结构性,从结构上看,进程是由程序、数据和进程控制块三部分组成的进程组成模型PCB程序部分数据集合进程的组成PCB进程控制块是进程实体的一部分,是操作系统中最重要的记录型数据结构PCB中记录了操作系统所需的、用于描述进程情况及控制进程运行所需的全部信息OS根据PCB来对并发执行的进程进行控制和管理PCB的结构1进程标识符2处理机状态信息3进程状态信息4进程优先权5进程调度所需的其它信息6进程阻塞原因7进程控制信息8族系关系9其它信息进程与PCB的关系每个进程有惟一的PCB操作系统依靠PCB管理进程利用PCB实现进程的动态并发PCB是进程存在的惟一标志进程的三种基本状态万事俱备,就差CPU就绪状态正在CPU上运行执行状态等待事件,无法运行阻塞状态新状态和终止状态新状态是一个进程刚刚建立,但还未进入就绪队列的状态;终止状态是当一个进程已经正常或异常结束,OS已经将它从就绪队列中移出,但尚未被撤销时的状态;在进程管理中,新状态和终止状态是非常有用的。进程状态转换的意义进程在运行期间,不断地从一个状态转换到另一个状态,体现出了进程的动态性。从进程的创建,到执行,再到进程的撤销,组成了进程的整个生命周期。进程状态图新进程执行结束阻塞就绪接纳中断完成进程调度I/O请求或等待某事件I/O完成或事件发生几点说明进程间的状态转换并非都是可逆的对于一个进程来说,它处于新状态和终止状态都只有一次进程间的状态转换并非都是主动的进程在执行态才是真正运行进程控制进程控制是指系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程运行中的状态转换。这些功能的实现由原语完成。原语由若干条指令组成。这些指令,要么全做,要么全不做,不允许中断。是不可分割的操作,具有原子操作的性质。进程的创建一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语Creat(),步骤如下:申请空白PCB为新进程分配资源初始化PCB插入就绪队列进程树体现进程间的关系ABCDEFGHKIJLM引起创建进程的事件用户登录作业调度提供服务应用请求引起进程终止的事件正常结束异常结束外界干预,包括:操作员或OS干预、父进程请求、父进程终止进程终止的过程根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态;若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度;若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成为不可控的进程;将被终止进程所拥有的全部资源,或者归还给其父进程,或者归还给系统;将被终止进程(它的PCB)从所在队列(或链表)中移出。引起进程阻塞和唤醒的事件请求系统服务启动某种操作新数据尚未到达无新工作可做进程阻塞的过程中断CPU将其运行现场保存在其PCB中置进程状态为阻塞态插入阻塞队列转进程调度进程唤醒的过程把被阻塞进程从阻塞队列中移出将其PCB的现行状态改为就绪状态插入就绪队列中进程挂起的过程系统利用挂起原语suspend()将指定进程或处于阻塞状态的进程挂起;运行态→静止就绪活动就绪→静止就绪活动阻塞→静止阻塞进程激活的过程系统利用激活原语active()将指定进程激活;静止就绪→活动就绪静止阻塞→活动阻塞进程同步进程同步的主要任务,是使并发执行的多个进程之间能有效地共享资源和互相合作,从而使程序的执行具有可再现性。进程间存在的两种关系资源共享关系互相合作关系临界资源与临界区临界资源:一次仅允许一个进程使用的共享资源,如打印机、磁带机、共享变量等临界区:在每个进程中访问临界资源的那段程序,简称CS区生产者—消费者举例in指针out指针1n设置整型变量counter,记录可以消费的消息数。设它的初值为5。······执行举例P1:register1=counter;P2:register1=register1+1;P3:counter=register1;C1:register2=counter;C2:register2=register2-1;C3:counter=register2;执行序列一:P1,P2,P3,C1,C2,C3,则最后结果为counter=5执行序列二:C1,C2,C3,P1,P2,P3,则最后结果为counter=5执行序列三:P1,P2,C1,C2,P3,C3,则最后结果为counter=4具有临界区的进程结构一个访问临界资源的循环进程可描述如下:repeatentrysectioncriticalsectionexitsectionremaindersectionuntilfalse;结果分析执行序列三最后结果counter的值为4,是错误的,这表明程序的执行不能具有可再现性。为了预防发生这种错误,解决此问题的关键,是应把变量counter设为临界资源,令生产者和消费者进程互斥访问变量counter。同步机制应遵循的机制空闲让进忙则等待有限等待让权等待用软件方法解决进程互斥问题利用软件方法来解决进程互斥问题,可以在很大程度上体现进程互斥问题的复杂度,现在已经很少使用软件方法来解决进程互斥了。算法一设置一个公用整型变量turn,用于指示被允许进入临界区的进程编号。repeatwhileturn≠idono_op;criticalsectionturn=j;remaindersectionuntilfalse;算法1不能保证实现“空闲让进”的准则。算法二repeatwhileflag[j]dono_op;criticalsectionflag[i]=false;remaindersectionuntilfalse;算法2违背了“忙则等待”的准则。Booleanflag[n];flag[i]=true;算法三repeatwhileflag[j]dono_op;criticalsectionflag[i]=false;remaindersectionuntilfalse;算法3违背了“有空让进”的准则。Booleanflag[n];flag[i]=true;算法四repeatwhile(flag[j]andturn=j)dono_op;criticalsectionflag[i]=false;remaindersectionuntilfalse;算法4结合了算法2和算法3各自的优点,是一种成功的算法。Booleanflag[n];flag[i]=true;turn=j;用硬件方法解决进程互斥问题利用Test-and-Set指令实现互斥利用Swap指令实现互斥Test-and-Set指令booleanTS(booleanlock){lock=true;}其中,lock有两种状态:lock=false,表示该资源空闲;lock=true,表示该资源正被使用。Test-and-Set指令可定义为:TS=lock;利用TS实现进程互斥利用TS实现进程互斥的循环进程可描述如下:repeatwhileTS(lock)do-skip;criticalsectionlock=false;remaindersectionuntilfalse;Swap指令Swap(booleana,booleanb){a=b;}Test-and-Set指令可定义为:temp=a;b=temp;利用Swap实现进程互斥利用Swap实现进程互斥的循环进程可描述如下:repeatkey=true;criticalsectionlock=false;remaindersectionuntilfalse;repeatSwap(lock,key);untilkey=false;信号量机制1965年,荷兰计算机学家Dijkstra提出了一种卓有成效的进程同步工具——信号量机制。在应用中,信号量机制又发展为信号量集机制,现在已被广泛应用于单处理机和多处理机以及计算机网络中。整型信号量Dijkstra最初将信号量定义为依个整型量,除初始化外,只能通过两个标准原子操作wait(s)和signal(s)来访问。这两个操作被称为P、V操作。可描述为:wait(s):whiles≤0dono_op;s=s-1;signal(s):s=s+1;利用信号量实现互斥为使多个进程互斥访问某临界资源,只需为该资源定义一个互斥信号量mutex,并设其初始值为1。然后将各进程的临界区CS置于wait(mutex)和signal(mutex)操作之间即可实现互斥。利用信号量实现进程互斥利用信号量实现进程互斥的循环进程可描述如下:P1:repeatwait(mutex);criticalsectionsignal(mutex);remaindersectionuntilfalse;P2:repeatwait(mutex);criticalsectionsignal(mutex);remaindersectionuntilfalse;利用信号量描述前驱关系设有两个并发执行
本文标题:计算机操作系统课件第2章-进程管理
链接地址:https://www.777doc.com/doc-5491149 .html