版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1共一百二十页第四章 并发(bngf)处理2共一百二十页4.1 并发活动进程(jnchng)的引人操作系统的特性是并发与共享资源的竞争程序间的合作与协同要解决(jiju)这些问题,程序已经不能描述程序在内存中运行的状态,必须引人新的概念进程。3共一百二十页4.1.1 程序的顺序(shnx)执行I1作业1C1P1作业2I2C2P2一、概念 一个程序由若干个程序段组成,而这些(zhxi)程序段的执行必须是顺序的,这种程序执行的方式称为程序的顺序执行。4共一百二十页二、程序(chngx)顺序执行的特点1.顺序性 处理机严格按照程序所规定的顺序执行,即每个操作必须在下一个操作开始之前结束。2.封闭性
2、程序一旦开始执行,其计算结果不受外界的影响。3.可再现性 程序执行的结果只与初始条件有关,与其它(qt)无关。5共一百二十页二、程序顺序执行(zhxng)的特点 程序(chngx)顺序执行的缺点: 效率太低。6共一百二十页4.1.2 程序的并发(bngf)执行例:在系统中有n个作业,每个作业都有三个处理步骤,输入数据(shj)、处理、输出,即Ii,Ci,Pi (i=1,2,3,.,n)。7共一百二十页I1I2I3I4C1C2C3P1P2C1与I2, I3、C2、P1是可以同时(tngsh)执行的。4.1 并发活动进程的引人4.1.2 程序(chngx)的并发执行I1、C1、P1的执行是顺序的8
3、共一百二十页4.1 并发活动进程的引人(yn rn)4.1.2 程序的并发执行程序并发执行(zhxng) (定义) 若干个程序段同时在系统中运行,若这些程序的执行在时间上存在重迭,则称为程序并发执行。p1p2p39共一百二十页4.1.2 程序的并发(bngf)执行程序(chngx)并发执行的描述 cobegin S1; S2; S3; .; SN; coend;co是concurrent的头两个字符。 这是Dijkstra提出的。10共一百二十页4.1.2 程序(chngx)的并发执行S0Sn+1S1S2S3SN假设(jish)有一个程序中 S1Sn语句是并发执行的,程序如下: S0; cob
4、egin S1;S2;S3;.;SN; coend; Sn+1;11共一百二十页4.1.3 并发执行(zhxng)实行誊抄一、顺序执行(zhxng)的誊抄算法1:输入:f 输出:g while (f 不为空) input ; output ; 由这个程序完成(wn chng)誊抄工作是不会出错的。12共一百二十页4.1.3 并发(bngf)执行实行誊抄二、两个程序并发执行完成誊抄f缓冲区输入程序输出程序g 设有一台输入设备,和一台输出设备,输入程序负责从输入设备读取一个(y )字符,送缓冲区中。输出程序从缓冲区中取数据,送准输出设备。13共一百二十页4.1.3 并发执行实行誊抄二、两个程序(c
5、hngx)并发执行完成誊抄算法:2 cobegin while (不为结束符) /* 输入程序段 */ input; /* 读入数据(shj) */ send; /* 数据送缓冲区 */ while(buffer不为空) /* 输出程序段 */ receive; /* 缓冲区中取数据 */ output; /* 输出 */ coend 14共一百二十页4.1.3 并发执行实行誊抄二、两个程序(chngx)并发执行完成誊抄程序并发执行时情况1、输出程序运行的速度(sd)比输入程序快时,某些输出可能会重复;2、输入程序执行的速度比输出程序快时,有些数据会丢失;15共一百二十页4.1.3 并发执行(
6、zhxng)实行誊抄 三、三个并发执行程序的誊抄f缓冲区getput缓冲区copyg两个(lin )缓冲区?三个缓冲区?16共一百二十页4.1.3 并发执行实行(shxng)誊抄 三、三个并发执行程序的誊抄假设有两个缓冲区,每个缓冲区只存放一个字符,get程序将序列f中的一个字符读到缓冲区s中,copy程序将s中的字符复制到t中,put从t中提取(tq)字符并打印。这个算法是正确的。17共一百二十页4.1.4 与时间有关(yugun)的错误假定f系列中有记录(jl)f=(R1,R2,.,Rn)g=()在誊抄完成后:f=(R1,R2,.,Rn)g=(R1,R2,.,Rn)算法中的:copy t=
7、s put put(t,g) get get(s,f)18共一百二十页4.1.4 与时间有关(yugun)的错误若程序(chngx)错写成:while(誊抄未完成) cobegin copy; put; get; coend 初始状态: f=(R1,R2,.,Rn) s=() t=() g=()首先执行了get(s,f) f=(R1,R2,.,Rn) s=R1,t=(),g=()19共一百二十页4.1.4 与时间(shjin)有关的错误copy,put,get三个程序段并发(bngf)执行,就有六种组合:1、copy;put;get 导致结果:g=(R1,R2) 2、copy;get;put
8、导致结果:g=(R1,R2) 3、put;copy;get 导致结果:g=(R1,R1) 4、put;get;copy 导致结果:g=(R1,R1) 5、get;copy;put 导致结果:g=(R1,R3) 6、get;put;copy 导致结果:g=(R1,R1) 这就是与时间有关的错误。20共一百二十页4.1.5 程序并发执行(zhxng)的特点一、失去(shq)了程序的封闭性封闭性是程序执行的结果与时间无关。 程序的执行的结果与时间有关,则失去了封闭性。例如:誊抄,程序执行的结果不仅依赖于程序的初始条件,还依赖于程序执行时的相对速度21共一百二十页4.1.5 程序并发执行(zhxng)
9、的特点二、程序与计算不再一一对应 在程序顺序执行时,一个程序总是对应一个具体的计算,但在程序的并发(bngf)执行时,可能有多用户共享同一个程序,但处理(计算)的对象却是不同的。22共一百二十页4.1.5 程序并发(bngf)执行的特点三、程序并发执行的相互制约程序并发执行时对系统资源的竞争程序间有合作 合作与竞争产生一系列的矛盾,存在矛盾就会产生相互制约的关系。 回头来,我们再看看(kn kn)操作系统的第三个特性: 不确定性*23共一百二十页4.2 进程(jnchng)概念(process) 4.2.1 进程(jnchng)的定义在多道程序(chngx)设计的环境下,为了描述程序(chng
10、x)在计算机系统内的执行情况,必须引人新的概念进程。进程的概念源于麻省理工学院的MULTICSIBM的 TSS/360,OS/360/370(task)。24共一百二十页4.2.1 进程(jnchng)的定义进程的定义(枚举法)行为的一个规则叫做程序,程序在处理机上执行时所发生的活动(hu dng)称为进程(Dijkstra)。进程是这样的计算部分,它是可以和其它计算并行的一个计算。(Donovan)进程(有时称为任务)是一个程序与其数据一道通过处理机的执行所发生的活动。 (Alan.C. Shaw)25共一百二十页4.2.1 进程(jnchng)的定义进程的定义(枚举法)进程是执行中的程序。
11、(UNIX Ken Thompson and Dennis Ritchie )教材上给出的进程的定义: 进程,即是一个(y )具有一定独立功能的程序关于某个数据集合的一次活动。26共一百二十页4.2.1 进程的定义 进程与程序(chngx)的区别与联系1、程序静态的。 进程是动态的念。2、进程是一个独立的运行单位,而程序则不是(b shi)。3、进程是竞争计算机系统有限资源的基本单位,也是进行处理机调度的基本单位。4、一个程序可以作为多个进程的运行程序,一个进程也可以运行多个程序。27共一百二十页4.2.1 进程的定义 进程与程序(chngx)的区别与联系:例子:光盘(CD、VCD)光盘(程序
12、(chngx)) 放光盘的活动(进程)28共一百二十页4.2.2 进程(jnchng)的类型1、系统(xtng)进程 系统进程起着资源管理和控制的作用。 或者:执行操作系统核心代码的进程。2、用户进程 执行用户程序的进程。29共一百二十页4.2.2 进程(jnchng)的类型系统进程(jnchng)与用户进程(jnchng)的区别:1、系统进程被分配一个初始的资源集合,这些资源可以为它独占,也能以最高优先权的资格使用;2、用户进程不能做直接I/O操作,而系统进程可以做显示的、直接的I/O操作。3、系统进程在核态下活动,而用户进程则在用户态下活动。30共一百二十页4.2.3 进程(jnchng)
13、的状态一、进程(jnchng)的基本状态进程在系统中的活动规律执行暂停完成31共一百二十页4.2.3 进程(jnchng)的状态进程的三种基本状态: 运行状态 就绪(jix)状态 等待状态(又称阻塞、挂起、睡眠)32共一百二十页4.2.3 进程的状态(zhungti)一、进程的基本状态1、就绪状态(Ready) 进程(jnchng)已经准备就绪,一旦得到CPU,就立即可以运行。此时进程(jnchng)所取的状态为就绪状态。(有多个进程(jnchng)处于此状态)33共一百二十页4.2.3 进程(jnchng)的状态 一、进程的基本状态2、运行状态(zhungti)(Running) 进程得到C
14、PU控制权,其程序正在运行,进程所处的状态为运行状态。系统中处于运行状态的进程数?34共一百二十页4.2.3 进程的状态(zhungti) 一、进程的基本状态等待状态(Wait) 若一个进程正在(zhngzi)等待某个事件的发生(如等待I/O的完成),而暂停执行,这时,即使给它CPU时间,它也无法执行,则称该进程处于等待状态。35共一百二十页运行就绪等待等待某事件的发生时间片到事件已发生进程调度4.2.3 进程(jnchng)的状态二、进程(jnchng)状态变迁图36共一百二十页4.2.4 进程(jnchng)描述进程组成: 进程控制块(数据结构) 进程的执行程序(一个可执行文件) 进程总是
15、位于某个队列(就绪、等待队列) 处于某种状态(运行、就绪、等待) 占用(zhn yn)某些系统资源37共一百二十页大模式(msh)可执行程序代码数据栈程序(chngx)地址空间共享正文区user用户栈区数据user核心栈用户数据区进程非运行状态时U区运行状态时注:放映显示进程图象4.2.4 进程描述38共一百二十页大模式(msh)可执行程序代码数据栈程序(chngx)地址空间共享正文区user用户栈区数据user核心栈用户数据区进程非运行状态时U区运行状态时注:放映显示进程图象4.2.4 进程描述进程组成进程映像(image)进程上下文(context)39共一百二十页4.2.4 进程(jnc
16、hng)描述进程(jnchng)控制块PCB (Process Control Block)进程控制块是存放进程的管理和控制信息的数据结。40共一百二十页4.2.4 进程(jnchng)描述PCB就象我们(w men)的户口PCB是进程管理和控制的最重要的数据结构,进程创建时,建立PCB,并伴随进程运行的全过程,直到进程撤消而消亡。41共一百二十页4.2.4 进程(jnchng)描述PCB结构包含信息:进程标识符(name)进程当前状态(status)当前队列(duli)指针(next)总链队列指针(all_q_next)执行程序首址(start_addr)现场保护区(CPU status)进
17、程通信(communication)家族联系(process family)42共一百二十页4.2.4 进程(jnchng)描述1、进程标识符 name 进程在系统中的唯一标识符。UNIX系统的进程标识符是一个整型数。在进程创建时由系统赋予。2、进程当前状态 status 说明进程当前所处的状态,就绪、运行(ynxng)、等待状态。 43共一百二十页4.2.4 进程(jnchng)描述进程控制块 PCB3、当前队列指针 next登记与本进程处于同一队列的下一个(y )进程的PCB的地址。44共一百二十页4.2.4 进程(jnchng)描述进程控制块 PCB4、总链指针(zhzhn) all-q
18、-next5、执行程序开始地址 start-addr6、进程优先级 priority 进程的优先级反映进程的紧迫程序,通常由用户指定和系统设置。45共一百二十页4.2.4 进程(jnchng)描述进程控制块 PCB7、CPU现场保护区 cpustatus 当进程因某种原因释放CPU时就要将CPU的各种状态信息保护起来。例如,我们下课,这时我要记住这次讲到什么地方,下次课接着讲。8、通信信息 communication information 是指某个(mu )进程在运行的过程中要与其它进程进行通信,该区记录有关进程通信方面的信息。46共一百二十页4.2.4 进程描述(mio sh)进程控制块
19、PCB9、家族联系 process family 有的系统允许一个进程可创建自已的子进程,子进程还可以创建,一个进程往往处在一个家族之中,就需要记录进程在家族中位置的信息。10、占有(zhnyu)资源清单 own-resource 进程占用系统资源的情况,不同的系统的处理差别很大,UNIX系统中就没有此项。47共一百二十页4.3 进程(jnchng)控制4.3.1 进程(jnchng)控制的概念运行就绪等待时间片到进程调度进程(jnchng)唤醒进程创建进程阻塞进程撤消48共一百二十页4.3.1 进程控制(kngzh)的概念进程是有生命周期的,具有三种基本状态,控制进程状态转换的操作称为进程控
20、制。包括:进程创建(chungjin)、撤消、挂起和唤醒。在具体的操作系统中还会增加些进程控制。49共一百二十页进程(jnchng)控制属于处理机管理的一部分,另一部分是进程调度,当系统允许多进程并发执行时,为了实现共享、协同,必须提供对进程实行有效的管理。4.3.1 进程(jnchng)控制的概念50共一百二十页4.3.1 进程(jnchng)控制的概念这些操作都要对应地执行一个程序段(操作系统核心程序),同时通过系统调用为用户(yngh)提供进程控制的服务。教材上叫原语。进程控制:进程创建 进程撤消进程阻塞 进程唤醒51共一百二十页4.3.1 进程(jnchng)控制的概念UNIX系统进程
21、控制(主要): fork() 创建子进程 sleep() 进程睡眠(shumin) exit() (子)进程自已终止(自杀) wait() (父)等待子进程终止 wakeup() 进程唤醒52共一百二十页4.3.2 进程(jnchng)创建进程(jnchng)创建系统调用: create(name,priority,start-addr)UNIX系统: fork()53共一百二十页4.3.2 进程(jnchng)创建54共一百二十页nextPCB3nextPCB11nextPCB2 PCBnReady-q-startnextPCB67nextPCB22nextPCB34 PCBmall-q-s
22、tartnextPCBk进程创建(chungjin)后相应数据结构变化55共一百二十页4.3.3 进程(jnchng)撤消进程完成(wn chng)其任务,希望终止时,调用撤消进程的系统调用撤消进程。相当于一个人死亡后,家人要去派出所消户口。一般情况:killUNIX系统:exit() 56共一百二十页4.3.3 进程(jnchng)撤消算法:kill()输入:无输出:无 取得当前(dngqin)进程标识符;释放本进程占用的资源;从总链队列中摘下本进程的,并释放;调用进程调度程序;57共一百二十页4.3.3 进程(jnchng)撤消all-q-startall-q-nextall-q-next
23、all-q-next PCB1PCB2PCB3PCB158共一百二十页all-q-startall-q-nextall-q-nextall-q-next PCB1PCB2PCB3PCB14.3.3 进程(jnchng)撤消59共一百二十页4.3.4 进程(jnchng)挂起当因等待某个事件的发生而不能继续运行时,将调用进程(jnchng)挂起操作,进程(jnchng)状态置为阻塞状态,并调用进程(jnchng)调度程序(等于让出处理机)。在UNIX系统中进程挂起调用sleep(chan, pri)。60共一百二十页4.3.4 进程(jnchng)挂起调用进程挂起操作是在进程处于运行状态下执行(
24、zhxng)的。它的执行(zhxng)将引起等待某事件的队列的改变。例如,进程是因等待打印机而进入阻塞状态,则该进程将加入到等待打印机的队列。61共一百二十页4.3.4 进程(jnchng)挂起UNIX系统: sleep(chan,pri); chan 进程挂起(睡眠)的原因; pri 进程被唤醒后的优先数 一般(ybn)调用形式: susp(chan) chan 进程等待的原因62共一百二十页4.3.4 进程(jnchng)挂起算法 susp(chan) 输入:chan 等待的原因(yunyn) 输出:无 进程现场信息PCB; 进程状态置为“阻塞”; 插入到等待 “chan”等待队列; 调用
25、进程调度程序; 63共一百二十页4.3.4 进程(jnchng)挂起nextPCB3nextPCB11nextPCB2 PCBnwait-lpt-q-startnextPCBj next 64共一百二十页4.3.5 进程(jnchng)唤醒当某事件发生后,系统将唤醒等待该事件发生的进程,由进程唤醒操作完成。例如(lr),打印机完成中断处理程序,在完成了打印完成的操作后,就去检查等待打印机的队列,若不为空,则调用进程唤醒操作,唤醒一个(或多个)等待打印机的进程。 65共一百二十页4.3.5 进程(jnchng)唤醒进程(jnchng)唤醒原语的形式: wakeup(chan); chan 唤醒进
26、程阻塞的原因。66共一百二十页4.3.5 进程(jnchng)唤醒算法:wakeup输入:chan:等待的事件(阻塞原因) 输出:无 找到chan的等待队列的指针; for(该队列不为(b wi)空) 从队列中移出一个进程; 置进程状态为“就绪”,并加入到就绪队列; 67共一百二十页4.3.5 进程(jnchng)唤醒把等待在chan事件上的所有进程唤醒,类似于UNIX系统的处理方式。只唤醒一个等待chan事件的进程,等待队列就要按某种策略(cl)排队。进程唤醒操作会引起就绪队列和等待chan事件的等待队列发生变化。68共一百二十页4.4进程(jnchng)的相互制约关系产生相互(xingh)
27、制约关系的原因有二: 资源共享 进程合作69共一百二十页4.5 进程(jnchng)互斥4.5.1 互斥的概念1. 临界资源:一次仅允许一个进程使用的资源称为临界资源。 引例中的电话和打印机都属于临界资源。除此之外,还有内存变量、指针(zhzhn)、数组等等也是临界资源。70共一百二十页4.5.1 互斥的概念(ginin)2、临界区:每个进程(jnchng)中访问临界资源的段程序段称为临界区(临界段)。ab进程AC d进程Bef进程CQ71共一百二十页4.5.1 互斥的概念(ginin)进入临界区的准则:(1) 每次至多有一个进程处于临界区;(2)当有若干个进程欲进入临界区时,应在有限的时间(
28、shjin)内使其进入;(3)进程在临界区内仅逗留有限的时间。72共一百二十页4.5.1 互斥的概念(ginin)互斥定义当某一进程正在访问某临界区时,就不允许其它进程进入,否则就会发生无法估计的错误。进程之间的这种相互制约的关系(gun x)称为互斥。例如:飞机定票系统中的机票库73共一百二十页4.5.2 锁和上锁(shn su)、开锁操作锁操作(cozu):1.考察锁位的值;2.若原来的值是为“0”,将锁位置为“1”(占用该资源);3.若原来值是为“1”,(该资源已被占用),则转到1。开锁操作:将锁位置为“0”,称为开锁操作。每个临界资源设一个锁位: 0:资源可用 1:资源占用74共一百二
29、十页4.5.2 锁和上锁(shn su)、开锁操作算法:lock输入(shr):w (锁变量)输出:无 test:if(w=1)/* 测锁位值 */ goto test; else w=1;/* 上锁链*/ 算法:unlock输入:w (锁变量)输出:无 w=0;/* 开锁 */ 75共一百二十页4.5.2 锁和上锁、开锁操作改进(gijn)的算法算法:lock(w)输入:W(锁变量(binling))输出:无 if(w = 1) sleep(pri,w); W = 1; /* 上锁 */ 算法:unlock(w)输入:W(锁变量)输出:无 if(等待W队列不空) wakeup(w); W =
30、 0; /* 开锁 */ 76共一百二十页4.5.3 用上锁(shn su)原语和开锁原语实现互斥假设(jish)有两个进程共享打印机,两个进程中使用打印机的程序段为临界区。为保证打印的正确,设置打印机的锁位print,其初值为“0”,表示打印机可。77共一百二十页4.5.3 用上锁(shn su)原语和开锁原语实现互斥main() int print = 0; cobeginm ppa(); ppb(); coend ppa() ; lock(print); 使用(shyng)打印机; unlock(print); ; ppb() ; lock(print); 使用打印机; unlock(p
31、rint); ; 78共一百二十页4.6 信号灯和P、V操作(cozu)4.6.1 信号灯的概念信号灯的概念(ginin)是由Dijkstra提出的(1968)。79共一百二十页4.6.1 信号灯的概念(ginin)信号灯的定义:信号灯是一个确定的二元组(s,q),s 是一个具有非负初值的整型变量,q 是一个初始状态为空的排队站。 S代表资源的实体。在实际应用(yngyng)中应准确地说明s的意义和初值,每个信号灯都有一个等待队列,其初始状态为空。80共一百二十页4.6.2 P、V操作(cozu)信号灯的值仅能由P、V操作(cozu)来改变,对信号灯的P操作记为:P(S)对信号灯的V操作记为:
32、V(S) P(S)和V(S)是操作系统程序。81共一百二十页4.6.2 P、V操作(cozu)P操作(cozu):(1)s值减1;(2)若相减结果大于等于0,则进程继续执行;(3)若结果小于0,则该进程挂起。算法 P输入:s 输出:无p(s) s - -; if ( s0 ) 进程挂起; 原子操作82共一百二十页4.6.2 P、V操作(cozu)V操作(cozu):(1)s值加1;(2)若相加结果大于0,进程继续执行;(3)否则,唤醒一个或多个等待该信号灯的进程,然后本进程继续执行。算法 v输入:s 输出:无v(s) s + +; if ( s=0 ) 唤醒等待S进程; 原子操作83共一百二十
33、页4.6.3 用信号灯实现(shxin)进程互斥用两个进程共享打印机的例子(l zi)。 设信号灯mutex表示打印机,初值为1,表示打印机可用。(mutxe也可理解为互斥的信号灯)84共一百二十页4.6.3 用信号灯实现(shxin)进程互斥main() int mutex = 1; cobeginm ppa(); ppb(); coend ppa() ; p(mutex); 使用(shyng)打印机; v(mutex); ; ppb() ; p(mutex); 使用打印机; v(mutex); ; 两个进程共用打印机mutex(1、0、-1)1:打印机空闲;0:有一个进程正在使用打印机-1
34、:有一个进程正在使用打印机,还有一个进程等待使用打印机85共一百二十页4.7 进程同步(tngb)4.7.1 同步(tngb)的例子引例(yn l) 1 :两位同学约好星期天去东湖,早上8:00在校门口,不见不散。当一个同学先来到校门口,要等另一个同学,到齐后一道打的去东湖。86共一百二十页4.7.2 同步(tngb)的概念互斥的概念来自于诸进程对独占使用资源(设备)的竞争同步源于多个进程的合作在人类社会(shhu)中竞争与合作是永恒的87共一百二十页4.7.2 同步(tngb)的概念同步: 同步就是(jish)并发进程在一些关键点上可能需要相互等待与互通消息,这样的相互制约关系称为进程同步。
35、88共一百二十页4.7.3 用信号灯实现进程(jnchng)的同步同步可归纳为:诸进程合作完成(wn chng)某工作的逻辑顺序。对系统资源的共享。89共一百二十页4.7.3 用信号灯实现进程(jnchng)的同步一. 合作进程的执行须序描述诸进程合作完成某一任务的执行顺序(shnx)图称为进程流图。S程序开始F程序结束程序执行90共一百二十页4.7.3 用信号灯实现进程(jnchng)的同步91共一百二十页4.7.3 用信号灯实现(shxin)进程的同步用信号灯及P、V操作来描述左图1、说明进程的同步(tngb)关系 进程P1、P2可并行执行,P3的执行必须等待P1、P2都完成后才能开始执行
36、。2、设置信号灯,说明含义、初值。 s13 = 0 表示进程P1尚未执行完成; s23 = 0 表示进程P2尚未执行完成;92共一百二十页4.7.3 用信号灯实现进程(jnchng)的同步P1( ) ; v(s13); P2( ) ; v(s23); P3( ) p(s13); p(s23); .;main() int s13,s23; cobegin p1;p2;p3; coend93共一百二十页4.7.3 用信号灯实现进程(jnchng)的同步二. 共享缓冲区的合作(hzu)设缓冲区buffer,大小为一个字节,CP进程不断产生字符,送buffer;IOP进程从buffer中取出字符打印。
37、不加任何控制?buffercpIOP94共一百二十页P1:设置日期P2:显示/bin/ls目录P3:打印程序结束main() int re_code,k,lk,processorname;if(k = fork() = 0) exec(“/bin/date”, “NOV.25 2004”,0); /* 设置日期(rq) */if(lk = fork() = 0) exec(“/bin/ls”,”-l”,”/bin”,0); /* 以长格式列“/bin/ls”目录 */processorname = wait(&re_code); printf(“程序结束 n”); exit(0);SFP1P2
38、P395共一百二十页4.7.3 用信号灯实现进程(jnchng)的同步要保证(bozhng)打印结果的正确,CP、IOP必须同步:当CP把结果送入buffer后,IOP才能从buffer中取,否则IOP必须等待;当IOP从buffer中取走数据后,CP才能将新产生数据送buffer,否则也必须等待。96共一百二十页4.7.3 用信号灯实现(shxin)进程的同步解决这个问题的步骤:(1)分析问题,弄清楚同步关系(gun x),如上分析;(2)设置信号灯,说明含义、初值;(3)写出程序描述。97共一百二十页4.7.3 用信号灯实现(shxin)进程的同步main() int sb=1,sa; c
39、obeging cp(); iop(); coend iop() while(打印(d yn)未完成) p(sa); 从缓冲区中取字节; v(sb); 打印; cp() while(计算未完成) 产生一个字节; p(sb); 字节送缓冲区; v(sa); sb = 1,缓冲区空闲; sa = 0,缓冲区无打印字节。?!放映显示98共一百二十页4.7.4 生产者消费者问题(wnt)仓库有n个货位生产者制造产品(chnpn),并送仓库消费者从仓库中取产品消费buffer1.ncp1cp2cpnIOP1IOP2IOPm99共一百二十页4.7.4 生产者消费者问题(wnt)生产者:产生一个数据送入bu
40、f时,要检查buf是否已满,若未满,则送入数据,否则,等待(dngdi);消费者:当去取数据时,要检查buf中是否有数据,若有则取一个数据,否则,等待。典型的进程同步。同时,buf是临界资源,因此,诸进程对buf操作是互斥的.100共一百二十页4.7.4 生产者消费者问题(wnt)Full:缓冲区产品数目(shm),初值为0;Empty:缓冲区可存放产品的空位,初值为n;Mutex:缓冲区互斥信号灯,初值为1。main() int full,empty=n; int mutex=1; cobegin producer(); consumer(); coend; 101共一百二十页4.7.4 生
41、产者消费者问题(wnt)Consumer() while(还要继续(jx)消费) p(full); p(mutex); 从缓冲区中取出一个产品; v(mutex); v(empty); 消费产品; producer() while(生产未完成) 生产一个产品; p(empty); p(mutex); 将产品放入缓冲区; v(mutex); v(full); 102共一百二十页读者和编者(binzh)问题有十个读者和两个编辑同时处理一篇文章(wnzhng),对于读操作是可以同时进行的;若有读者正在读,编辑就不能工作;若编辑正在处理,读者就不能读,编辑与编辑的工作也是互斥的,试用信号灯及P、V操作
42、描述读者与编辑之间协同工作,并给出类C程序。103共一百二十页mail() int mutey=1,couter=0; cobegin readi(); editeri(); coend readi() if(couter = = 0) p(mutex); couter +; 读文章(wnzhng); couter -; if(couter = 0) v(muter); editi() p(mutex); 处理(chl)文章; v(mutex); mutex:互斥信号灯,初值为1。一种解法,正确吗?104共一百二十页mutex:用于读者与编辑(binj)、编辑(binj)与编辑(binj)的互
43、斥信号灯,初值为1mutex1:用于对couter操作的互斥的信号灯,初值为1。读者、编辑(binj)问题正解105共一百二十页mail() int mutex1= mutex=1, couter; cobegin readi(); editeri(); coend readi() p(mutex1); couter +; if(couter = = 1) p(mutex); v(mutex1); 读文章(wnzhng); p(mutex1); couter -; if(couter = 0) v(muter); v(mutex1) editi() p(mutex); 处理(chl)文章; v
44、(mutex); 106共一百二十页读者编者问题(wnt)-单向通道管制 一个南北方向的桥梁的交通管制系统规定,在桥上不允许有相对行使的车辆,但同一个方向允许有多个车辆行使。试用信号灯及P、V操作来描述(mio sh)这个桥梁两端的交通管制,要求用一种结构化的程序设计语言写出程序描述(mio sh)。 107共一百二十页读者编者问题(wnt)-单向通道管制信号灯设置(shzh):mutex:互斥信号灯,初值为1。桥上只能单向通;scmuter:南桥头计数器互斥信号灯,初值为1;ncmuter:北桥头计数器互斥信号灯,初值为1;108共一百二十页main( ) Int muter,cmuter,
45、 ncmuter, scouter,ncouter; muter=ncmuter=scmuter=1; cobegin sb( ); nb( ); coend 109共一百二十页Sb( ) /* 桥南端(nn dun)控制程序*/ p(scmuter); scoter+; if(scouter=1) P(muter); v(scmuter); 车辆向北行过桥; p(scmuter); scoter-; if(scouter=0) v(muter); v(scmuter); nb( ) /* 桥北端控制程序*/ p(ncmuter); ncoter+; If(ncouter=1) P(muter); v(ncmuter); 车辆(chling)向南行过桥; p(nc muter); ncouter-; If(ncouter=0) v(muter); v(ncmuter); 110共一百二十页十个计算进程、2个打印进程,共享10个缓冲区,计算进程:申请一个空闲缓冲区,生产的数据存入缓冲区
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高新技术企业招聘合同模板
- 文化工程分包合同
- 住宅小区砌体抹灰施工合同
- 2024年度步行街个人租铺协议版
- 2024年度乙方出版社与甲方图书出版合同3篇
- 2024年度生物制药样品采购与临床试验合同3篇
- 2024年度大数据分析软件保密协议书3篇
- 2024年度房地产买卖合同(含在建工程及土地使用权)3篇
- 2024年度市场推广合同市场推广与品牌建设!3篇
- 2024年度跨文化劳务合作合同范本3篇
- 肺动脉CTA检查技术浅析课件
- 历史备课组活动记录
- 豆类病虫害简介课件
- 史料研读-史料分类和史料价值课件-2022届高三历史三轮复习
- 工程施工碎石卵石检验报告
- 成都沥青路面铣刨加铺专项施工方案
- 水质采样及样品保存资料
- 江苏省电力公司结算管理实施细则
- 煤矿电气试验规程
- 新人教版高中物理课本必修1复习与提高AB组解析
- 关于转发中国中铁股份有限公司管理人员政纪处分规定试行的通知
评论
0/150
提交评论