利用信号量,PV,管程等解决生产者消费者问题-操作系统课程设计论文.docVIP

利用信号量,PV,管程等解决生产者消费者问题-操作系统课程设计论文.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统原理课程设计 提优论文 题 目: 利用管程解决“生产者—消费者”问题 姓 名: 学 院: 信息科技学院 专 业: 网络工程 班 级: 网工81班 学 号: 指导教师: 2011年3月 20日 利用管程解决“生产者—消费者”问题 摘要:现代操作系统引入并发程序设计技术之后,程序的执行不再是顺序的,封闭的。在多个进程并发运行的过程中,进程之间可能产生相互制约的关系,即竞争和协作。为了协调各进程有序正确的进行,就需要各进程间能相互通信。如果各进程之间不加以来控制,就会产生错误,如与时间有关的错误等。这就需要考虑进程之间的同步和互斥等问题。操作系统中经典的“生产者—消费者”问题正反映了进程并发执行的这种关系。本课程设计所完成的就是对“生产者—消费者”问题的模拟,本系统根据操作系统中并发进程、临界区、同步和互斥等基本概念及理论进行设计,采用Java语言实现,用管程来对进程进行模拟同步和互斥的控制。本系统可按照用户设定的生产者消费者数目及缓冲区大小来进行模拟演示。这对深入理解操作系统中进程的同步和互斥问题,探求对进程控制方法的学习上有重大意义。 关键字:管程;进程同步;进程互斥;临界资源 1.研究目的及意义 本课程设计通过模拟计算机操作系统中经典的“生产者—消费者问题”,巩固在操作系统原理课上所学的知识,加深对操作系统中进程同步和互斥、临界区管理,管程等问题的认识和理解。前期主要利用P、V信号量来控制各进程间的同步于互斥关系,确保各进程有序正确的进行。然而,我们也知道,使用信号量和P、V操作在实现进程同步时,对共享资源的管理分散于各个进程中,进程能够直接对共享变量进行处理,不利于系统对系统资源的管理,容易造成程序设计错误。因此,在后期我们改用管程来实现,目的是想把资源集中起来统一管理,即把相关的共享变量及其操作集中在一起统一的控制和管理,使各并发进程间的相互作用更为清晰。当然,我们本次课程设计也为我们了解软件设计的流程、方法以及思想,提高分析设计以及编程的能力提供了基础。 2.理论基础及分析 2.1问题的引入 在操作系统引入并发程序设计技术之后,程序的执行不再是顺序和封闭的,程序外部的顺序特性消失,程序与计算不再一一对应。于是人们引入进程来描述这种变化。而一组进程在执行的时间上是重叠的,即进程并发执行。在多个进程并发运行的过程中,进程之间可能是无关的,也可能是交互的。交互进程之间可能产生的关系,包括竞争和协作。 竞争和协作就会出现对统一资源进行操作,进而引入临界区的概念——并发进程中与共享变量有关的程序段称为临界区,共享变量所代表的资源成为临界资源。如不对临界区进行管理就会产生一些与时间有关的错误。在操作系统有多种方法可以实现对临界区、临界资源的管理。其中最基本的方法是设置相应的信号量和P、V操作。 2.2信号量和P、V操作 为了能让多个进程通过特殊变量展开交互,一个进程在某一关键点上被迫停止执行直至收到对应的特殊变量,通过这一措施,来达到复杂进程间的交互,这种特殊变量就是信号量。为了能够用信号量传送信号,进程可用P、V两个特殊操作来发送和接收信号,如果协作进程的相应信号仍未送到,则进程被挂起直至信号达到为止。 P、V操作的实现,是本次课程设计的基础,也是一个重点。本次设计能够成功,有一定的偶然性。即充分的借助于JAVA虚拟机提供的两个与线程有关的最重要的两个函数,即wait()和notify()。我们都知道,实现P、V操作的重点是如何将进程阻塞在相应的阻塞队列,以及如何唤醒相应的阻塞进程,而不会出现错误。要实现这一点,有一定的难度。前期,我们做过尝试,但最终以失败而告终。最后,我们找到了JAVA虚拟机提供两个函数来实现我们的目的。函数如下: wait() 执行该方法的线程释放对象的锁,Java虚拟机把该线程放到该对象的等待池中。 notify() 执行该方法的线程唤醒在该对象等待池中等待的一个线程。 因为JAVA是面向对象的一门编程语言,一切属性与方法都与对象绑定,而这一点正是我们要解决的难点:如何将进程阻塞在相应的阻塞队列,以及如何唤醒相应的阻塞进程。可以说,我们是把这个难题交给了JAVA虚拟机来处理。 但此种方法把资源交给

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档