生产者消费者_操作系统课程设计[1]

生产者消费者_操作系统课程设计[1]

ID:14479261

大小:213.50 KB

页数:11页

时间:2018-07-28

生产者消费者_操作系统课程设计[1]_第1页
生产者消费者_操作系统课程设计[1]_第2页
生产者消费者_操作系统课程设计[1]_第3页
生产者消费者_操作系统课程设计[1]_第4页
生产者消费者_操作系统课程设计[1]_第5页
资源描述:

《生产者消费者_操作系统课程设计[1]》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、利用管程解决“生产者—消费者”问题摘要:现代操作系统引入并发程序设计技术之后,程序的执行不再是顺序的,封闭的。在多个进程并发运行的过程中,进程之间可能产生相互制约的关系,即竞争和协作。为了协调各进程有序正确的进行,就需要各进程间能相互通信。如果各进程之间不加以来控制,就会产生错误,如与时间有关的错误等。这就需要考虑进程之间的同步和互斥等问题。操作系统中经典的“生产者—消费者”问题正反映了进程并发执行的这种关系。本课程设计所完成的就是对“生产者—消费者”问题的模拟,本系统根据操作系统中并发进程、临界区、同步和互斥等基本概念及理论进行设计,采用Java语言实现,用管程来对进程进行模拟同步

2、和互斥的控制。本系统可按照用户设定的生产者消费者数目及缓冲区大小来进行模拟演示。这对深入理解操作系统中进程的同步和互斥问题,探求对进程控制方法的学习上有重大意义。关键字:管程;进程同步;进程互斥;临界资源1.研究目的及意义本课程设计通过模拟计算机操作系统中经典的“生产者—消费者问题”,巩固在操作系统原理课上所学的知识,加深对操作系统中进程同步和互斥、临界区管理,管程等问题的认识和理解。前期主要利用P、V信号量来控制各进程间的同步于互斥关系,确保各进程有序正确的进行。然而,我们也知道,使用信号量和P、V操作在实现进程同步时,对共享资源的管理分散于各个进程中,进程能够直接对共享变量进行处

3、理,不利于系统对系统资源的管理,容易造成程序设计错误。因此,在后期我们改用管程来实现,目的是想把资源集中起来统一管理,即把相关的共享变量及其操作集中在一起统一的控制和管理,使各并发进程间的相互作用更为清晰。当然,我们本次课程设计也为我们了解软件设计的流程、方法以及思想,提高分析设计以及编程的能力提供了基础。2.理论基础及分析2.1问题的引入在操作系统引入并发程序设计技术之后,程序的执行不再是顺序和封闭的,程序外部的顺序特性消失,程序与计算不再一一对应。于是人们引入进程来描述这种变化。而一组进程在执行的时间上是重叠的,即进程并发执行。在多个进程并发运行的过程中,进程之间可能是无关的,也

4、可能是交互的。交互进程之间可能产生的关系,包括竞争和协作。竞争和协作就会出现对统一资源进行操作,进而引入临界区的概念——并发进程中与共享变量有关的程序段称为临界区,共享变量所代表的资源成为临界资源。如不对临界区进行管理就会产生一些与时间有关的错误。在操作系统有多种方法可以实现对临界区、临界资源的管理。其中最基本的方法是设置相应的信号量和P、V操作。2.2信号量和P、V操作为了能让多个进程通过特殊变量展开交互,一个进程在某一关键点上被迫停止执行直至收到对应的特殊变量,通过这一措施,来达到复杂进程间的交互,这种特殊变量就是信号量。为了能够用信号量传送信号,进程可用P、V两个特殊操作来发送

5、和接收信号,如果协作进程的相应信号仍未送到,则进程被挂起直至信号达到为止。P、V操作的实现,是本次课程设计的基础,也是一个重点。本次设计能够成功,有一定的偶然性。即充分的借助于JAVA虚拟机提供的两个与线程有关的最重要的两个函数,即wait()和notify()。我们都知道,实现P、V操作的重点是如何将进程阻塞在相应的阻塞队列,以及如何唤醒相应的阻塞进程,而不会出现错误。要实现这一点,有一定的难度。前期,我们做过尝试,但最终以失败而告终。最后,我们找到了JAVA虚拟机提供两个函数来实现我们的目的。函数如下:wait()执行该方法的线程释放对象的锁,Java虚拟机把该线程放到该对象的等

6、待池中。notify()执行该方法的线程唤醒在该对象等待池中等待的一个线程。因为JAVA是面向对象的一门编程语言,一切属性与方法都与对象绑定,而这一点正是我们要解决的难点:如何将进程阻塞在相应的阻塞队列,以及如何唤醒相应的阻塞进程。可以说,我们是把这个难题交给了JAVA虚拟机来处理。但此种方法把资源交给各进程进行管理,容易出现进程有意或无意的破坏,所以我们才用管程来控制。2.3管程的基本概念代表共享资源的数据结构,以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序,共同构成了一个操作系统的资源管理模块,我们称之为管程。管程的四个组成部分:  1.管程内部的共享变量;  2.

7、管程内部的条件变量;  3.管程内部并行执行的进程;  4.对局部于管程内部的共享数据设置初始值的语句。2.4用管程实现进程和互斥:(1)用管程实现互斥:当几个进程调用某个管程的时候,在一个时刻仅允许一个进程进入管程。管程中仅允许一个进程处于活跃状态,但不表示管程中只有一个进程,可能存在因资源不足而阻塞的进程等。当一个进程调用管程中的过程时,首先检查管程中是否有进程处于活跃态,如果有,则阻塞调用进程,直到管程内部的进程离开管程或其他操作。管程的互斥操作是由

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。