《第2章处理器管理(912).ppt》由会员分享,可在线阅读,更多相关《第2章处理器管理(912).ppt(115页珍藏版)》请在三一办公上搜索。
1、第2章 处理器管理,主讲:周文强 课程:操作系统,本章内容:,2.1 处理器管理概述2.2 进程的描述2.3 进程控制,2.1 处理器管理概述,在计算机系统中,处理器是最重要的硬件资源,也是最紧俏的资源。因此,对处理器管理的好坏,将直接影响到计算机的整体性能。处理器管理的主要任务是对处理器进行分配,并对其运行进行有效的控制和管理。,2.1.1 处理器管理的功能,在现代操作系统中,处理器的分配和运行都是以进程为基本单位的,因而对处理器的管理也可以视为对进程的管理。,1、进程控制,在并发运行环境中,要使程序运行,必须先为它创建一个或几个进程,并给它分配必要的资源。程序运行结束时,要撤销这些进程,并
2、回收这些进程所占用的各类资源。进程控制的主要任务就是为程序创建进程,撤销已结束的进程,以及控制进程在运行过程中的状态转换。,2、进程同步,在并发环境中,进程是以异步方式工作的,并且以不可预知的速度向前推进。为了使多个进程能有条不紊地运行,系统中必须设置进程同步机制。进程同步的主要任务是对众多的进程运行进行协调。协调方式有两种:1)进程互斥方式 2)进程同步方式,1)进程互斥方式,进程在对临界资源访问时,应采用互斥方式,也就是当一个进程访问临界资源时,另一个要访问该临界资源的进程必须等待;当获取临界资源的进程释放临界资源后,其他进程才能获取临界资源。这种进程之间的相互制约关系称为互斥。临界资源是
3、指一次只能被一个进程使用的资源。互斥可以简单的理解为:有你就没有我,有我就没有你,2)进程同步方式,相互合作的进程,由同步机构对它们的执行次序加以协调。当前一个进程结束,后一个进程才能开始;前一个进程没有结束,后一个进程就不能开始。这种进程之间的相互合作关系称为同步,同步可以简单理解为:有你才有我,没你就没有我,同步进程举例-病人就诊,门诊医生:开化验单;等化验结果;继续诊病;,化验员:等化验单;化验;填写化验结果;继续化验,等待,等待,唤醒后,唤醒后,3、进程通信,在系统中,经常会用多个进程需要相互配合去完成一个共同的任务,而在这些进程之间,往往需要相互交换信息。进程通信的任务就是用来实现相
4、互合作进程之间的信息交换。,4、处理器调度,等待在后备队列上的作业,通过要经过处理器调度才能执行。处理器调度包括作业调度、进程调度和中级调度。进程调度被认为是低级调度,它决定哪个进程可以获得处理器。进程调度的基本任务是从后备队列中按照一定的算法,选择出若干个作业,为它们分配必要的资源,将它们调入主存,然后为它们建立进程,使之成为可能获取处理器的就绪进程,并按照一定算法将其插入到就绪队列。,2.1.2 程序执行,程序执行是指程序在计算机中的运行过程。程序的执行可以用前趋图表示,程序的执行方式有顺序执行和并发执行。,1、前趋图(Precedence Graph),前趋图是一个有向无循环图,记为DA
5、G(Directed Acyclic Graph),用于描述进程之间执行的前后关系。1、每个结点可用于表示一条语句、一个程序等;2、结点间的有向边用于表示两个结点之间存在前趋关系;3、前趋关系用表示;4、在前趋图中,没有前驱的结点称为初始结点,没有后续结点称为终止终点;5、前驱图中不能存在循环。,前趋图,前趋关系有:P1-P2,P1-P3,P2-P4,P3-P4,P4-P5P1叫初始结点,P4叫终止结点,程序是一个在时间上按严格次序前后相继的操作序列,是一个静态的概念。一个较大的程序通常由若干个操作组成。程序在执行时,必须按照某种先后次序逐个执行,只有当前一个操作执行完后,才能执行后一个操作。
6、例如:在进行计算时,总是先输入需要的数据,然后才能进行计算,计算完成后再将结果输出。用I代表输入,C代表计算,P代表打印。,2、程序的顺序执行,程序顺序执行时的特征,顺序性:程序顺序执行时,其执行过程可看做一系列严格按程序规定的状态转移过程,也就是每执行一条指令,系统就从上一个执行状态转移到下一个执行状态,且上一条指令的执行结束是下一条指令执行开始的充分必要条件;例如:输入计算打印 的顺序性,程序顺序执行时的特征,封闭性:程序是在封闭的环境下执行。即程序在运行时独占全部资源,资源的状况只有本程序才能改变它。程序一旦开始执行,其执行结果不受外界因素影响。,程序顺序执行时的特征,确定性:顺序执行的
7、最终结果可再现是说程序执行的结果与执行速度无关,程序无论是从头到尾不停的执行,还是“停停走走”的执行,都不会影响到最终结果。可再现性:只要程序执行的环境和输入的初始条件相同,则程序无论重复执行多少次,按照何种方式执行,都将获得会相同的结果。,3、程序的并发执行,一个较大的程序包括若干个按照一定次序执行的组成部分。但是,在处理一批程序时,它们之间有时并不存在严格的执行次序,可以并发执行。如程序顺序执行中的示例,虽然在进行计算时,总是先输入需要的数据,然后才能进行计算,计算完成后,再将结果输出。但是,完成第一次输入后,在对第一次输入进行计算的同时,可以进行第二次输入,实现第一次计算与第二次输入的并
8、发执行。,程序的并发执行及其特征,1、程序的并发执行,输入进程是计算进程的前提,计算进程是打印进程的前提。I1c1 p1:顺序执行,程序的并发执行是指在一个时间段内执行多个程序。程序在并发执行时,虽然提高了系统的吞吐量,但是,也会产生一些与顺序执行时不同的特征。1)间断性:程序在并发执行时,由于它们共享系统资源,以及为完成同一任务而相互合作,致使在这些并发执行的程序之间形成了相互制约的关系。从而使得有些程序在执行中出现走走停停的情况,表现为“执行暂停执行执行”的间断性活动规律。,程序并发执行时的特征,程序并发执行时的特征,2)失去封闭性:程序并发执行时,由多个程序(进程)共享资源,因而对资源的
9、状态由多个程序来改变,致使程序的运行失去了封闭性。这样,程序在执行时,必然会受到其他程序的影响。3)不可再现性:由于程序执行时失去了封闭性,也将导致失去可再现性。即使并发程序执行的环境和初始条件相同,程序多次执行或以不同的方式执行,可能获得不相同的结果。,并发执行案例,初始条件:程序A和程序B为并发执行,它们共享变量K,假设K初始值为5,程序A执行K=K-1;程序B执行print K;K=K+3。执行条件:程序A和程序B,如果按以下顺序执行,K的执行结果是多少?,并发执行案例,顺序1 按K=K-1;print K;K=K+3条件执行,K的执行结果是多少?解:K初始值为5 K执行的结果分别是4,
10、5,7,并发执行案例,顺序2 按print K;K=K-1;K=K+3条件执行,K的执行结果是多少?解:K初始值为5 K执行的结果分别是5,4,7,并发执行案例,顺序2 按print K;K=K+3;K=K-1条件执行,K的执行结果是多少?解:K初始值为5 K执行的结果分别是5,8,7,程序并发执行时的特征,4)资源共享性。系统中的硬件资源(CPU、内存和I/O设备等)和软件资源(系统程序和数据集等)不再被单个用户或程序独占,而为多个用户或作业共同使用。,程序并发执行时的特征,5)程序和计算不再一一对应。程序是指令的有序集合,是静态的概念;计算是指令序列在处理器上执行过程,和处理器按照程序的规
11、定执行操作的过程,是动态的概念。,程序并发执行时的特征,程序在顺序执行时,程序与计算间有着一一对应的关系。程序在并发执行时,一个共享程序可为多个用户作业调用,而使该程序处于多个执行中,从而形成了多个计算。这就是说,一个共享程序可对应多个计算。因此,程序与计算已不再一一对应。,2.2 进程的描述,在计算机系统中,特别是在多道程序环境下,众多的计算机用户程序并行运行,它们抢占处理器的处理时间,这就存在一个问题,如何正确有效地分配系统的各类资源,才能充分发挥处理器的强大功能?程序的概念已描述不清系统的这种并行情况,反映不了它们的活动规律和状态变化。进程是动态研究操作系统,以进程作为资源分配和独立运行
12、的基本单位。,2.2.1 进程的概念,从不同的角度,对进程所作的解释:(1)进程是程序的一次执行。(2)进程是可以和别的计算并发执行的计算。(3)进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的独立单位。(4)进程是一个具有一定功能的程序关于某个数据集合的一次运行活动。(5)进程是进程实体的一次活动。,进程与程序,进程与程序是两个截然不同但又有联系的概念,可从以下四个点来分析:(1)进程是程序的一次执行过程,而程序是一组指令的有序集合。(2)进程具有动态性、并发性、独立性和异步性等,而程序不具有这些特性。(3)进程包含程序、数据和进程控制块PCB。(4)程序多次运行,便可以产生
13、多个进程。,进程与程序(掌握),从以上四点可以看出进程与程序的差异:1、程序是静态的概念,而进程是动态的概念。2、程序可以长期保存,而进程是短暂存在的,它动态地产生、变化和消亡。3、程序和相应进程之间,有点像乐谱和相应演奏之间的关系,乐谱可以长期保存,而演奏是个动态的过程。,进程特征,进程具有以下5个基本特征:1)结构特征:程序段+相关数据段+PCB 2)动态性:进程是运行的程序。3)并发性 4)独立性 5)异步性,最基本的两个特征,1)结构特征 进程实体:程序段+相关数据段+PCB 2)动态性(基本特征)进程是运行的程序。它由创建而产生、由调度而执行,由撤消而消亡。,相当于身份证,进程特征,
14、进程特征,3)并发性(重要特征)多个进程在一段时间内同时运行,交替使用处理器的情况。如分时系统中按时间片运行。,4)独立性 进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。凡未建立PCB的程序,都不能作为一个独立的单位参与运行。,进程特征,进程特征,5)异步性 系统中的各进程按照各自独立的、不可预知的速度向前推进,或者说,进程按异步方式运行。异步性导致执行的不可再现性。故在系统中必须采取相应的措施保证进程之间能够协调运行。(进程同步机制保证进程之间的正确运行),2.2.2 进程的状态及其转换,系统中的诸多进程并发运行,并因竞争系统而相互依赖和相互制约,因而进程执行时呈现了“运行
15、暂停运行”的间断性。进程执行时的间断性,可用进程的状态及其转态的转换来描述。进程的并发执行,会引起进程之间竞争资源和协作,造成进程间断执行,同时引起了进程的状态变化。,1.进程的3种基本状态,进程可能由于等待I/O操作、竞争资源、以及相互协作等原因产生了“走走停停”的动态性。进程执行时的间断性,决定了进程可能具有多种状态。进程在生存期内至少具有五种基本状态:初始、就绪、运行、等待、终止,进程是运行的程序,所以不存在提交状态;作业运行的环境是批处理系统所以无阻塞状态。,进程状态,再加上初始和终止,总共有5种基本状态,初始态,进程刚被创建时,没有得到任何资源,同时其它进程正占有处理机而得不到执行,
16、只能处于初始状态。操作系统要做如下事情:建立PCB 建立资源表 分配资源 建立地址空间表,就绪(Ready)状态,当进程已分配到除处理器以外的所有必要资源后,只要再获得处理器就可以运行的状态称为就绪状态。已经分配到除CPU之外的所有资源,可谓“万事俱备,只欠CPU”。就绪队列:在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。,执行状态,处于就绪状态的进程获得了包括CPU在内的所需的全部资源,进程状态处于运行状态。程序正在执行。,单处理机系统中,只有一个进程处于执行状态;多处理机系统中,多个进程处于执行状态,等待状态,正在执行的进程由于发生某事件(等待事件)而暂时
17、无法继续执行时,便放弃处理机而处于暂停状态,即进程的执行受到阻塞,把这种暂停状态成为等待状态。,通常把处于等待状态的进程排成一个队列,称为等待队列。,终止状态,进程在执行结束后,将退出执行而被终止的状态。,47,2.进程状态的转换,48,就绪,执行,等待,进程调度,时间片满,等待某个事件,因等待事件发生而唤醒,初始,终止,完成,1.初始就绪,49,就绪,执行,等待,进程调度,时间片满,等待某个事件,因等待事件发生而唤醒,初始,终止,完成,2.就绪执行,50,就绪,执行,等待,进程调度,时间片满,等待某个事件,因等待事件发生而唤醒,初始,终止,完成,3.执行就绪,51,就绪,执行,等待,进程调度
18、,时间片满,等待某个事件,因等待事件发生而唤醒,初始,终止,完成,4.执行等待,52,就绪,执行,等待,进程调度,时间片满,等待某个事件,因等待事件发生而唤醒,初始,终止,完成,5.执行终止,53,就绪,执行,等待,进程调度,时间片满,等待某个事件,因等待事件发生而唤醒,初始,终止,完成,6.等待就绪,进程状态转换,运行状态等待状态,等待使用资源或某事件发生;,初始状态就绪状态,进程创建后,得到了除CPU之外的全部资源;,等待状态就绪状态,资源得到满足或事件发生,进程状态转换,运行状态就绪状态,运行时间片到;出现有更高优先权进程。,就绪状态运行状态,CPU空闲时选择一个就绪进程。,执行状态终止
19、状态,执行结束。,Linux下进程状态的转换,2.2.3 进程的挂起状态,1、引入挂起状态的原因(1)终端用户的请求:修改程序(2)父进程请求:对子进程的修改等(3)负荷调节的需要:资源不够用(4)操作系统的需要:检查资源利用情况,2、引入挂起状态后的进程状态转换 在引入挂起状态后,又增加了挂起状态(静止状态)到非挂起状态(活动状态)的转换;以及反转换。(1)活动就绪静止就绪(2)活动阻塞 静止阻塞(3)静止就绪活动就绪(4)静止阻塞活动阻塞,运行状态静止就绪,正在运行的进程,如果用挂起原语将该进程挂起后,此时进程就暂停运行,转变为静止就绪状态。,静止就绪活动就绪,处于静止就绪状态的进程,若用
20、激活原语将该进程激活后,进程状态就由静止就绪状态变为活动就绪状态,激活后的进程就可以被调度运行了。,活动就绪静止就绪,当进程处于未被挂起的就绪状态时,称之为活动就绪状态,在用挂起原语将该进程挂起后,此时进程就变为静止就绪状态。处于静止就绪状态的进程,不能再被调度运行。,活动等待静止等待,当进程处于未被挂起的等待状态是,称之为活动等待状态。在用挂起原语将该进程挂起后,此时进程就转变为静止等待状态。,静止等待活动等待,处于静止等待状态的进程,若用激活原语将该进程激活,进程状态就由静止等待状态变为活动等待状态。,静止等待静止就绪,处于静止等待状态的进程,在其所需要的资源满足或完成等待的事件后,就会变
21、为静止就绪状态。,2.3 进程控制(掌握),进程控制的主要任务是为作业程序创建进程,撤销已结束的进程,以及控制进程在运行过程中的状态转换。本节主要介绍进程控制块的作用、组成、组织方式,进程的创建与撤销,进程的等待与唤醒。,2.3.1 进程控制块PCB,PCB:为了描述和控制进程的运行,系统为每个进程定义了一个数据结构,成为进程控制块。通过PCB,使得原来不能独立运行的程序(数据),成为一个可以独立运行的基本单位,一个能够并发运行的进程。,1.进程控制块的作用,进程控制块随着进程的创建而创建,即创建一个进程,就是创建一个PCB;进程控制块随着进程的撤消而撤消,即撤消一个进程,就是撤消进程PCB。
22、因此,PCB是进程的存在的惟一标志。,2.进程控制块的内容,进程控制块主要包括四个方面的信息:1、进程标识信息2、说明信息(进程调度信息)3、现场信息(处理器状态信息)4、管理信息(进程控制信息),3.进程控制块的组织方式,在一个系统中,通常拥有数十个、数百个乃至数千个PCB,为了能对它们进行有效的管理,就必须通过适当的方式将它们组织起来。目前,常用的组织方式有链接方式和索引方式。,1)链接方式 Linux采用链接方式 具有同一状态的PCB,组成PCB队列 就绪队列、阻塞队列、空闲队列2)索引方式 系统根据所有进程的状态建立几张索引表 保存各索引表在内存的首地址记录 在每个索引表的表目中,记录
23、具有相应状态的某个PCB在PCB表中的地址。,单一队列可能造成队列太长,以及进程可能处于多个状态,从而造成效率太低。,73,进程控制块,74,4.进程控制原语,原语:是指具有特定功能的不可能被中断的过程。原语是不可再分,要么全做,要么全不做。它主要用于实现操作系统的一些专门控制操作。用于进程控制的原语有创建原语、撤销原语、等待原语、唤醒原语。,进程控制为什么要使用原语?,系统在控制进程时,如进程的创建、撤销,进程状态的改变都要调用相应的程序段来完成这些功能,若不采用原语,那么这些程序段可并发执行,这样这些程序段任意执行很可能使其执行结果失去封闭性、可再现性,从而达不到进程控制的目的。因此,进程
24、控制须用原语实现,如:创建原语、撤销原语、等待原语、唤醒原语等。,2.3.2 进程创建,1、进程图(Process Graph)进程图是用于描述一个进程的家族关系的有向树。在进程Pi创建了进程Pj之后,称Pi是Pj的父进程,Pj是Pi的子进程。子进程可以继承父进程所拥有的所有资源。为了标识进程之间的家族关系,在PCB中设置了家族关系表项,以标明自己的父进程以及所有的子进程。,进程图是反应进程家族关系的有向树。,进程图,1)用户登录:合法用户进程2)作业调度:运行作业时,分配资源,创建进程3)提供服务:如打印进程4)应用请求:如输入、计算、打印三进程,引起创建进程的事件/创建进程的原因,进程创建
25、的处理过程,1)引起创建进程的事件发生2)调用进程创建原语3)创建步骤如下:,进程创建步骤:,父进程(Parent Process)建子进程(Child Process)时,系统在进程表中增加一项,并从PCB池中取一个空白PCB。为新进程的进程映像分配地址空间。传递环境变量,构造共享地址空间。为新进程分配资源,除内存空间外,还有其他各种资源。查找辅存,找到进程正文段并装到正文区。初始化进程控制块,为新进程分配进程标识符,初始化PSW。加入就绪进程队列,将进程投入运行。通知操作系统的某些模块,如记账程序、性能监控程序。,功 能:创建一个具有指定标识符进程创建方式:由系统程序模块统一创建 由父进程
26、创建入口信息:进程标识符、优先级、进程开始地址、初始CPU状态、资源清单等,2.3.3 进程撤销,1)正常结束:进程顺利的完成使命后终止(大多数情况)。批处理系统的结束标志:Holt指令、撤消的系统调用分式系统:Logs off 指令,1.引起进程撤销的事件,2)进程异常错误:在进程运行期间,由于出现某种错误和故障而迫使进程终止。可能的异常事件:1)越界错误 2)保护错 3)非法指令 4)特权指令错 5)运行超时 6)等待超时 7)算术运算错 8)I/O故障,1.引起进程撤销的事件,1.引起进程撤销的事件,3)进程应外界的请求而终止运行 指在进程运行的过程中,应外界的请求而终止运行。比如调整资
27、源。可能的干预:1)操作员或操作系统干预 2)父进程请求 3)父进程终止,2.进程撤销的处理过程,一旦操作系统发现了要求终止进程的事件后,便调用进程终止原语,按照下列步骤终止指定的进程。根据进程PID得到进程PCB得到进程的状态若进程在执行,停止执行,置调度标志为真。终止子进程归还资源给父进程或系统移出队列,88,功 能:撤销一指定进程入口信息:被撤销的进程名撤销条件:已完成所要求的功能而终止由某种错误导致非正常终止祖先进程要求撤销某子进程,2.3.4 进程等待,1)请求系统服务 正在运行的进程请求系统提供服务时,例如:申请打印机打印,但是,申请服务资源被另外的进程占有,该进程只能处于等待状态
28、。,1.引起进程等待的事件,1.引起进程等待的事件,2)正在运行的进程启动某种操作后,其后续命令必须在该操作完成后才能运行,所以要先等待该进程。例如:某进程启动键盘输入数据,只有数据输入完成后才能计算,此时,该进程要被等待。,1.引起进程等待的事件,3)新数据尚未到达 对于相互合作的进程,如果一个进程需要先获得另一个进程提供的数据后才能运行,则只有等待所需要的数据到达才能运行。所以,该进程也要被阻塞。,1.引起进程等待的事件,4)无新工作可做 系统往往设置一些具有特定功能的系统进程,每当这种进程完成任务后,便把自己阻塞起来等待新任务的到来。例如系统中的发送进程,其主要任务是发送数据,若已有数据
29、发送完成又无新的发送请求,则该进程自我阻塞。,2.进程等待的处理过程,一旦操作系统发现了要求等待进程的事件后,便调用进程等待原语,按照下列步骤阻塞指定的进程。1)立即停止执行该进程 2)修改进程控制块中的相关信息。把进程控制块中的运行状态由“运行”改为“等待”状态,并填入等待原因,以及进程的各种状态信息。3)把进程控制块插入到等待队列。根据等待队列的组织方式,把等待进程的进程控制块插入等待队列中。4)转调度程序重新调度,运行就绪队列中的其他进程。,功 能:停止进程的执行,变为等待入口信息:可省,2.3.5 进程唤醒,1)请求系统服务得到满足 因请求服务得不到满足的等待队列中的进程,得到相应的服
30、务要求时,处于等待队列中的进程就被唤醒。,1.引起进程唤醒的事件,1.引起进程唤醒的事件,2)启动某种操作完成 处于等待某种操作完成的等待队列中的进程,其等待的操作已经完成,可以执行其后续命令,则必须把它唤醒。,1.引起进程唤醒的事件,3)新数据已经到达 对于相互合作的进程,如果一个进程需要另一个进程提供的数据已经到达,则把因此而处于等待的进程唤醒。,1.引起进程唤醒的事件,4)有新工作可做 系统中的具有特定功能的系统进程,接收到新的任务时,就必须唤醒它。,2.进程唤醒的过程,一旦操作系统发现了要求唤醒进程的事件后,便调用进程唤醒原语,按照下列步骤唤醒指定的进程。1)从等待队列中找到该进程2)
31、修改该进程控制块中的相关内容,把等待状态改为就绪状态,删除等待原因等。3)把进程控制块插入到就绪队列中。按照就绪队列的组织方式,把被唤醒的进程的进程控制块插入到就绪队列中。,100,功 能:唤醒某一处于等待队列当中的进程入口信息:被唤醒进程的名字,2.4 进程同步机制,操作系统中引入进程后,虽然改善了资源的利用率,提高了系统的吞吐量。但是,由于进程的异步性,也会给系统造成混乱。因此,必须有效地协调各个并发进程间的关系,从而使它们能正确的执行。本节主要介绍进程的同步与互斥的实现机制。,2.4.1 进程的并发性,在并发运行的系统中,若干个作业可以同时运行,而每个作业又需要有多个进程协作完成。在这些
32、同时存在的进程间具有并发性,称之为“并发进程”。进程间的关系可以分为:1、资源共享关系2、相互合作关系,1、资源共享关系,系统中的某些进程需要访问共同的资源,即当一个进程访问共享资源时,访问该共享资源的其他进程必须等待,当这个进程使用完后,其他进程才能使用。这时要求进程应互斥地访问共享资源。,2、相互合作关系,系统中的某些进程之间存在相互合作的关系,即一个进程执行完后,另一个进程才能开始。否则,另一个进程不能开始,这时就要保证相互合作的进程在执行次序上要同步。,2.4.2 进程同步的概念,对于相关进程间的同步和互斥,必须进行有效的控制。这种控制涉及几个基本概念,即临界资源、临界区、进程同步和进
33、程互斥的概念。,1、临界资源,通常一次仅允许一个进程使用的资源称为临界资源,同时,也将一个进程访问的这种临界资源的那段程序代码称为临界区。这里的临界资源的含义是广义的,它既包括物理实体资源,如打印机、磁带机等,也包括软件资源,如程序中的数据结构、表格和变量、文件等。操作系统中的进程就绪队列就是一种在一个时刻只能允许一个进程访问的临界资源。所以,进程的互斥就是两个进程不能同时进入访问同一临界资源的临界区。,2、临界区(critical section),临界区是进程执行程序中的对临界资源访问的那一段程序,这段程序的进入执行,需要有一定的原则来协调。也就是说,如果有若干进程都欲进入临界区,它们不能
34、互相阻塞,使得谁也进不了临界区,应当在有限时间内让一个进程进入临界区。但是,每次至多有一个进程进入临界区,并且在临界区中只能停留有限的时间。要实现这样的原则,操作系统的进程同步机制必须遵循如下准则。,3、进程同步与互斥,由于多个进程对资源的共享性,使系统中本来没有逻辑关系的进程因为互相竞争资源而产生了制约关系。系统中各个进程之所以有这种关系,主要原因是这种关系的基本形式是:“进程资源进程”,这是进程间通过资源而发生的一种间接关系。,由于系统对进程所请求的许多资源常常是互斥满足的,所以这种关系表现为互斥(Mutual Exclusion)关系(即竞争关系)。又由于系统中为了完成同一个任务而创建了
35、若干进程,它们之间必然是伙伴进程(进程合作),如某作业的一组并行进程共同完成一项任务,有时它们要在某点上互相等待和互通消息,这种关系的基本形式是“进程进程”,这是进程之间的一种直接关系,表现了进程之间的协同工作的特性,称为进程间的同步(synchronize)关系。,例如,现有A、B两个进程,A进程负责输入数据并送入缓冲区;B进程负责加工缓冲区中的数据并输出,为了保证这两个进程之间能够协同工作,则B进程必须等待A进程发来缓冲区已满的信号后才开始工作;A进程必须等待B进程发来缓冲区中的数据加工并输出后才能再次输入下一批数据,这体现了进程之间的同步关系;又由于这两个进程共用同一个缓冲区,因此,它们
36、对缓冲区的操作还应该做到互斥。,2.4.3 进程同步机制应遵循的原则,为了实现进程的同步与互斥,可以利用软件方法,也可以在系统中设置专门的同步机制来协调各个进程。但是,所有的同步机制都必须遵循以下4条原则:1)空闲让进 2)忙则等待 3)有限等待 4)让权等待,进程同步机制应遵循的原则,(1)空闲让进。当无进程处于临界区时,允许一个进程进入。(2)忙则等待。当有进程在临界区中,其他欲进入临界区的进程必须等待。(3)有限等待。对要求进入临界区的进程,应在有限时间内让其进入,避免“死等”。(4)让权等待。临界区让出,必须立即释放处理器,让等待进程进入,避免“忙等”。操作系统中进程之间既同步又互斥的
37、这种协作关系通常被称为进程同步机制。那么这种同步机制是如何实现的,又有哪些实现方式?这就涉及到进程之间的信息交换问题,也即进程通信。进程通信通常分为低级通信和高级通信两类。,典型的进程同步与互斥实例,(1)生产者-消费者问题 生产者-消费者问题是最著名的进程同步问题。它描述了一组生产者向一组消费者提供产品,它们共享一个有界缓冲区,生产者向其中投放产品,消费者从中取得产品。生产者消费者问题是许多相互合作进程的一种抽象。例如,在输入时,输入进程是生产者,计算进程是消费者;而在输出时,计算进程是生产者,打印进程是消费者。因此,该问题具有很大实用价值。,(2)读者写者问题,“读者写者”问题是另一个经典的同步与互斥问题。在计算机系统中,有些文件是可共享的。当若干个并发进程都要访问某个共享文件(特别是数据库文件)时,应该区分是读出还是写入(修改)文件。显然,通常可允许多个进程同时读取文件,但下面几种情况是不允许的:即不允许在某进程读取文件的同时,另一个进程又在修改该文件;或者有一个进程在修改某一个文件的同时,另一个进程又在读取该文件,否则会造成读出的文件内容不正确;再有就是绝对不允许多个进程同时修改同一个文件。,