- 37
- 0
- 约8.66千字
- 约 18页
- 2018-06-03 发布于湖北
- 举报
操作系统课程管程的实现生产者消费者问题
操作系统课程设计
2、管程的实现(生产者消费者问题)
1.设计背景:
管程是一种高级抽象数据类型,它支持在它的函数中隐含互斥操作。结合条件变量和其他一些低级通信原语,管程可以解决许多仅用低级原语不能解决的同步问题。例如,本实验中利用管程提供一个不会发生死锁的生产者消费者问题就是利用管程的很好的例子。 管程封装了并发进程或线程要互斥执行的函数。为了让这些并发进程或线程在管程内互斥的执行,管程的实现必须隐含的具有锁或二值信号量。 如果没有条件变量,管程就不会有很有用,条件变量提供了一种对管程内并发协作进程的同步机制。条件变量代表了管程中一些并发进程或线程可能要等待的条件。一个条件变量管理着管程内的一个等待队列。如果管程内某个进程或线程发现其执行条件为假,则该进程或线程就会被条件变量挂入管程内等待该条件的队列。如果管程内另外的进程或线程满足了这个条件,则它会通过条件变量再次唤醒等待该条件的进程或线程,从而避免了死锁的产生。所以,一个条件变量C应具有两种操作C.wait()和C.signal()。
当管程内同时出现唤醒者和被唤醒者时,由于要求管程内的进程或线程必须互斥执行,因此就出现了两种样式的条件变量:Mesa Style(signal-and-continue): 唤醒者进程或线程继续执行,被唤醒者进程或线程等到唤醒者进程或线程阻塞或离开管程后再执行。Hoare Style(signal-and-wait): 被唤醒者进程或线程立即执行,唤醒者进程或线程阻塞,直道被唤醒者阻塞或离开管程后再执行。我们实验所做的就是在原来mesa样式的基础上进行Hoare样式的改进;这种样式也是我们实验中需要实现的样式。
2.设计目标
验证并分析Nachos中Bridge管程是否能够正确的解决单
行桥双向过桥问题。
? 定义和实现Hoare样式的条件变量Condition_H类
? 利用Hoare样式的条件变量Condition_H,实现Ring类中
定义的各个方法,使用Ring管程解决生产者/消费者问题。
利用Ring对象的Put操作和Get操作代替信号量来完成同
步操作。这样就避免了由于不恰当的使用信号量而引起
的死锁和饥饿问题。
? 利用Hoare样式的条件变量Condition_H,实现Dp管程中
定义的各个方法,使用Ring管程解决哲学家就餐问题。
避免了由于不恰当的使用信号量而引起的死锁和饥饿问
题。
3.设计环境
我们将使用以下的环境和资料学习和实验Nachos系统,展开我们的操作系统设计。
1.实验环境为linux操作系统。
2.Nachos-3.4版系统源代码电子文档及相关编译软件gcc-2.8.1-mips。
3.Study Book :讲授Nachos系统的原理和实现的教材。
4.Introductory Book:讲授Nachos系统的实验方法、实验步骤、实验要求的实验指导书。
4.设计说明
1.Hoare样式条件变量
设计算法说明:
对于Hoare样式管程,相比于Mesa样式新增了一个唤醒者等待队列。在Hoare样式中,唤醒者唤醒被唤醒者后,被唤醒者加入到readytorun队列中,将被唤醒者加入到唤醒者等待队列中,被唤醒者阻塞或者离开时会唤醒唤醒者等待队列中的一个唤醒。这样我们需要一个新的条件变量,重写它的wait()和signal()方法来实现Hoare样式管程。
设计内容和步骤:
1在synch.h文件中定义一个新的结构体Condition_H。
结构体Condition_H中包含的私有变量有char* name(条件变量名称)、List* queue(等待在该条件变量的线程)、Lock* lock(管程锁,条件变量共享)、Semaphore *next(指向唤醒者等待队列,条件变量共享)、int *nextCount(记录唤醒者等待队列中线程数量,条件变量共享);方法有char* getName()、void Wait(Lock *conditionLock)、void Signal(Lock *conditionLock)。
2在synch.cc文件中定义结构体Condition_H中方法的具体实现。①在方法 Condition_H::Wait (Lock *conditionLock) 中,首先判断队列是否为空,是则把传入的锁赋给条件变量的锁。调用条件变量的等待队列queue的Append(currentThread)方法,把当前线程放入等待队列中当前线程释放锁。如果唤醒这等待队列中有线程,则唤醒一个线程,即把它加入readytorun队列中,调用了条件变量next的V方法。当前线程sleep,放弃资源,在readytorun队列中选取下一个执行的线程,该线程申请锁。②在方法void Conditio
您可能关注的文档
最近下载
- BYK技术手册_润湿分散剂.pdf VIP
- 中职语文高教版2023基础模块下册《在庆祝中国共产党成立100周年大会上的讲话》 课件.pptx VIP
- 2026年Java架构师面试题及答案.docx VIP
- 吉利-博越-产品使用说明书-2016款 博越1.8TD 6AT两驱型-MR6453C04-吉利NL-3车型用户手册V0.8_20160530(部分功能描述文字修改).pdf VIP
- 人教版八年级数学下册重难点专题提升精讲精练专题09矩形、菱形、正方形的性质与判定重难点题型专训(原卷版+解析).docx VIP
- 2025年江苏省南京市中考物理临考预测仿真模拟练习卷.docx VIP
- 吉利博越产品手册.pptx VIP
- 2014-2023年北京高考真题与模拟试题:导数及其应用(解析版).pdf VIP
- 173页《华为数据之道》读书笔记课件.pptx VIP
- 骐骥驰骋,逐光前行——2026学年下学期七年级(初一)开学第一课主题班会课件-2025-2026学年初中主题班会优质课件.pptx VIP
原创力文档

文档评论(0)