第3章进程同步-wax.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内 容 进程同步 进程同步是指对多个相关进程在执行次序上进行协调,它的目的是使系统中诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性;或系统中诸进程之间在逻辑上的相互制约的关系(直接的-同步;间接的-互斥)。 用来实现同步的机制称为同步机制。如:信号量机制;管程机制。 进程的两种制约关系 间接制约:进程间由于共享某种系统资源,而形成的相互制约——互斥。例如打印机 直接制约: 进程间由于合作而形成的相互制约——同步。 例:A:c=x+y;B:x=u-v 一、进程同步的基本概念 同步与互斥比较 互斥是并发执行的多个进程由于竞争同一资源而产生的相互排斥的关系 ——同步进程间具有合作关系 ——在执行时间上必须按一定的顺序协调进行 2、临界资源、临界区 一次只允许一个进程使用的共享资源称为临界资源,如打印机,绘图机;变量,数据等 诸进程间采取互斥方式实现对这种临界资源的共享,从而实现并行程序的封闭性。 2、临界资源、临界区 例:有两个进程A和B,它们共享一个变量x,且两个进程按以下方式对变量X进行访问和修改: 访问临界区的循环进程描述 repeat 2、临界资源、临界区 要进入临界区的若干进程必须满足: (1)一次只允许一个进程进入一个临界区 (2)任何时候,处于单个临界区的进程不得多于一个 (3)进入临界区的进程要在有限的时间内退出 (4)如果不能进入自己的临界区,则应让出处理机资源 2、临界资源、临界区 解决临界区(互斥)问题的几类方法: (1)软件方法(P-V操作) (2)硬件方法 同步机制遵循的原则 空闲让进 忙则等待 有限等待 让权等待 信号量机制 信号量 信号量是一种数据结构 信号量的值与相应资源的使用情况有关 信号量的值仅由P、V操作改变 二、信号量机制 信号量机制是荷兰科学家E.W.Dijkstra在1965年提出的一种同步机制,也称为P、V操作。由最初的整型信号量发展为记录型信号量,进而发展为信号量集。 整型信号量 记录型信号量 信号量集(AND信号量集) 整型信号量 整型信号量——非负整数,除了初始化外,只能通过两个原子操作wait和signal(P,V)来访问。 Wait(S): while S≤0 do no-op S:=S-1; Signal(S): S:=S+1; wait(s)和signal(S)是原子操作. 只要信号量S≤0就不断测试,不满足让权等待. 记录型信号量 基本思想 1、设置一个代表资源数目的整型变量value(资源信号量) 2、设置一链表L用于链接所有等待的进程 记录型信号量的数据结构,包含两个数据项: type semaphore=record value:integer; L:list of process; end S.value为整型,是资源信号量,其初值:某类资源的数目 wait操作:申请一个单位资源 signal操作:释放一个单位资源 S.value≥0:表示系统中可用的资源数量 S.value0:其绝对值表示已阻塞的进程数量 S.Value初值为1时:只允许一个进程访问临界资源,是互斥信号量 AND型信号量 AND型信号量基本思想:将进程在整个运行中需要的所有资源,一次性全部分配给进程,待进程使用完后一起释放。 在wait中加入AND条件, 又称AND同步或同时wait操作:Swait Swait(S1,S2,…Sn) If S1≥1 and Sn≥1 then for i:=1 to n do Si:= Si-1; endfor else 当发现第一个Si1就把该进程放入等待队列 并将其程序计数器置于Swait操作的开始位置 endif Ssignal(S1,S2,…Sn) for i:=1 to n do Si:= Si+1; 将所有等待Si的 进程由等待队列取出放入到就绪队列 Endfor; 用信号量实现互斥 Var mutex:semaphore:=1; Begin Parbegin Process1:begin repeat wait(mutex);

文档评论(0)

20010520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档