操作系统课件os02进程同步.ppt
《操作系统课件os02进程同步.ppt》由会员分享,可在线阅读,更多相关《操作系统课件os02进程同步.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统操作系统Operating SystemsWINDOWSWINDOWSUNIXUNIXLINUXLINUXOS2OS2VxWorksVxWorksMac OSMac OS2.3 进进 程程 同同 步步 进程同步的基本概念进程同步的基本概念 两种形式的制约关系两种形式的制约关系间接相互制约关系。间接相互制约关系。p间接相互制约源于资源共享间接相互制约源于资源共享直接相互制约关系。直接相互制约关系。p主要源于进程间的合作。主要源于进程间的合作。进程的同步与互斥进程的同步与互斥进程的两大关系:进程的两大关系:互斥(间接制约关系):互斥(间接制约关系):各进程竞争使用同一临界资源各进程竞争使用
2、同一临界资源p临界资源:一次只允许一个进程使用的系统资临界资源:一次只允许一个进程使用的系统资源源进程同步(直接制约关系):进程同步(直接制约关系):根据一定的根据一定的时序关系时序关系合作完成一项任务合作完成一项任务为完成共同任务的并发进程基于为完成共同任务的并发进程基于某个条件某个条件来协调其来协调其活动活动生产者生产者-消费者问题消费者问题 生产者生产者-消费者消费者(producer-consumer)问题是一个著名的问题是一个著名的进程同步问题。进程同步问题。123.nPC生产者生产者-消费者问题消费者问题producer:repeat produce an item in next
3、p;while counter=n do no-op;bufferin:=nextp;in:=(in+1)mod n;counter:=counter+1;until falseconsumer:repeat while counter=0 do no-op;nextc:=bufferout;out:=(out+1)mod n;counter:=counter-1;consumer the item in nextc;until false;生产者生产者-消费者问题消费者问题counter:=counter+1:register1:=counter;register1:=register1+1
4、;counter:=register1;counter:=counter-1:register2:=counter;register2:=register2-1;counter:=register2;生产者生产者-消费者问题消费者问题生产者进程生产者进程:/counter初始值初始值=5 register1:=counter;register1:=register1+1;counter:=register1;消费者进程消费者进程 register2:=counter;register2:=register2-1;counter:=register2;;程序的执行已经失去了再现性。程序的执行已经
5、失去了再现性。解决此问题的关键是应把变量解决此问题的关键是应把变量counter作为临界资源处理,作为临界资源处理,令生产者进程和消费者进程互斥地访问变量令生产者进程和消费者进程互斥地访问变量counter。5 5register1register15 5register2register24 46 65 5counter4 46 6临界区临界区把在每个进程中访问把在每个进程中访问临界资源临界资源的那段代码称为临界区的那段代码称为临界区若能保证诸进程互斥地进入自己的临界区,便可实现诸进若能保证诸进程互斥地进入自己的临界区,便可实现诸进程对临界资源的互斥访问。程对临界资源的互斥访问。repeat
6、entry section(进入区)(进入区)critical section;exit section(退出区)(退出区)remainder section;until false;临界区临界区同步机制应遵循的规则同步机制应遵循的规则1.空闲让进。空闲让进。2.忙则等待。忙则等待。3.有限等待。有限等待。4.让权等待。让权等待。信号量机制信号量机制1 整型信号量整型信号量定义为一个用于表示定义为一个用于表示资源数目资源数目的的整型整型量量S仅仅能能通通过过两两个个标标准准的的原原子子操操作作P操操作作(wait)和和V操操作作(signal)来访问。来访问。wait(S):while S=0
7、 do no-op;S:=S-1;signal(S):S:=S+1;S S2 记录型信号量记录型信号量记录型信号量机制是一种不存在记录型信号量机制是一种不存在“忙等忙等”现象的进程同步现象的进程同步机制。机制。增加一个进程链表指针增加一个进程链表指针L用于链接上述的所有等待进程。用于链接上述的所有等待进程。记录型信号量采用了记录型的数据结构:记录型信号量采用了记录型的数据结构:type semaphore=recordvalue:integer;L:list of process;end 信号量的值信号量的值 value 信号量队列指针信号量队列指针申请一个单位资源:申请一个单位资源:proc
8、edure wait(S)var S:semaphore;begin S.value:=S.value-1;if S.value0 then block(S.L);end 释放一个单位资源:释放一个单位资源:procedure signal(S)var S:semaphore;Begin S.value:=S.value+1;if S.value=1 and and Sn=1 thenfor i:=1 to n do Si:=Si-1;endforelse 当发现第一个当发现第一个 Si1就把该进程放入等待队列,就把该进程放入等待队列,并将其指令计数器置于并将其指令计数器置于Swait操作的开
9、始位置操作的开始位置endifSsignal(S1,S2,Sn)for i:=1 to n doSi:=Si+1;Remove all the process waiting in the queue associated with Si into the ready queue.endfor;2.3.3 信号量的应用信号量的应用利用信号量实现进程互斥利用信号量实现进程互斥 Var mutex:semaphore=1;begin parbegin process 1:begin repeat wait(mutex);critical section;signal(mutex);remainde
10、r section;until false;endprocess 2:begin repeat wait(mutex);critical section;signal(mutex);remainder section;until false;Endparend mutex10 NULL-12.3.4 2.3.4 管程机制管程机制管程引入管程引入把分散在各进程中的临界区集中起来进行管理把分散在各进程中的临界区集中起来进行管理 ;防止进程有意或无意的违法同步操作防止进程有意或无意的违法同步操作可可利利用用共共享享数数据据结结构构抽抽象象地地表表示示共共享享资资源源,把把对对共共享享数数据据结构实施
11、的操作定义为结构实施的操作定义为一组过程一组过程进进程程对对共共享享资资源源的的操操作作,都都是是通通过过这这组组过过程程对对共共享享数数据结构的操作来实现的据结构的操作来实现的确保每次仅有一个进程使用共享资源确保每次仅有一个进程使用共享资源管程的定义管程的定义一个管程定义了一个一个管程定义了一个数据结构数据结构和能为并发进程所执行和能为并发进程所执行(在在该数据结构上该数据结构上)的的一组操作一组操作,这组操作能同步进程和改变,这组操作能同步进程和改变管程中的数据。管程中的数据。管程的组成管程的组成1.1.名称;名称;2.2.局部于管程内部的共享数据结构说明;局部于管程内部的共享数据结构说明
12、;3.3.对该数据结构进行操作的一组过程;对该数据结构进行操作的一组过程;4.4.对局部于管程内部的共享数据设置初始值语句。对局部于管程内部的共享数据设置初始值语句。管程的示意图管程的示意图 condition c1condition c1wait(c1)wait(c1)condition ccondition cn n wait(c wait(cn n)局部数据局部数据 条件变量条件变量 过程过程/函数函数1 1 过程过程/函数函数k k出口出口 初始化代码初始化代码入口入口管程管程等待调用过程等待调用过程的进程队列的进程队列管程等待区管程等待区管程的条件变量管程的条件变量条件变量条件变量出
13、现在管程内的一种数据结构出现在管程内的一种数据结构 Var xVar x,y y:conditioncondition只有在管程中才能被访问只有在管程中才能被访问它对管程内的所有过程是全局的它对管程内的所有过程是全局的只能通过两个原语操作只能通过两个原语操作waitwait和和signalsignal来控制它。来控制它。x.waitx.wait正在调用管程的进程因正在调用管程的进程因x x条件需要被阻塞或挂起时调用条件需要被阻塞或挂起时调用x.waitx.wait:将自己插入到将自己插入到x x条件的等待队列上并释放管程,条件的等待队列上并释放管程,直到直到x x条件变化。条件变化。此时其它进
14、程可以使用该管程。此时其它进程可以使用该管程。x.signalx.signal正在调用管程的进程发现正在调用管程的进程发现x x条件发生了变化,则调用条件发生了变化,则调用x.signalx.signal重新启动一个因重新启动一个因x x条件而阻塞或挂起的进程。条件而阻塞或挂起的进程。这与信号量机制中的这与信号量机制中的signalsignal操作不同。操作不同。若进程若进程Q Q因因x x条件阻塞,而正在调用管程的进程条件阻塞,而正在调用管程的进程P P执行执行x.signalx.signal操作后,操作后,Q Q被重新启动,可采用下述两种方式之被重新启动,可采用下述两种方式之一进行处理:一
15、进行处理:P P等待,直至等待,直至Q Q离开管程或等待另一条件。离开管程或等待另一条件。Q Q等待,直至等待,直至P P离开管程或等待另一条件。离开管程或等待另一条件。管程主要特性管程主要特性模块化模块化基本程序单位,可以单独编译;基本程序单位,可以单独编译;抽象数据类型抽象数据类型包含数据和操作;包含数据和操作;信息隐蔽信息隐蔽从外部看不到内部信息;从外部看不到内部信息;管程和进程不同管程和进程不同管程定义的是公共数据结构;管程定义的是公共数据结构;进程定义的是私有数据结构进程定义的是私有数据结构PCBPCB管程把共享变量上的同步操作集中起来管程把共享变量上的同步操作集中起来临界区却分散在
16、每个进程中;临界区却分散在每个进程中;管程的设置则是解决共享资源的互斥使用问题管程的设置则是解决共享资源的互斥使用问题设置进程的目的在于实现系统的并发性;设置进程的目的在于实现系统的并发性;进程通过调用管程中的过程对共享数据结构实行操作进程通过调用管程中的过程对共享数据结构实行操作管程为被动工作方式,进程则为主动工作方式;管程为被动工作方式,进程则为主动工作方式;管程和进程不同(续)管程和进程不同(续)管程不能与其调用者并发管程不能与其调用者并发进程之间能并发执行;进程之间能并发执行;管程是操作系统中的一个资源管理模块,供进程调用。管程是操作系统中的一个资源管理模块,供进程调用。进程具有动态性
17、,由进程具有动态性,由“创建创建”而诞生,由而诞生,由“撤销撤销”而而消亡消亡2.4 经典进程的同步问题经典进程的同步问题 2.4.1 生产者生产者消费者问题消费者问题生产者生产者消费者问题是相互合作的进程关系的一种抽象消费者问题是相互合作的进程关系的一种抽象制约关系:制约关系:只要缓冲池未满,生产者便可将消息送入缓冲池;只要缓冲池未满,生产者便可将消息送入缓冲池;只要缓冲池未空,消费者便可从缓冲池中取走一个消息只要缓冲池未空,消费者便可从缓冲池中取走一个消息123.nPC信号量解决生产者消费者问题信号量解决生产者消费者问题用信号量及用信号量及P、V操作解决进程间同步问题操作解决进程间同步问题
18、 一个生产者、一个消费者共享一个生产者、一个消费者共享一个一个缓冲区缓冲区多个生产者、多个消费者共享多个缓冲区多个生产者、多个消费者共享多个缓冲区一个生产者、一个消费者共享一个缓一个生产者、一个消费者共享一个缓冲区的解冲区的解int B;semaphore empty;/可以使用的空缓冲区数可以使用的空缓冲区数semaphore full;/缓冲区内可以使用的产品数缓冲区内可以使用的产品数empty=1;/缓冲区内允许放入一件产品缓冲区内允许放入一件产品full=0;/缓冲区内没有产品缓冲区内没有产品一一个个缓缓冲冲区区一一 个个生生 产产者者生生 产产 一一个产品个产品取取 出出 一一个产品
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课件 os02 进程 同步
限制150内