|
| 当前所在位置是:首页_数学与计算机科学系>网络课程 |
| 课程学习:第五章 进程管理 |
§5.1 为什么要引入“进程”的概念 进程是操作系统最基本的概念之一,引入这个概念,对于我们理解、描述和设计操作系统具有重要意义。这里我们把进程定义为:程序在一个数据集合上的一次执行。引入进程概念的主要目的是为了能正确反映程序执行时的活动规律和状态变化或是为了描述系统中的各种并发活动。这里要注意进程与程序的关系,认识到它们是完全不同的概念,同时又有密切的联系。进程基本的五大特征是动态性、并发性、调度性、异步性和结构性。 §5.2 进程的表示和调度状态 一、进程的表示 1、进程的组成 进程由三部分组成: (1)程序:描述了进程所要完成的功能。 (2)数据集合:包括程序在执行时所需要的数据和工作区 程序和数据集合是进程存在的物质基础,即进程的实体。 (3) 进程控制块(Process Control Block,记为PCB):包含了进程的描述信息和控制信息,是进程的动态特性的集中反映。 2、进程控制块(PCB) 为了描述进程的动态变化,便于系统对进程进行有效的控制和管理,系统中为每一进程设置一个进程控制块。进程控制块是进程存在的一个唯一标志。当系统创建一个进程时,系统为其建立一个PCB,当进程被撤消时,系统收回它的PCB,随之该进程也就消亡了。通常PCB应包含以下几个方面的信息: (1)进程标识名或标识数。为了标识系统中的各个进程,每个进程必须有一个而且是唯一的标识名或标识数。 (2)位置信息。它指出进程的程序和数据部分在内存或处存中的物理位置。 (3)状态信息。它指出进程当前所处的状态,作为进程调度,分配处理机的依据。 (4)进程的优先级。一般根据进程的轻重缓急程度为进程指定一个优先级,优先级用优先数表示。 (5)进程现场保护区。 (6)资源清单。指出进程运行时的资源需求、分配和控制信息。 (7)队列指针或链接字。它用于将处于同一状态的进程链接成一个队列,在该单元中存放下一个进程PCB首址。 (8)其它信息。 二、 进程的状态及其转换 进程执行时的间断性决定了进程可能具有多种状态,事实上,运行的进程有三种基本状态:
进程的动态性质决定了进程的状态不是固定的,它随着自身的推进和外界条件的变化而不断变化。进程状态之间的转换主要体现为:就绪进程被调度进入运行态,运行状态受阻塞转入阻塞状态,阻塞状态在阻塞消除后进入就绪状态等待调度,不能直接返回运行状态。在分时系统中,当时间片到期,正在执行的进程返回到就绪状态等待下一次调度。进程状态及其转换图
§5.3 进程的控制 一、进程的控制机构 为了对进程进行有效的控制,操作系统必须设置一套控制机构,它应具有创建一个新进程,撤消一个已经运行结束的进程,以及具有改变进程状态、实现进程间通讯的能力。这样的机构属于操作系统的内核(Kernel)。内核本身并不是一个或一组进程。它是计算机系统硬件的首次延伸,它通过执行各种原语(primitive)操作来实惠其控制功能。 原语是指由若干条机器指令构成的并用以完成特定功能的一段程序,而这段程序在执行期间是不可分割的。 二、进程控制原语 1、进程的建立 系统中同时存在的进程数有很多,那么,这些进程是怎样建立起来的呢?通常有两种方式来建立进程: (1)在系统生成时就建立起一些系统进程,如常驻内存的系统进程:输入读进程、输出写进程。 (2)设立一个创建进程的程序模块,即经创建原语产生进程。用创建原语所建立的进程主要是非常驻的系统进程和用户进程。 所谓建立一个进程,实际上就是首先为其设置一个PCB,规定好PCB的各个参数。其次装入该进程的实体----程序和有关数据集合。 2、状态转换原语 (1)挂起原语。当需要把某个进程挂起时可调用挂起原语。 (2)激活原语。在挂起原语的作用下,进程的状态由活跃转为静止。激活原语则使处于静止状态的进程变成活跃。 (3)阻塞原语和唤醒原语。当一进程所期待的某一事件尚未出现时,该进程调用阻塞原语把自己阻塞起来。相反,当某进程所期待的事件出现时,由“发现者”进程调用唤醒原语。 3、进程的撤消 当一个进程在完成其规定的任务后,应予以撤消。撤消进程有两种方式:仅撤消一个具有指定标识名的进程,或撤消该进程及其所有子孙。 §5.4 进程调度 1、进程调度程序的功能 实现进程的调度是由进程调度程序为完成。进程调度程序具有如下功能: ★记住系统中所有进程的状态、优先级和资源需求情况 ★确定调度算法,决定把处理机配给哪个进程和分配多长时间 ★分配处理机给进程 2、进程调度方式 所谓进程调度方式,是指当一个进程正在处理机上运行时,若有某个更为紧迫或更为重要的进程需要进行处理,或者说,如果有更高优先级的进程进入就绪队列时,如何分配处理机。通常有两种方式:非剥夺方式和剥夺方式。 3、进程调度算法 常用的进程算法有: (1)静态优先级法:这种算法是在进程创建时就确定了它的优先级,而且在进程运行过程中不再动态改变。 (2)动态优先级法:这种算法是进程运行过程中按照变化的情况对各个进程的优先级进行适当的调整,使系统可以获得更好的调度效果。 (3)时间片轮转法:适合在分时系统使用。 4、进程和程序区别 (1)进程是程序的一次执行,是动态的,而程序是一组有序指令的集合,是静态的。 (2)一个进程可以执行一个或几个程序,反之,同一程序可能由几个进程同时执行。(进程和程序不是一一对应关系) (3)程序可以长期保存, 而进程不行,进程具有产生、运行、撤消的生命周期。 (4)进程具有并发性, 而程序一般不具有。 (5)进程是一个独立运行单位,具有独立性。 §5.5 进程通讯 进程通信是指进程间的信息交换。P、V操作做为进程的同步与互斥工具因信息交换量少,效率太低,称为低级通信。而高级通信则以较高的效率传送大批数据。 高级通信方式主要有: 消息缓冲通讯和信箱通讯。 一、进程的同步与互斥 进程的同步与互斥是指进程在推进时的相互制约关系。在多道程序系统中,由于资源共享与进程合作,这种进程间的制约称为可能。为了保证进程的正确运行以及相互合作的进程之间交换信息,需要进程之间的通信。进程之间的制约关系体现为:进程的同步和互斥。
临界资源和临界区:一次只允许一个进程使用的共享资源称为临界资源,如打印机、公共变量等;而在并发进程中与共享变量有关的程序段称为临界区。对临界区的访问必须是互斥进行。进程进入临界区要满足一定的条件,以保证临界资源的安全使用,系统的正常运行,即对临界区的管理就遵循以下三个原则: (1)当有若干进程要求进入它们的临界区时,应在有限时间内使一进程进入临界区。换句话说,它们不应该相互等待而致使谁都不能进入。 (2)每次最多有一个进程处于临界区内。 (3)进程在临界区内逗留应在有限时间范围内。 二、 信号量(S)和P、V操作 在多道系统中,信号量机制是一种有效的实现进程同步与互斥的工具。信号量的值表示系统中某类资源的数目。若它大于0,则表示系统中当前可用资源的数量;若它小于0,表示系统中等待使用该资源的进程数目,即在该信号量队列上排队的PCB的个数。信号量的值是可变的,由P、V操作来改变。根据用途不同信号量可分为:公用信号量和私用信号量。公用信号量通常用于实现进程之间的互斥,初值为1,它所联系的一组并发进程无可对其实施P、V操作;而私用信号量一般用于实现进程间的同步,初值为0或为某个正整数N,仅允许拥有它的进程对其实施P操作。 P、V操作是定义在信号量S上的两个操作,其定义如下: P(S):(1)S:=S-1; (2)若S ≥0,则调用P(S)的进程继续运行; (3)若S<0,则调用P(S)的进程被阻塞,并把它插入到等待信号量S的阻塞队列中。 V(S):(1)S:=S+1; (2)若S>0,则调用V(S)的进程继续运行; (3)若S≤0,则从等待信号量S的阻塞队列中唤醒头一个进程,然后调用V(S)的进程继续运行。 P、V操作可表示为如下两个过程: Procedure P(Var S:Semaphore) begin S:=S-1; if S<0 then W(S) end;{P} Procedure V(Var S:Semaphore) begin S:=S+1; if S≤0 then R(S) end;{V} 其中W(S)表示将调用该过程的进程置成等待信号量S的阻塞状态,并插入相应的阻塞队列中。 R(S)表示要唤醒等待信号量S阻塞队列中的头一个进程。 进程的同步和互斥都可以通过P、V操作来实现,而生产者--消费者问题则是它们的结合点。具体实现见教材89页。 §5.6 死 锁 所谓死锁(Deadlock)是指多个进程循环等待它方占有的资源而无限期地僵持下去的局面。产生死锁的根本原因可归结为两点:(1)竞争资源。为多个进程所共享的资源不足,引起它们对资源的竞争而产生死锁。(2)进程推进顺序不当。进程运行过程中,请求和释放资源的顺序不当,而导致进程死锁。 一、 产生死锁的必要条件 产生死锁的四个必要条件: ★互斥条件:在一段时间内某资源仅为一个进程占有。 ★不可抢占条件:进程已获得的资源,在未使用完之前,不能被剥夺。 ★占有且申请条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。 ★循环等待条件:发生死锁时,必然存在一个进程----资源的环形链。 二、 死锁的预防和避免 预防死锁:要求进程申请资源时遵循某种协议,以破坏产生死锁的四个必要条件中的一个或几个,来防止发生死锁。 避免死锁:在资源的动态分配过程中,使用某种算法来防止系统进入不安全状态,从而避免死锁的发生。避免死锁的著名算法是银行家算法。 三、 死锁的检测与解除 检测死锁方法允许系统运行过程中发生死锁。但通过系统所设置的检测机构可以及时检测出死锁的发生,并精确地确定与死锁有关的进程和资源。 解除死锁是与检测死锁配套的一种设施,用于将进程从死锁状态下解脱出来。常用的方法是: ★删除法 ,即按照一定的次序逐个地删除(撤消)已死锁的进程,直至获得足够的资源,解除死锁为止。 ★剥夺法,即从一些进程那里剥夺足够数量的资源,再分给死锁进程,使其解除死锁。 |
版权所有: 柳州师范高等专科学校数学与计算机科学系 地址:广西柳州市柳北区 邮政编码:545004 联系电话:0772-2725514 |