进程管理及并发控制和同步.doc

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

进程管理及并发控制和同步

在本章中,我们研究实现进程管理及并发控制和同步。

第1节进程的定义和特征

§1. 进程的定义

进程(process)或任务(task)这一术语是在六十年代初期,首先在麻省理工学院(MIT)的MULTICS系统和IBM公司的CTSS/360系统中引入的,其后有许多人对进程下过各式各样的定义,下面列举几种比较能反映进程实质的定义:

⑴进程是程序的一次执行,亦即进程是在指定的内存区域中的一组指令序列的执行过程。

⑵进程(或任务)是可以和别的计算并发(concurrent)执行的计算。

⑶进程可以定义为一个数据结构和能在其上进行操作的一个程序。

⑷进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

⑸进程(process)是一个具有独立功能的程序关于相关的数据集在处理机上的执行过程。⑹

§2. 进程的特征

进程具有顺序性、动态性、并发性、独立性和异步性等特征,进程的最基本的特征是并发性。

一个进程的顺序性是指每个进程在顺序处理机上的执行是严格按次序进行的,即只有当其中的一个操作结束后,才能开始其后续操作。

进程的动态性是指它是程序的一次执行过程,表现为它是由“创建(create)”而产生,由调度程序“调度”而运行,因“等待事件”而阻塞,最后,由“撤消(destroy)”而消亡。可见,进程是有一定生命期的,是动态地产生,运行和消亡的。

进程的并发性是指多个进程可以同时在一个系统中并发地执行。

进程的独立性是指它可以作为系统进行资源分配和调度的独立单位。

进程的异步性是指系统中的活动的进程总是按照各自独立的、不可预测的速度运行。

§3. 进程的结构

为了描述进程的运动变化过程并使之能独立地运行,应该为每个进程配置一个进程控制块(process control block 简记为PCB)。这样,从结构上看,每个进程都是由一个程序段和相应的数据段以及一个进程控制块三部分所组成。在UNIX系统中,把这三部分统称为进程映像(image)。而将进程定义为“进程映像的执行”。

第2节进程的状态和进程控制块

§1. 进程的状态

前面已经介绍过,进程有着“运行-暂停-运行-撤消”的活动规律,它并非一直处于运行状态。事实上,在运动中的进程至少具有三个基本状态:

⑴就绪状态(Ready):一旦进程分配到除处理机(CPU)以外运行所需的必要资源,就处于准备运行的状态,但是由于进程数多于处理机数,使得未分配到处理机的进程处于等待处理机的状态,一旦进程分配到处理机它就立即变成运行状态,并且立即运行。

⑵运行状态(Running):进程已经分配到包括处理机(CPU)在内运行所需的一切必要资源,并且正在处于运行的状态,即进程正在运行。

⑶阻塞状态(Blocked):正在运行中的进程,由于某一事件(例如等待输入/输出操作的完成)而使之暂时无法运行而处于暂停的状态,或者说进程的执行受到了阻塞,所以称这种暂停状态为阻塞状态。有时又称为等待状态。

进程并非固定地处于某个状态,它将随着自身的执行和外界环境的变化而发生变化。图2-1表示了三个基本状态之间的演变及其典型的演变原因。实际的操作系统常常把上述的三个基本状态进一步细化。例如,图2-2显示了典型的UNIX操作系统进程状态之间的演变及其演变原因。

图2-1 基本进程状态演变图

图 2-2 UNIX进程状态演变图

§2. 进程控制块

为了描述进程的运动变化过程并使之能独立地运行,采用了为每个进程配置一个进程控制块(Process Control Block 简记为PCB),或称进程描述符(Process Descriptor)。操作系统根据进程控制块对该进程进行控制和管理。当系统创建一个进程时,同时为它设置一个进程控制块。当进程完成时,系统收回它的进程控制块,进程也随之消亡。为了充分描述进程,使之便于操作系统进行控制和管理。进程控制块通常包含下列信息:

⑴进程标识符(Identification):进程标识符是以字母或数字形式表示的进程名称。每个进程只能有且仅有唯一的进程标识符,不同的进程不可以用相同的名称。在创建一个进程时,系统必须给出该进程的进程标识符,并填入进程控制块中。在有些系统中,为了方便起见,每个进程具有两个标识符,一个是在创建进程时,系统所提供的内部名称,一个是由创建者给予的外部名称。

⑵进程的当前状态(Status):说明进程目前处于何种状态,作为进程调度时分配处理机的主要依据,只有当进程处于活动就绪状态,并且具有最高优先数时才可以分配到处理机。当进程处于阻塞状态时,要在进程控制块中说明阻塞原因。

⑶处理机状态保护区:当进程由于某个事件从运行状态变为阻塞状态时,处理机现场信息被保存在进程控制块内部一个区域中,以便在进程重新获得处理机时,该进程能够恢复处理机现场继续执行。通常被保护的信息有各种寄存器、指令计数器和处理机状态字等。

⑷进程的起始地址:进程将要从此地址开始执行。在页面管理中应给出页表指针值等。

⑸资源清单:进程所需的资源。

⑹进程优先数:记录该进程的优先数。

⑺队列指针(pointer)或链接字(link):它用于将处于同一状态的进程链接成一个队列。存放本队列下一个进程的进程控制块首址。

⑻进程族的联系:它说明该进程与其进程家族的关系。

⑼计账信息:它被系统用于对该进程日常的计账管理。

第3节进程控制

进程控制的职责是对系统中全部进程实施有效的管理。这意味着应该具有创建新进程,阻塞进程,激活进程和撤消已经结束的进程等能力。

为了对于进程进行控制,操作系统内必须设置一个机构,它具有上述进程控制及进程通讯和资源管理等功能。这样的机构称为操作系统的内核(Kernel)。内核是通过各种原语操作来实现各种进程控制和管理功能的。所谓原语(Primitive)是机器指令的延伸,它由若干条指令组成,用以完成特定功能的一段程序。为了保证原语操作的正确性,原语在执行期间是原子的,亦即原语在执行期间是不可分割的。在许多机器的实现中,规定在执行原语操作时要屏蔽中断,以保证其不可分割性。用于进程控制的原语通常有下列几种:

⑴创建原语(Create Primitive)

⑵悬挂原语(Suspend Primitive)

⑶激活原语(Activate Primitive)

⑷阻塞原语(Block Primitive)

⑸唤醒原语(Wakeup Primitive)

⑹撤消原语(Destroy Primitive)

现代操作系统大多采用基于进程的设计方法进行设计。进程是操作系统的主要结构单位。一个操作系统就是由若干进程的协同地,并发地执行而组成。例如,一个简单的批处理操作系统可以看成由三个协同工作的reader进程、executer进程和printer进程组成。其中,reader进程从输入设备读取数据,并且把它们存入输入缓冲区。executer进程从输入缓冲区中读取数据,执行规定的操作,并且把执行结果存入输出缓冲区。printer进程从输出缓冲区读取信息,并且把它们在打印机上输出。

并发进程可以通过两种方式执行:一是允许进程共享一个或多个处理机,另一种方式是允许每个进程在其所在的处理机上运行。前一种途径涉及到多道程序设计技术,它是由操作系统的内核支持的,操作系统的内核在(一个或多个)处理机上多路传输那些进程。后一种涉及多处理机技术(如果这些处理机共享一个公共存储器),或涉及到分布处理技术(如果这些处理机由一个通信网络互连)。当然也存在一些混合方式,例如,分布式系统中的各计算机往往用多道程序设计方式来执行任务。

第4节进程的同步与互斥

虽然进程具有异步特性,但这并不是说系统中的各个进程是彼此独立的,由于种种原因,它们之间常常相互作用,并存在某种彼此依赖或互相制约的关系,这些关系按其性质可分为同步(synchronization)和互斥(mutual exclusion)关系。

系统中往往存在一些伙伴进程,即为完成同一任务而彼此合作的一组进程。伙伴进程在执行过程中常常需要互通信息或相互等待。以便协同完成同一任务。具体地说,一进程运行到某点时,要求另一伙伴进程为它提供信息,在未得到这一信息时,该进程等待,直至收到这一信息后,才能继续执行。它们彼此都清楚对方的存在及作用,而且每一进程还可能直接依赖于本组进程中其它成员所产生(或

相关文档
最新文档