- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1、引起进程阻塞和唤醒的事件 请求系统服务 启动某种操作 新数据尚未到达 无新工作可做 三、进程的阻塞与唤醒 停止执行 修改PCB中的状态 (执行→阻塞) 插入到相应的阻塞队列 另调度一就绪进程,切换CPU (保留阻塞进程的CPU状态信息至PCB,再按新进程PCB中的状态设置CPU环境) 将阻塞进程移出阻塞队列 插入到就绪队列 如需要,则另调度一就绪进程,切换CPU 修改PCB中的状态 (阻塞→就绪) 2、进程的阻塞过程 3、进程的唤醒过程 当引起进程挂起的事件发生时,系统就将利用挂起原语suspend()将指定进程或处于阻塞状态的进程挂起。当发生激活进程的事件时,系统就将利用激活原语active()将指定进程激活。 1、引起进程的挂起与激活的事件 四、进程的挂起与激活 2、进程的挂起过程 3、进程的激活过程 N Y 将挂起进程从外存调入内存 决定是否需重新调度 修改PCB中的状态 *(静止→活动) 活动就绪? 检查该进程状态 修改PCB中的状态 *(活动→静止) 复制PCB至指定内存区域 运行? 另调度一就绪进程 Y N 进程间CPU的切换/上下文切换 2.3 进程同步(1) 进程同步:指对多个相关进程在执行次序上进行协调; 同步的任务:使系统中各进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性; 系统中各进程之间在逻辑上的相互制约的关系: 直接关系—同步 间接关系—互斥 2.3 进程同步(2) 用来实现同步的机制称为同步机制。如: 软件和硬件的方法; 信号量机制; 管程机制 2.3 进程同步(3) 进程同步的基本概念 两种形式的制约关系 临界资源、临界区 同步机制应遵循的规则 信号量机制 整型信号量 记录型信号量 AND型信号量集、一般信号量集 信号量的应用 信号量实现进程互斥 信号量描述进程间的前趋关系 管程机制 一、进程同步的基本概念 1、进程之间两种形式的制约关系 系统中各进程之间在逻辑上存在着两种制约关系: 直接相互制约关系/相互合作关系(进程同步): 即为完成同一个任务的各进程之间,因需要协调它们的工作而相互等待、相互交换信息所产生的直接制约关系。 间接相互制约关系/资源共享关系(进程互斥): 是进程共享独占型资源而必须互斥执行的间接制约关系。 同步与互斥比较 同 步(直接制约) 互 斥(间接制约) 进程-进程 进程-资源-进程 时间次序上受到某种限制 竞争不到某一物理资源时不允许进程工作 相互清楚对方的存在及作用,交换信息 不一定清楚其它进程的情况 往往指有几个进程共同完成一个任务 往往指多个任务多个进程间通讯制约 例:生产与消费之间,发送与接收之间,写者与读者之间 例:交通十字路口,单轨火车的拨道岔 2、临界资源、临界区(1) 一次只允许一个进程使用的共享资源称为临界资源,如打印机,绘图机,变量,数据等,各进程间采取互斥方式实现对这种临界资源的共享,从而实现并发进程的封闭性。 例:生产者-消费者问题 一组生产者向一组消费者提供产品,它们共享一个缓冲池,生产者向其中投放产品,消费者从中取得产品。它是许多相互合作进程的抽象,如输入进程与计算进程;计算进程与打印进程等。 2、临界资源、临界区(2) 设缓冲池的长度为n(n0),一群生产者进程P1,P2,…,Pm,一群消费者进程C1,C2,…,Ck,如图所示。假定生产者和消费者是相互等效,只要缓冲池未满,生产者就可以把产品送入缓冲区,类似地,只要缓冲池未空,消费者便可以从缓冲区取走产品并消耗它。 生产者和消费者进程是以异步方式运行的,但必须保持同步关系,即禁止生产者向满的缓冲池输送产品,也禁止消费者从空的缓冲池提取产品。 … P1 P2 … Pm C1 C2 … Ck 2、临界资源、临界区(3) 生产者消费者进程共享如下变量: TYPE item=…; VAR n:integer; buffer:array[0..n-1] of item; in,out:0..n-1; counter:0..n; 注:n为缓冲池中缓冲区的个数; buffer为具有n个缓冲区的缓冲池; in和out为指针,分别指向下一个可投放产品的缓冲区和下一个可获取产品的缓冲区 2、临界资源、临界区(4) 生产者消费者进程可分别描述为: producer: repeat …… produce an item in nextp; …… while counter=n do no-op; bu
文档评论(0)