操作系统课件os02进程同步.pptx
操作系统
OperatingSystemsWINDOWSUNIXLINUXOS2VxWorksMacOS
两种形式的制约关系01间接相互制约关系。间接相互制约源于资源共享02直接相互制约关系。主要源于进程间的合作。03进程同步的基本概念2.3进程同步
互斥(间接制约关系):各进程竞争使用同一临界资源进程的两大关系:01进程同步(直接制约关系):根据一定的时序关系合作完成一项任务为完成共同任务的并发进程基于某个条件来协调其活动临界资源:一次只允许一个进程使用的系统资源02进程的同步与互斥
生产者-消费者问题生产者-消费者(producer-consumer)问题是一个著名的进程同步问题。123…….……nPC
生产者-消费者问题producer:repeat…produceaniteminnextp;…whilecounter=ndono-op;buffer[in]:=nextp;in:=(in+1)modn;counter:=counter+1;untilfalseconsumer:repeatwhilecounter=0dono-op;nextc:=buffer[out];out:=(out+1)modn;counter:=counter-1;consumertheiteminnextc;untilfalse;
counter:=counter+1:01register1:=counter;register1:=register1+1;counter:=register1;02counter:=counter-1:03register2:=counter;register2:=register2-1;counter:=register2;04生产者-消费者问题
生产者-消费者问题生产者进程://counter初始值=5①register1:=counter;②register1:=register1+1;③counter:=register1;消费者进程④register2:=counter;⑤register2:=register2-1;⑥counter:=register2;;程序的执行已经失去了再现性。解决此问题的关键是应把变量counter作为临界资源处理,令生产者进程和消费者进程互斥地访问变量counter。5register15register2465counter46
临界区把在每个进程中访问临界资源的那段代码称为临界区若能保证诸进程互斥地进入自己的临界区,便可实现诸进程对临界资源的互斥访问。repeatentrysection(进入区)criticalsection;exitsection(退出区)remaindersection;untilfalse;
临界区
有限等待。空闲让进。01忙则等待。0203让权等待。04同步机制应遵循的规则
信号量机制1整型信号量定义为一个用于表示资源数目的整型量S仅能通过两个标准的原子操作P操作(wait)和V操作(signal)来访问。wait(S):whileS=0dono-op;S:=S-1;signal(S):S:=S+1;S
2记录型信号量记录型信号量机制是一种不存在“忙等”现象的进程同步机制。增加一个进程链表指针L用于链接上述的所有等待进程。记录型信号量采用了记录型的数据结构:typesemaphore=recordvalue:integer;L:listofprocess;end信号量的值value信号量队列指针
申请一个单位资源:procedurewait(S)varS:semaphore;beginS.value:=S.value-1;ifS.value0thenblock(S.L);end释放一个单位资源:proceduresignal(S)varS:semaphore;BeginS.value:=S.value+1;ifS.value=0thenwakeup(S.L);end
一般信号量若信号量s.value为正值则s.value所代表的实际还可以使用的物理资源数.若信号量s.value为负值:则其绝对值等于登记排列在该信号量s队列之中等待的进程个数S.value的初值为1时:表示只允许一个进程访问