计算机操作系统---第2章 进程管理.ppt

计算机操作系统---第2章 进程管理.ppt

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

3.利用管程解决生产者-消费者问题beginwait(d);S5;signal(g);end;beginwait(e);wait(f);wait(g);S6;end;parendendvara,b,c,d,e,f,g:semaphore:=0,0,0,0,0,0,0;beginparbeginbeginS1;signal(a);signal(b);end;beginwait(a);S2;signal(c);signal(d);end;beginwait(b);S3;signal(e);end;beginwait(c);S4;signal(f);end;2.3.4管程机制信号量机制的缺乏:每个要访问临界资源的进程必须自备同步操作wait(s)和signal(s)例子:错误1在利用互斥信号量mutex实现进程互斥时,将wait(s)和signal(s)颠倒,即signal(mutex);cs;wait(mutex);这样可能会有几个进程同时进入临界区。错误2在实现进程互斥时,将程序中的signal(mutex)误写为wait(mutex),即wait(mutex);cs;wait(mutex);这样可能会发生死锁。基于上述情况,提出了管程(Monitors〕概念。1.管程的定义系统中的所有硬件资源和软件资源,均可用数据结构加以抽象地描述,即用少量信息和对该资源所执行的操作来表征该资源,而忽略了它们的内部结构和实现细节。如,一个FIFO队列,可用其队长、队首和队尾以及在该队列上所执行的一组操作来描述。管程由三局部组成:〔1〕局部于管程的共享变量说明〔2〕对该数据结构进行操作的一组过程〔3〕对局部于管程的数据设置初始值的语句。管程的定义:一个管程定义了一个数据结构和能为并发进程所执行〔在该数据结构上〕的一组操作,这组操作能同步进程和改变管程中的数据。管程:一种同步机制管程的形式TYPEmonitor_name=MONITOR;共享变量说明PROCEDURE过程名〔形参表〕; 过程局部变量说明; BEGIN 语句序列; END;......FUNCTION函数名〔形参表〕:值类型; 函数局部变量说明; BEGIN 语句序列; END;......BEGIN 共享变量初始化语句序列;END;共享数据一组操作进程初始化代码条件〔不忙〕队列进入队列管程的示意图说明:局部于管程的数据结构,仅能被局部于管程的过程所访问;反之,局部于管程的过程也仅能访问管程内的数据结构。可以把管程看作是围墙。管程的三个主要的特性:〔一〕模块化,一个管程是一个根本程序单位,可以单独编译〔二〕抽象数据类型,管程是一种特殊的数据类型,其中不仅有数据,而且有对数据进行操作的代码〔三〕信息隐藏,管程是半透明的,管程中的外部过程〔函数〕实现了某些功能,至于这些功能是怎样实现的,在其外部那么是不可见的管程有如下几个要素:〔一〕管程中的共享变量在管程外部是不可见的,外部只能通过调用管程中所说明的外部过程〔函数〕来间接地访问管程中的共享变量〔二〕为了保证管程共享变量的数据完整性,规定管程互斥进入〔三〕管程通常是用来管理资源的,因而在管程中应当设有进程等待队以及相应的等待及唤醒操作管程和进程的异同点:〔1〕设置进程和管程的目的不同〔2〕系统管理数据结构进程:PCB管程:等待队列〔3〕管程被进程调用〔4〕管程是操作系统的固有成分,无创立和撤消利用管程解决生产者、消费者问题首先定义管程〔1〕put(item)〔2〕get(item)2.4经典进程的同步问题P58包括:生产者-消费者问题、读者-写者问题、哲学家进餐问题问题:如何描述进程同步问题?先写出对问题的初步描述〔用汉语,流程〕问题中存在的关系〔互斥、同步,各有几种〕问题的初始状态〔用于信号量初值的设置〕把P、V操作放到适宜的位置本节主要内容:2.4.1生产者——消费者问题2.4.2哲学家进餐问题2.4.3读者——写者问题本节学习目标:掌握三个经典进程同步问题所解决的同步问题;理解并会分析三个经典进程同步问题,重点掌握生产者——消费者问题2.4.1生产者-消费者问题描述如下:有一些进程生成产品,称为生产者;有一些进程使用产品,称为消费者。生产者和消费者必须同步。设置一缓冲池用来暂存产品;互斥问题:缓冲池属于临界资源,对缓冲池的操作

文档评论(0)

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

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

1亿VIP精品文档

相关文档