第2章进程同步与通信-1.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Ssignal(S1,S2,…Sn){ while(TRUE){ for(i=1;i=n;i++){ Si++; 将所有等待Si的 进程由等待队列取出放入到就绪队列 }}} 2.4.4信号量的应用 用信号量实现互斥 Var mutex:semaphore:=1; Begin Parbegin Process1:begin repeat wait(mutex); critical section signal(mutex); remainder section until false; end; Process2:begin repeat wait(mutex); critical section signal(mutex); remainder section until false; end; parend 在实现互斥时应注意 wait(mutex)和signal(mutex)必须成对地出现。 缺wait(mutex)将会引起系统混乱,不能保证对临界资源的互斥访问 缺signal(mutex)将会使该临界资源永久不被释放 初始状态 mutex:=1 没有并发进程使用临界区 临界区 互斥的进程 一个进程申请临界区 mutex:=1 没有并发进程使用临界区 mutex:= 申请成功,进程使用临界区 0 mutex:= 0 另一个进程也申请临界区 mutex:= -1 申请失败 阻塞队列 mutex:= 0 释放资源 阻塞队列 mutex:=0 释放资源 阻塞队列 wait操作:申请一个单位资源    wait(semaphore *S){      S-value--;       if(S-value0) block(S-list);      } signal操作:释放一个单位资源 signal(semaphore *S){      S-value++;      if(S-value=0)wakeup(S-list); 进程同步的基本概念   1.两种形式的制约关系   在多道程序环境下,当程序并发执行时,由于资源共享和进程合作,使同处于一个系统中的诸进程之间可能存在着以下两种形式的制约关系。   (1) 间接相互制约关系。同处于一个系统中的进程,通常都共享着某种系统资源,如共享CPU、共享I/O设备等。所谓间接相互制约即源于这种资源共享,例如,有两个进程A和B,如果在A进程提出打印请求时,系统已将惟一的一台打印机分配给了进程B,则此时进程A只能阻塞;一旦进程B将打印机释放,则A进程才能由阻塞改为就绪状态。   (2) 直接相互制约关系。这种制约主要源于进程间的合作。例如,有一输入进程A通过单缓冲向进程B提供数据。当该缓冲空时,计算进程因不能获得所需数据而阻塞,而当进程A把数据输入缓冲区后,便将进程B唤醒;反之,当缓冲区已满时,进程A因不能再向缓冲区投放数据而阻塞,当进程B将缓冲区数据取走后便可唤醒A。 * 临界区   由前所述可知,不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。人们把在每个进程中访问临界资源的那段代码称为临界区(critical section)。显然,若能保证诸进程互斥地进入自己的临界区,便可实现诸进程对临界资源的互斥访问。为此,每个进程在进入临界区之前,应先对欲访问的临界资源进行检查,看它是否正被访问。如果此刻该临界资源未被访问,进程便可进入临界区对该资源进行访问,并设置它正被访问的标志;如果此刻该临界资源正被某进程访问,则本进程不能进入临界区。因此,必须在临界区前面增加一段用于进行上述检查的代码,把这段代码称为进入区(entry section)。相应地,在临界区后面也要加上一段称为退出区(exit section)的代码,用于将临界区正被访问的标志恢复为未被访问的标志。 *   4.同步机制应遵循的规则   为实现进程互斥地进

文档评论(0)

1112111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档