计算机操作系统(第3版)课件 第3章 进程_第1页
计算机操作系统(第3版)课件 第3章 进程_第2页
计算机操作系统(第3版)课件 第3章 进程_第3页
计算机操作系统(第3版)课件 第3章 进程_第4页
计算机操作系统(第3版)课件 第3章 进程_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二部分进程管理

PartTwoProcessManagement第3章进程Chapter3

Processes本章目标:ChapterObjective介绍进程的概念Tointroducethenotionofaprocess介绍进程的特点Todescribethevariousfeaturesofprocess3.1进程的概念ProcessConcept

为了描述并发程序执行时的特征,引入了进程。进程是资源分配的基本单位,也是独立运行的基本单位。本书使用的名词作业和进程基本可互换。Thetermsjobandprocessareusedalmostinterchangeablyinthistext.

前趋图前趋图是一个有向无循环图,用于描述程序、程序段或语句执行的先后次序。图中的每个结点可以表示一条语句、一个程序段或一个进程,结点间的有向边表示两个结点之间存在的前趋关系“→”:→={(Pi,Pj)│Pi必须在Pj开始执行之前完成}前趋图中的各类结点如果(Pi,Pj)∈→,可以写成Pi→Pj,则称Pi是Pj的直接前趋,Pj是Pi的直接后继。若存在一个序列Pi→Pj→…→Pk,则称Pi是Pk的前趋。在前趋图中,没有前趋的结点称为初始结点,没有后继的结点称为终止结点。

前趋图例S1S2S3S6S4S5程序的顺序执行

一个程序通常由若干个程序段所组成,它们必须按照某种先后次序来执行,仅当前一个操作执行完后才能执行后继操作,这类计算过程就是程序的顺序执行过程。例如:先输入→再计算→最后输出,即:I1→C1→P1→I2→C2→P2→…→In→Cn→Pn。程序顺序执行时的特征

顺序性:处理机的操作严格按照程序所规定的顺序执行,即每一个操作必须在下一个操作开始之前结束。封闭性:程序一旦开始运行,其执行结果不受外界因素影响。可再现性:只要程序执行时的初始条件和执行环境相同,当程序重复执行时,都将获得相同的结果。程序的并发执行及特点程序的并发执行是指若干个程序(或程序段)同时在系统中运行,这些程序(或程序段)的执行在时间上是重叠的,一个程序(或程序段)的执行尚未结束,另一个程序(或程序段)的执行已经开始。程序并发执行例进程1、2、3并发执行。对每个进程而言,其输入、计算和输出这三个操作必须顺序执行。它们之间存在如下先后关系:I1先于C1和I2,C1先于P1和C2,P1先于P2I2和C1,I3、C2和P1可以并发。I1I2I3C1C3C2P1P2程序并发执行时的特征

间断性:并发程序具有“执行---暂停----执行”这种间断性的活动规律。失去封闭性:多个程序共享系统中的资源,这些资源的状态将由多个程序来改变,致使程序之间相互影响。不可再现性:在初始条件相同的情况下,程序的执行结果依赖于执行的次序。与时间有关的错误例程序并发执行时可能出现与时间有关的错误。例进程1:r1=x;进程2:r2=x;r1++;r2++;x=r1;x=r2;设在两进程运行之前,x的值为0。则两进程运行结束后,x值可为:12程序并发执行的条件读集:语句执行期间要引用的变量集合,记为R(Si)={a1,…,am}写集:语句执行期间要改变的变量集合,记为W(Si)={b1,…,bn}Bernstein条件Bernstein条件能保证两个程序段并发执行而不会产生与时间有关的错误:R(Si)∩W(Sj)={}这两条保证R(Sj)∩W(Si)={}两次读之间数据不变W(Si)∩W(Sj)={}本条保证写操作结果不丢例考虑下面是条语句:S1:a=x+yS2:b=z+1S3:c=a-bS4:d=c+1R(S1)={x,y}R(S2)={z}R(S3)={a,b}W(S1)={a}W(S2)={b}W(S3)={c}因R(S1)∩W(S2)∪R(S2)∩W(S1)∪W(S1)∩W(S2)={},故S1和S2可以并发执行。因R(S2)∩W(S3)∪R(S3)∩W(S2)∪W(S3)∩W(S2)={b},故S2和S3不能并发执行。并发语句的描述方式cobeginS1;S2;…Sn;coend对应的前趋图如右,其中S0和Sn+1分别是cobegin和coend语句前后的两条语句。S0S1S2…SnSn+13.1.1进程Theprocess进程是执行中的程序,这是一种非正式的说法。Informally,aprocessisaprograminexecution.一个进程包括:Aprocessincludes代码段textsection程序计数器和处理机寄存器内容programcounterandthecontentsofprocessor’sregister栈stack数据段datasection内存中的进程

ProcessinMemory

进程的定义进程有多种定义,下面列举一些有代表性的定义:进程是程序在处理器上的一次执行过程。进程是可以和别的计算并行执行的计算。进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位。进程是一个具有一定功能的程序关于某个数据集合的一次运行活动。进程的特征动态性:进程是程序的一次执行过程。动态性还表现为它因创建而产生,因调度而执行,因无资源而暂停,因撤消而消亡。而程序是静态实体。并发性:多个进程实体同时存在于内存中,能在一段时间内同时运行。独立性:在传统OS中,进程是独立运行的基本单位,也是系统分配资源和调度的基本单位。异步性:也叫制约性,进程以各自独立的不可预知的速度向前推进。结构性:进程实体由程序段、数据段及进程控制块组成,又称为进程映像。进程与程序的关系进程是动态概念,程序是静态概念;进程是程序在处理机上的一次执行过程,而程序是指令的集合。进程是暂时的,程序是永久的。进程是一个状态变化的过程;程序可以长久保存。进程与程序的组成不同。进程的组成包括程序、数据和进程控制块。进程与程序是密切相关的。一个程序可以对应多个进程;一个进程可以包括多个程序。进程可以创建新进程,而程序不能形成新程序。3.1.2进程状态ProcessState进程执行时会改变状态。进程状态包括:Asaprocessexecutes,itchangesstate.

新建:进程正被创建。new:Theprocessisbeingcreated.

运行:指令在执行。running:Instructionsarebeingexecuted.

等待:进程等待某事件发生。waiting:Theprocessiswaitingforsomeeventtooccur.

就绪:进程等待分配处理器。ready:Theprocessiswaitingtobeassignedtoaprocessor.终止:进程执行完毕。terminated:Theprocesshasfinishedexecution.

进程状态图DiagramofProcessState进程的基本状态通常,一个进程至少应有以下三种基本状态:就绪状态执行状态阻塞状态进程的基本状态2就绪状态:进程已获得除处理机以外的所有资源,一旦分配了处理机就可以立即执行。执行状态:又称运行状态。一个进程获得必要的资源并正在处理机上执行。阻塞状态:又称等待状态、睡眠状态。正在执行的进程,由于发生某事件而暂时无法执行下去(如等待输入/输出完成)。这时即使把处理机分配给该进程,它也无法运行。进程状态转换图执行就绪阻塞进程调度时间片用完等待事件事件发生新建状态和终止状态在许多系统中又增加了两种状态:新建状态:进程刚刚建立,但还未进入就绪队列。又称创建状态。终止状态:当一个进程正常或异常结束,操作系统已释放它所占用的资源,但尚未将它撤消时的状态,又称退出状态。五状态的进程状态转换图运行就绪等待进程调度时间片用完等待事件事件发生新建终止接纳完成状态转换的有关说明大多数状态不可逆转,如等待不能转换为运行。状态转换大多为被动进行,但运行→等待是主动的。一个进程在一个时刻只能处于上述状态之一。3.1.3进程控制块

ProcessControlBlock(PCB)每个进程在操作系统内用进程控制块表示。Eachprocessisrepresengtedinoperatingsystembyaprocesscontrolblock.

PCB包含:PCBincludingthese:进程状态Processstate程序计数器ProgramcounterCPU寄存器CPUregisters进程控制块2

ProcessControlBlock(PCB)CPU调度信息CPUschedulinginformation内存管理信息Memory-managementinformation计账信息AccountinginformationI/O状态信息I/Ostatusinformation进程控制块(PCB)进程间CPU的切换

CPUSwitchFromProcesstoProcess进程控制块PCB是描述和管理进程的数据结构。它是进程实体的一部分,操作系统通过PCB感知进程的存在,PCB是进程存在的唯一标志。进程的挂起状态

在某些系统中,希望人为将进程挂起使之处于静止状态。进程挂起的原因有:系统故障或功能受到破坏:先挂起,故障消除后再恢复。检查中间结果:挂起进程以便检查。资源不足:挂起进程以腾出资源。内存不足:在外存挂起。有挂起状态的进程状态转换图基于上述原因,需引入一个新的状态:挂起状态。执行进程调度时间片完活动就绪等待事件挂起事件发生挂起激活活动阻塞挂起就绪挂起阻塞挂起激活事件发生创建退出接纳接纳完成因果变迁?3.2进程调度-3.2.1

调度队列

ProcessScheduling-SchedulingQueues作业队列:系统中所有进程的集合Jobqueue:setofallprocessesinthesystem.就绪队列:内存中就绪并等待执行的所有进程的集合。该队列通常用链表实现。

Readyqueue:setofallprocessesresidinginmainmemory,readyandwaitingtoexecute.Thisqueueisgenerallystoredasalinkedlist.调度队列2

SchedulingQueues设备队列:等待某一I/O设备的进程队列Devicequeues:setofprocesseswaitingforanI/Odevice.就绪队列和各种I/O设备队列

ReadyQueueAndVariousI/ODeviceQueues表示进程调度的队列图

Queueing-diagramrepresentationofProcessScheduling3.2.2调度程序Schedulers

长程调度(或作业调度):选择可以进入就绪队列的进程Long-termscheduler(orjobscheduler):selectswhichprocessesshouldbebroughtintothereadyqueue.短程调度(或CPU调度):选择可下一个执行并分配CPU的进程Short-termscheduler(orCPUscheduler):selectswhichprocessshouldbeexecutednextandallocatesCPU.

两者的主要差别是执行频率。Theprimarydistinctionbetweenthesetwoschedulersliesinfrequencyofexecution.

调度程序续Schedulers

长程调度控制了多道程序度Thelong-termschedulercontrolsthedegreeofmultiprogramming.进程可以分为:Processescanbedescribedaseither:I/O型进程:花费I/O时间多于计算,I/O-boundprocess:spendsmoretimedoingI/Othancomputations.CPU型进程:花费更多时间用于计算CPU-boundprocess:spendsmoretimedoingcomputations.

中程调度

MediumTermScheduling有的系统还引入了中程调度。3.2.3上下文切换ContextSwitch将CPU切换到另一个进程需要保存当前进程的状态并恢复另一个进程的状态,这一任务称为上下文切换。switchingtheCPUtoanotherprocessrequiresperformingastatesaveofthecurrentprocessandastaterestoreofadifferentprocess.Thistaskisknownasacontextswitch.上下文切换的时间开销较重;在切换时,系统没有做有用的工作。时间取决于硬件的支持Context-switchtimeisoverhead;thesystemdoesnousefulworkwhileswitching.

Timedependentonhardwaresupport.

3.3进程操作

OperatingonProcesses进程控制的职能是对系统中的所有进程实施有效的管理。常见的进程控制功能有进程创建、撤消、阻塞与唤醒等。这些功能一般由操作系统内核原语来实现。操作系统内核在操作系统设计中,往往把一些与硬件紧密相关的模块、运行频率较高的模块及公用的一些基本操作安排在靠近硬件的软件层次中,使它们常驻内存,以提高操作系统的运行效率,通常把这部分软件称为操作系统内核。内核主要包括:中断时钟管理进程管理存储器管理设备管理原语原语是由若干条机器指令构成的,用以完成特定功能的一段程序,这段程序在执行期间不可分割。3.3.1进程创建

ProcessCreation通过创建进程系统调用可以创建多个新进程,创建进程称为父进程,被创建进程称为子进程。Aprocessmaycreateseveralnewprocessesviaacreate-processsystemcall,Thecreatingprocessiscalledaparentprocesses,andthenewprocessesarecalledchildren.每个新进程可以再创建新进程,从而形成了进程树。Eachofthesenewprocessesmayinturncreateotherprocess,formingatreeofprocesses.进程树又称进程图或进程家族树

进程创建2

ProcessCreation资源共享(方式)Resourcesharing父进程子进程共享所有的资源。Parentandchildrenshareallresources.子进程共享父进程资源的子集。Childrensharesubsetofparent’sresources.父进程和子进程无资源共享。Parentandchildsharenoresources.

进程创建3

ProcessCreation执行(方式)Execution父进程和子进程并发执行。Parentandchildrenexecuteconcurrently.

父进程等待,直到子进程终止。Parentwaitsuntilchildrenterminate.

地址空间Addressspace子进程是父进程的复制品。The

childprocessisaduplicateoftheparentprocess子进程装入一个新程序。Thechildprocesshasanewprogramloadedintoit.典型UNIX系统中的进程树

ProcessesTreeonaUNIXSystem进程创建ProcessCreation导致进程创建的原因用户登录:用户登录后,若合法则为用户创建一个进程。作业调度:为调度到的作业分配资源并创建进程。OS服务:创建服务进程。应用需要:应用程序根据需要创建子进程。创建原语的主要功能进程创建原语的功能是创建一个新进程,其主要操作过程如下:向系统申请一个空闲PCB。为新进程分配资源。如分配内存空间。初始化新进程的PCB。在其PCB中填入进程名、家族信息、程序和数据地址、进程优先级、资源清单及进程状态等。将新进程的PCB插入就绪队列。3.3.2

进程终止

ProcessTermination当进程执行完最后一条语句并使用系统调用exit()请求操作系统删除自身时,进程终止。Aprocessterminateswhenitfinishesexecutingitsfinalstatementandaskstheoperatingsystemtodeleteitbyusingtheexit()systemcall.这时进程将状态值返回给父进程,所有进程资源由操作系统回收。Atthatpoint,theprocessmayreturnastatusvaluetoitsparentprocess.Alltheresourcesofprocessaredeallocatedbytheoperatingsystem.进程终止2

ProcessTermination父进程终止子进程的原因有:Aparentmayterminatetheexecutionofoneofitschildrenforavarietyofreason,suchas:子进程超量使用分配的资源Childhasexceededallocatedresources.赋予子进程的任务不再需要Taskassignedtochildisnolongerrequired.

父进程退出Parentisexiting.进程终止3

ProcessTermination有些系统中,若父进程终止,不允许子进程继续。Somesystem,Operatingsystemdoesnotallowchildtocontinueifitsparentterminates.这种现象,称为级联终止。Thisphenomenon,referredtoascascadingtermination.进程终止也称为进程撤消。引起进程撤销的原因正常结束异常结束:超时、内存不足、地址越界、算术错、I/O故障、非法指令等。外界干预:包括操作员或系统干预,父进程请求。撤消原语采用的两种策略撤消原语采用的两种策略:撤消指定标识符的进程撤消指定进程及其所有子孙进程下面给出后一种撤消策略的功能描述。

撤消原语的主要功能撤消原语的功能是撤消一个进程,其主要操作过程如下:从系统的PCB表中找到被撤消进程的PCB。检查被撤消进程的状态是否为执行状态,若是则立即停止该进程的执行,设置重新调度标志。检查被撤消进程是否有子孙进程,若有子孙进程还应撤消该进程的子孙进程。回收该进程占有的全部资源并回收其PCB。进程阻塞与唤醒引起进程阻塞及唤醒的事件:请求系统服务。如请求分配打印机,但无空闲打印机则进程阻塞;当打印机重又空闲时应唤醒进程。启动某种操作并等待操作完成。如启动I/O操作,进程阻塞;I/O完成则唤醒进程。等待合作进程的协同配合。如计算进程尚未将数据送到缓冲区,则打印进程阻塞;当缓冲区中有数据时应唤醒进程。系统进程无新工作可做。如没有信息可供发送,则发送请求阻塞;当收到新的发送请求时,应将阻塞进程唤醒。

阻塞原语的主要功能阻塞原语的主要功能是将进程由执行状态转为阻塞状态。其主要操作过程如下:停止当前进程的执行;保存该进程的CPU现场信息;将进程状态改为阻塞,并插入到相应事件的等待队列中;转进程调度程序,从就绪队列中选择一个新的进程投入运行。唤醒原语的主要功能当进程等待的事件发生时,由发现者进程将其唤醒。唤醒原语的主要功能是将进程唤醒,其主要操作过程如下:将被唤醒进程从相应的等待队列中移出;将进程状态改为就绪,并将该进程插入就绪队列;转进程调度或返回。阻塞与唤醒的关系一个进程由执行状态转变为阻塞状态,是这个进程自己调用阻塞原语去完成的。进程由阻塞状态转变为就绪状态,是另一个发现者进程调用唤醒原语实现的。一般发现者进程与被唤醒进程是合作的并发进程。进程的挂起与激活挂起原语和激活原语都有多种实现方式如:把发出挂起原语的进程自身挂起挂起具有指定标识符的进程把某进程及其子孙进程挂起激活一个具有指定标识名的进程激活某进程及其子孙进程下面以挂起或激活具有指定标识符的进程为例,说明这两种原语的主要功能。

挂起原语的主要功能

挂起原语的主要功能是将指定进程挂起,算法思想如下:到PCB表中查找该进程的PCB;检查该进程的状态,若为执行则停止执行并保护CPU现场信息,将该进程状态改为挂起就绪;若为活动阻塞,则将该进程状态改为挂起阻塞;若为活动就绪,则将该进程状态改为挂起就绪;若进程挂起前为执行状态,则转进程调度,从就绪队列中选择一个进程投入运行。激活原语的主要功能

激活原语的主要功能是将指定进程激活。其算法思想如下:到PCB表中查找该进程的PCB。检查该进程的状态。若状态为挂起阻塞,则将该进程状态改为活动阻塞。若状态为挂起就绪,则将该进程状态改为活动就绪。若进程激活后为活动就绪状态,可能需要转进程调度。进程的组织系统中有许多进程,为了能对它们进行有效的管理,应将PCB组织起来。常用的组织方式有:线性方式链表方式索引方式线性方式线性方式:将PCB顺序存放在一片连续内存中。PCB1PCB2PCB3PCBnPCBn-1PCBn-2…链接方式链接方式:将同一状态的PCB组成一个链表。运行指针

就绪队列指针阻塞队列指针PCBPCBPCBPCB^PCB^PCBPCB^索引方式索引方式:将同一状态的进程归入一个索引表,再由索引指向相应的PCB运行指针

就绪表指针阻塞表指针PCB表就绪索引表阻塞索引表PCB1PCB2PCB3PCB4PCB5PCB6PCB7PCB8PCB9………3.4进程间通信

InterprocessCommunication独立进程不能影响其他进程或被其他进程执行所影响。

Independentprocesscannotaffectorbeaffectedbytheexecutionofanotherprocess.协作进程可能影响另一个进程的执行或被另一个进程执行影响

Cooperatingprocesscanaffectorbeaffectedbytheexecutionofanotherprocess进程间通信2

InterprocessCommunication进程协作的优点Advantagesofprocesscooperation信息共享Informationsharing加速运算Computationspeed-up模块化Modularity方便Convenience协作进程需要一种进程间通信的机制来允许进程间交换数据与信息。Cooperationprocessesrequiresaninterprocesscommunicationmechanismthatallowthemtoexchangedataandinformation.通信模型CommunicationsModelsMessagepassingSharedmemory进程通信进程通信是指进程之间的信息交换。进程互斥与同步交换的信息量较少且效率较低,因此称这两种进程通信方式为低级进程通信方式,相应地也将P、V原语称为两条低级进程通信原语。高级进程通信方式是指进程之间以较高的效率传送大量数据。进程通信的类型高级进程通信方式可分为三大类:共享存储器系统消息传递系统管道通信系统或共享文件系统共享存储器系统相互通信的进程共享某些数据结构或共享存储区。基于共享数据结构的通信方式:诸进程通过公用某些数据结构交换信息。如生产者-消费者问题。基于共享存储区的通信方式:在存储器中划出一块共享存储区,诸进程可通过对共享存储区进行读或写来实现通信。包括建立共享存储区、附接及断接。消息传递系统在消息传递系统中,进程间的数据交换以消息为单位,程序员直接利用系统提供的一组通信命令(原语)来实现通信。消息传递系统因其实现方式不同可分为:直接通信方式:发送进程将消息发送到接收进程,并将其挂在接收进程的消息队列上;接收进程从消息队列上取消息。间接通信方式:发送进程将消息发送到信箱,接收进程从信箱中取消息。管道(共享文件)通信管道(共享文件)通过连接读进程和写进程的共享文件来实现读写进程之间通信。3.4.1共享内存系统

Shared-MemorySystems协作进程的通用范例—生产者消费者问题CommonParadigmforcooperatingprocesses--Producer-ConsumerProblem生产者进程生产信息供消费者进程消费。可以使用两种缓冲区:Aproducerprocessproducesinformationthatisconsumedbyaconsumerprocess.Twotypesofbufferscanbeused:无界缓冲unbounded-buffer有界缓冲bounded-buffer有界缓冲区-共享内存解决方案

Bounded-Buffer–Shared-MemorySolution下述变量由生产者-消费者共享:Thefollowingvariablessharedbytheproducerandcomsumerprocesses:#defineBUFFER_SIZE10Typedefstruct{ ...}item;itembuffer[BUFFER_SIZE];intin=0;intout=0;有界缓冲区-生产者进程

Bounded-Buffer–ProducerProcess

Producer:itemnextProduced;while(true){

/*produceaniteminnextProduced*/; while(((in+1)%BUFFER_SIZE)==out) ;/*donothing*/ buffer[in]=nextProduced; in=(in+1)%BUFFER_SIZE; }

有界缓冲区-消费者进程

Bounded-Buffer–ConsumerProcess

Consumer:

itemnextConsumed;

while(true){while(in==out) ;/*donothing*/ nextConsumed=buffer[out]; out=(out+1)%BUFFER_SIZE;/*consumetheiteminnextConsumed*/; } InChap6wediscusshowsynchronizationamongcooperatingprocesses.3.4.2消息传递系统

Message-PassingSystem消息传递提供一种机制允许进程不必通过共享地址空间来实现进程通信和同步。Messagepassingprovidesamechanismtoallowprocessestocommunicateandtosynchronizetheiractionswithoutsharingthesameaddressspace.消息传递工具提供至少两种操作Amessagepassingfacilityprovidesatleasttwooperations:send(message)receive(message)消息传递系统2

Message-PassingSystem若P与Q要通信,需要:

IfPandQwishtocommunicate,theyneedto:建立通信连接establishacommunicationlinkbetweenthem通过send/receive交换消息exchangemessagesviasend/receive消息传递系统3

Message-PassingSystem实现链接和发送/接收操作的几种方法:

severalmethodforimplementingalinkandthesend/receiveoperation:直接或间接的通信Directorindirectcommunication同步或异步通信Synchronousorasynchronouscommunication

自动或显式的缓冲Automaticorexplicitbuffering1.命名

Naming直接通信需要通信的进程明确地命名通信的接收者及发送者。Underdirectcommunication,eachprocessthatwantstocommunicatemustexplicitlynametherecipientorsenderofthecommunication.

send(P,message):向进程P发消息

sendamessagetoprocessP

receive(Q,message):接收来自进程Q的消息receiveamessagefromprocessQ

消息缓冲通信及其数据结构消息缓冲通信是直接通信方式的一种实现。所谓消息是指一组信息,消息缓冲区的数据结构如下:structmessage{sender;发送者进程标识符

size;消息长度

text;消息正文

next;指向下一个消息缓冲区的指针}在PCB中还应增加structPCB{┇mq;消息队列队首指针

mutex;消息队列互斥信号量

sm;消息队列资源信号量┇}

消息缓冲通信的实现思想为了实现消息通信,发送进程应先在自己的工作区中设置一个发送区,把欲发送的消息填入其中,然后再用发送原语将其发送出去。接收进程调用接收原语从自己的消息缓冲队列中摘下第一个消息,并将其内容复制到自己的消息接收区内。send(B,a);

┇sender:Asize:6text:Hello!两个进程进行通信的过程进程APCB(B)进程Breceive(b)

┇sender:Asize:6text:Hello!┇

mqmutexsmsender:Asize:6text:Hello!next:0ab第一个消息缓冲区发送原语描述voidsend(receiver,a)receiver为接收者标识号,a为发送区首址{

向系统申请一个消息缓冲区i;

将发送区a中的消息复制到i中;获得接收进程的内部标识j;P(mutex);

把消息插入j的消息队列上;

V(mutex);V(sm);}接收原语描述voidreceive(b)b为接收区首址{

获得接收进程内部标识j;P(sm);P(mutex);

将消息队列中的第一个消息移出;

V(mutex);

将消息复制到接收区b;}间接通信

IndirectCommunication在间接通信中,通过邮箱或端口发送或接收消息。

Withindirectcommunication,themessagesaresendtoandreceivedfrommailboxesorports.原语send()和receive()定义如下:Thesend()andreceive()primitivesaredefinedasfollows:send(A,message):sendamessagetomailboxAreceive(A,message):receiveamessagefrommailboxA间接通信2IndirectCommunication操作系统必须提供机制:Operatingsystemmustprovideamechanism创建新的信箱createanewmailbox通过信箱发送和接收消息sendandreceivemessagesthroughmailbox删除信箱deleteamailbox信箱通信信箱通信方式中,进程之间通信需要通过共享数据结构实体--信箱来进行。信箱是一种数据结构,其中存放信件。信箱逻辑上分成信箱头和信箱体两部分。信箱头中存放有关信箱的描述。信箱体由若干格子组成,每格存放一个信件,格子的数目和大小在创建信箱时确定。

信箱通信原语信箱通信原语包括:信箱的创建和撤消:消息的发送和接收:Send(mailbox,message);Receive(mailbox,message);2.同步Synchronization消息传递可以是阻塞或非阻塞。也称为同步或异步Messagepassingmaybeeitherblockingornon-blocking—allknownassynchronousandasynchronous阻塞发送Blockingsend非阻塞发送Nonblockingsend阻塞接收Blockingreceive非阻塞接收Nonblockingreceive同步2Synchronization进程间的消息通信存在同步关系对于发送进程来说,它在执行发送原语后有两种可能选择:发送进程阻塞,直到这个消息被接收进程接收到,这种发送称为阻塞发送。发送进程不阻塞,继续执行,这种发送称为非阻塞发送。同步3Synchronization对于一个接收进程来说,在执行接收原语后也有两种可能选择:如果一个消息在接收原语执行之前已经发送,则该消息被接收进程接收,接收进程继续执行。如果没有正在等待的消息,则该进程阻塞直到有消息到达;或者该进程继续执行,放弃接收的努力。前者称为阻塞接收,后者称为非阻塞接收。同步4Synchronization根据发送进程和接收进程采取方式的不同,通常有三种常用的组合方式:非阻塞发送、阻塞接收。非阻塞发送、非阻塞接收。阻塞发送,阻塞接收。3.缓冲Buffering通信进程交换的消息都驻留在临时队列中,队列实现有三种方式messagesexchangedbycommunicatingprocessesresideinatemporaryqueue;implementedinoneofthreeways.零容量:0个消息。发送者必须等待接收者Zerocapacity:0messages.Sendermustwaitforreceiver

有限容量:有限的n个消息;如线路满则发送者必须等待。Boundedcapacity–finitelengthofnmessages.Sendermustwaitiflinkfull.无限容量:无限长度;发送者不等待Unboundedcapacity–infinitelength.Senderneverwaits.管道使用管道通信时,基本上采用文件系统的原有机制实现。包括创建、打开、关闭、读写等。管道机制应提供以下三方面的协调能力:互斥:诸进程互斥读写管道同步:管道空、满情况处理存在:确定对方是否存在管道通信示意图1初始时,其长度为4,系统将管道看成一个循环队列。按先进先出的方式读写。inoutABCD写入字符E后,管道长度为5inoutABCDE管道通信示意图2读一个字符后,管道长度为4inoutBCDE若管道容量为n且in=n时,再写入一个字符,则in移到管道的另一端。inoutDE

…X习题习题33.1UsingtheprogramshowninFigure3.30,explainwhattheoutputwillbeatLINEA.习题3.2Includingtheinitialparentprocess,howmanyprocessesarecreatedbytheprogramshowninFigure3.31?选择题1对进程的管理和控制使用_____。A.指令

B.信号量C.原语

D.信箱分配到必要的资源并获得处理机时的进程状态是_____。A.就绪状态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论