2.3 进程同步.ppt

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

2.3 进程同步 2.3 进程同步 在多道程序系统中,由于资源共享或进程合作,使进程间形成间接相互制约和直接相互制约关系,这需要用进程互斥与同步机制来协调两种制约关系。 进程同步的主要任务是使并发执行的进程间有效的共享资源和相互合作。 进程的同步机制──信号量 间接相互制约关系(资源共享): 进程间要通过某种中介发生联系,是无意识安排的,可发生在相交进程之间,也可发生在无关进程之间。 直接相互制约关系(相互合作): 进程间的相互联系是有意识的安排的,直接作用只发生在相交进程间。 间接相互制约关系(资源共享) 同处于一个系统中的进程,通常共享着某种系统资源,如CPU、I/O设备。间接相互制约即源于这种资源共享。 举例。 直接相互制约关系(相互合作) 对存在相互合作关系的某些进程,进程同步的主要任务,是保证相互合作的诸进程在执行次序上的协调,不会出现与时间有关的差错。 例如,输入进程A通过单缓冲向进程B提供数据。当该缓冲区空时,B因不能获得所需数据而阻塞,而当A把数据输入缓冲区,便将B唤醒;反之,当缓冲区已满时,A因不能再向缓冲区投放数据而阻塞,当B将缓冲区数据取走后便可唤醒A。 进程同步的定义 指的是两个或多个进程为了合作完成同一个任务,在执行速度或某些个确定的时序点上必须相互协调,即一个进程的执行依赖于另一个进程——其合作伙伴的消息,当一个进程到达了某一确定点而没有得到合作伙伴发来的“已完成某些操作”的消息时必须等待,直到该消息到达被唤醒后,才能继续向前推进。 进程同步和互斥间的关系: 相似处:进程的互斥实际上是进程同步的一种特殊情况;进程的互斥和同步统称为进程同步。 差别:进程互斥是进程间共享资源的使用权,这种竞争没有固定的必然联系,哪个进程竞争到使用权就归那个进程使用,直到不需要使用时再归还;而进程同步则涉及共享资源的并发进程间有一种必然的联系,当进程必须同步时,即使无进程在使用共享资源时,那么尚未得到同步消息的进程也不能去使用这个资源。 2.3 进程同步 临界资源 一次仅允许一个进程使用的资源称为临界资源,包括硬件资源和软件资源,各进程间应采取互斥方式共享。 临界资源限定了使用者只能互斥地使用它。 临界资源也是不可剥夺性资源。例:打印机、共享变量等。 生产者-消费者(producer-consumer)问题 生产者—消费者问题是一个著名的进程同步问题: 生产者进程生产产品,消费者进程去消费产品。为使生产者进程与消费者进程能并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程将它所生产的产品放入一个空缓冲区中;消费者进程可从一个满缓冲区中取走产品去消费。 生产者进程和消费者进程都以异步方式运行,但它们之间必须保持同步。不允许消费者进程到一个空缓冲区去取产品,也不允许生产者进程向一个已装满产品且尚未被取走的缓冲区中投放产品。 问题分析: 生产者—消费者之间的同步关系表现为: 一旦缓冲池中所有缓冲区均装满产品时,生产者必须等待消费者提供空缓冲区; 一旦缓冲池中所有缓冲区全为空时,消费者必须等待生产者提供满缓冲区。 2.3 进程同步 生产者进程和消费者进程共享的变量: Var n: integer; type item=……; var buffer: array[0, 1, …, n-1] of item; in, out: 0, 1, …, n-1; counter:0, 1, …, n; 2.3 进程同步 生产者-消费者(producer-consumer)问题 生产者-消费者问题是相互合作进程关系的一种抽象 输入——计算——打印 生产者 消费者 生产者 消费者 系统中使用资源的进程——消费者 系统中释放同类资源的进程——生产者 2.3 进程同步 解决上述问题的关键就是没有处理好counter变量的使用问题,从上得知,counter是两进程的共享变量,并且某时刻只允许一个进程使用,因此为临界资源,必须互斥地访问。为编程需要引入临界区概念。 2.3 进程同步 3. 临界区 每个进程中访问临界资源的那段代码。 对欲访问的临界资源进行检查, ………………进入区 每个进程在进入临界区之前,应先对欲访问的临界资源进行检查,看它是否正被访问,若此刻未被访问,进程可进入临界区对该资源进行访问,并设置它正在被访问的标志。若该临界资源正被某进程访问,则本进程不能进入临界区。 访问临界资源的那段代码……………临界区 将正在访问的标志恢复为未被访问的标志…………退出区 其余部分 ………………剩余区 2.3 进程同步 同步机制应遵循的规则 为实现

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档