第2章进程管理下全解.ppt

  1. 1、本文档共84页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章进程管理下全解

§2.3 进程同步 进程同步的主要任务:对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。 2.3.1 进程同步的基本概念 1. 两种形式的制约关系 (1) 间接相互制约关系 源于资源共享(互斥方式) (2) 直接相互制约关系 源于进程合作(同步方式) 必须互斥访问的资源称为临界资源 (或者说一次仅允许一个进程访问的资源) 引起不可再现性是因为临界资源没有互斥访问。 例 如,打印机、变量、表格、队列等。 每个进程中访问临界资源的那段代码 对欲访问的临界资源进行检查, ………………进入区 若此刻未被访问,设正在访问的标志 访问临界资源 ………………临界区 将正在访问的标志恢复为未被访问的标志………退出区 其余部分 ………………剩余区 4. 同步机制应遵循的准则 空闲让进 无进程处于临界区内时,可让一个申请进入该临界区的进程进入。 忙则等待 临界区内有进程时,申请进入临界区的进程必须等待。 有限等待 进程进入临界区的请求,必须在有限的时间内满足。 让权等待 等待进入临界区的进程,必须立即放CPU。 信号量机制 整型信号量 整型量,除初始化外,仅能通过两个原子操作来访问。 P操作 wait(S): While S=0 do no-op; S:=S-1; V操作 signal(S): S:=S+1; P、V操作是原子操作,不可中断。 信号量S:表示资源个数 S0表示可获得这个临界资源的进程个数 S=0表示等待该临界资源的进程个数 P操作:申请资源 V操作:释放资源 整型信号量未遵循“让权等待”原则,导致忙等 引入整型变量value(代表资源数目)、进程链表指针L(链接所有等待进程) 2 记录型信号量 定义:VAR S:Semaphore; 1. P操作(wait 原语) 每作一次P操作,申请分配一个单位的资源。 P(S)— 对信号量S 进行P操作。 ① S.value := S.Value - 1; ② 若 S.Value ≥ 0 进程继续执行。 若 S.Value 0 进程阻塞,并进入等待队列(L)。 2. V操作(Signal原语) V(S)— 对信号量S 进行V操作,释放一个单位的资源。 ① S.value := S.Value + 1; ② 若 S.Value 0 进程继续执行。 若 S.Value ≤ 0 则释放S等待队列中的一个进程, 使之转为就绪状态。 2 记录型信号量 P 操作 Procedure P(s) Var s:semaphore; begin s.value:= s.value-1; if s.value ? 0 then block(s.L); end; V操作 Procedure V(s) Var s:semaphore; begin s.value:= s.value+1; if s.value ≤ 0 then wakeup(s.L); end; 2 记录型信号量 说明: ① S.Value 0 时,其值表示某类资源可用数量。 S.Value ≤ 0 时,其绝对值表示在信号量队列中等待 该资源的进程数。 ② P、V操作有严格的不可分割性;执行过程不允许中断; ③ P、V操作成对出现。 (根据同步机制的原则,分析P、V操作的特点,) 例2:以计算进程C和打印进程P为例来描述两个进程的合作关系,试用P、V原语实现。 设:计算进程与打印进程共用一个缓冲区,为此可设置两个信号量:full表示缓冲区满,令full=0;empty表示缓冲区空,令empty=1 计算进程与打印进程的P、V描述如下: Var a,b,c,d,e,f,g:

文档评论(0)

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

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

1亿VIP精品文档

相关文档