OS02进程同步.ppt

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

第二章 进程管理 第二章 进程管理 2.4 进程同步 2.5 经典的进程同步问题 2.6 管程机制 2.7 进程通信 2.4 进程同步 进程同步的主要任务是使并发执行的各进程之间能有效的共享资源和相互合作,从而使程序的执行具有可再现性。 2.4.1 进程同步的基本概念 2.4.2 信号量机制 2.4.3 信号量的应用 2.4.1 进程同步的基本概念(1) 进程之间的两种制约关系 间接制约关系 系统资源竞争,进程间彼此无关 直接制约关系 进程间合作,彼此相关 2.4.1 进程同步的基本概念(5) 临界资源(Critical Resource/CR):一次仅允许一个进程访问的资源。 如:进程P1、P2共享一台打印机,若让它们交替使用则得到的结果肯定是不可理解的。 临界资源可能是硬件,也可能是软件:变量,数据,表格,队列等。 并发进程对临界资源的访问必须作某种限制,否则就可能出现与时间有关的错误,如:联网售票。 临界区(Critical Section/CS):临界段,在每个程序中,访问临界资源的那段程序。 repeat entry section CS; exit section remainder section Until false 2.4.1 进程同步的基本概念(6) 注意:临界区是对某一临界资源而言的,对于不同临界资源的临界区,它们之间不存在互斥。 如程序段A、B有关于变量X的临界区,而C、D有关于变量Y的临界区,那么,A、B之间需要互斥执行,C、D之间也要互斥执行,而A与C、B与D之间不用互斥执行。 2.4.1 进程同步的基本概念(7) 同步机制应遵循的规则: 空闲让进 忙则等待 有限等待 让权等待 实例:生产者-消费者问题 一种同步问题的抽象描述 计算机系统中的每个进程都可以消费(使用)或生产(释放)某类资源。这些资源可以是硬件资源,也可以是软件资源。 当某一进程使用某一资源时,可以看作是消费,称该进程为消费者。而当某一进程释放某一资源时,它就相当于生产者。 实例:生产者-消费者问题 一种同步问题的抽象描述 生产者-消费者之间设置一个具有n个缓冲区的缓冲池,生产者进程将它所生产的产品放入一个缓冲区;消费者进程可从一个缓冲区中取走产品去消费。 不允许消费者进程到一个空缓冲区去取产品; 不允许生产者进程向一个已装满产品且尚未取走的缓冲区投放产品。 实例:生产者-消费者问题 问题分析 利用一个数组表示具有n个缓冲区的循环缓冲池; 用输入指针in指示下一个可投放产品的缓冲区,每当生产者进程生产并投放一个产品,输入指针加1(in:=(in+1) mod n); 用指针out指示下一个可从中获取产品的缓冲区,每当消费者进程取出一个产品,输出指针加1 (out:=(out+1) mod n) ; 实例:生产者-消费者问题 问题分析 (in+1) mod n = out 缓冲池满; in=out 缓冲池空; counter表示缓冲池内产品的数量。 在生产者进程中使用一局部变量nextp,用于暂时存放每次刚生产出来的产品; 在消费者进程中使用一个局部变量nextc用于存放每次要消费的产品。 实例:生产者-消费者问题 实例:生产者-消费者问题 producer:repeat … produce an item in nextp; … while counter=n do no-op; buffer[in]:=nextp; in:=(in+1) mod n; counter:=counter+1; until false; 实例:生产者-消费者问题 count=count+1 的执行为: 1 register1 := counter 2 register1 := register1 +1 3 counter := register1 2.4.2 信号量(Semaphore)机制 1965年,由荷兰学者Dijkstra提出 P、V操作分别是荷兰语的test (Proberen) 和increment (Verhogen) 。 一种卓有成效的进程同步机制。 经历整型信号量、记录型信号量,发展为“信号量集”机制。 P、V操作是原语。 信号量的值除初始化外,只能由P、V原语修改。(wait、signal) 1、整型信号量 定义为一个整型量,由两个标准原子操作wait(S)(P操作)和signal(S)(V操作)来访问。 2、记录型信号量 记录型信号量机制采取“让权等待”策略,即当进程不能申请到资源时,让出CPU使用权。避免了整型

文档评论(0)

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

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

1亿VIP精品文档

相关文档