精品文档 知识共享
操作系统课程实验报告
学生姓名: 乔宏永
班 学 号: 111112
指导教师: 袁国斌
中国地质大学信息工程学院
2012年 11 月 20日
实习题目:基于Windows进程互斥分析和模拟
【需求规格说明】
基于Microsoft Visual Studio环境的多线程编程验证互斥的原理,理解多线程编程中关键元素的定义与使用,通过使用Semaphore,mutex等控制元素,实现对生产者消费者模型的真实模拟,函数的功能与实现自己定义。
【算法设计】
设计思想:
本人设计了两个程序,一个是基于控制台的,一个是MFC的.不过设计思想都一样
我的程序:实现生产者与消费者之间的互斥,我设计了3个生产者和1个消者。
既然要实现消费者和生产者之间的互斥,那么必不可少的要建立一个互斥对象
hMutex,来实现生产者生产产品时,消费者就不能从缓存区中去取产品。但是如果只有一个互斥信号量的话会出现一个弊端,如:当生产者生产的产品大于缓存区容量时,它还会继续试图生产产品并放到里面。所以我们还需要一对同步信号量EmptySemaphore,FullSemaphore。其中EmptySemaphore来控制缓存区是否空,如若为空则消费者不能从缓存区中取产品;FullSemaphore来控制缓存区是否为满,如若为满则消费者就不再继续生产产品。这样就很好的提高了CPU的利用率。
然后再主线程中创建3个生产者线程,1个消费者线程。并实现生产者线程和消费者线程的功能。
设计表示:
创建四个线程,3个生产者线程,1个消费者线程,接着进行多线程的工作,if(getchar())则程序退出。并且程序运行后可以在屏幕上显示出此时此刻运行的线程、产品在缓存区的位置,生产者或消费者生产或消费的产品号。
设计流程图(如下):
Start
Start
创建四个线程:其中
创建四个线程:其中3个生产者线程
1个消费者线程
消费者活动生产者3活动
消费者活动
生产者3活动
生产者2活动
生产者1活动
if(getchar())
if(getchar())
Y
退出
退出
Exit
详细设计表示:
生产者与消费者之间的关系图(如下):
受到同步信号量
受到同步信号量EmptySemaphore和FullSemaphore的控制,若空则可以进行产品的生产,若满则阻止
P
P、C线程访问缓存区受互斥信号量hMutex的控制
Product(生产者)
Product(生产者)
缓存区
大小:10
Consume
Consume(消费者)
受到同步信号量
受到同步信号量EmptySemaphore和FullSemaphore的控制,若空则可以进行产品的消费,若满则阻止
【调试报告】
程序运行结果(一角)
Win32控制台应运程序运行截图:
MFC运行结果截图:
在调试的过程中可以说是遇到了很多的问题,其中纠结最久的就是MFC中显示出生产者、缓存区、消费者的内容,因为我的线程实现是在对话框的类外面写的所以要调用创建对话框的临时对象,但是怎么传都没办法把它的地址传出来。最后我想了一种办法,就是将对话框中ListBox控件绑定的变量的地址传出来,最后实现了内容的输出。这次操作系统实习加深对进程概念的理解,明确进程和程序的区别,加深了对多线程互斥的理解
【用户手册】
对于Win32控制台的应运程序直接按Ctrl+F5就可以模拟多线程的互斥,以及生产者和消费者问题。最后按回车键Enter来结束线程。
对于MFC程序:实现了创建线程、挂起线程、结束线程的功能。
操作如下:
输出消费者所取产品在缓存区的位置以及产品的号码
输出消费者所取产品在缓存区的位置以及产品的号码
输出缓存区对应位置的状态,0
输出缓存区对应位置的状态,0代表该位置有产品,1代表没有产品
点击便可使程序处于休眠状态即挂起。然后再点击【创建线程】按钮,可继续执行
输出生产者所生产的产品号码,以及存放在缓存区的位置
输出生产者所生产的产品号码,以及存放在缓存区的位置
点击便可创建生产者消费者线程
点击便可创建生产者消费者线程
点击后结束线程,并退出程序
点击后结束线程,并退出程序
【附录】
具体代码实现:
Win32控制台应运程序:
// 操作系统实习cpp : 定义控制台应用程序的入口点。
#include stdafx.h
#includeWindows.h
#includeiostream
using namespace std;
#define SIZE_CATCH 10 //缓存区的长度
int ProductID(0);//生产的产品号
int ConsumeID(0);//消费者取走的产品号
int in(0),out(0);//控制缓存区
bool
您可能关注的文档
- 方剂学古方版.docx
- 基于STC89C52RC智能避障灭火小车毕业论文设计.doc
- 叉车液压系统集成块及其加工工艺的设计.doc
- 消费者品牌忠诚度分析.doc
- 2014苏教版小学美术第四册教案.doc
- 眼镜店新员工专业知识.doc
- 分支限界法实验(单源最短路径).doc
- 图像处理上机作业题.doc
- 基于PHP的新闻发布系统设计与实现(论文).doc
- 单片机课程设计--动态数码显示技术.doc
- 最新部编人教版三年级下册语文《口语交际:春游去哪儿玩》教学课件.ppt
- 人教版部编版道德与法治八年级上册《维护秩序》精品课件.ppt
- 2020年最新人教部编版四年级语文上册《女娲补天》精品课件.ppt
- 人教部编版六年级道德与法治上册《权力受到制约和监督》精品课件第1课时.ppt
- 最新部编人教版三年级下册语文《我变成了一棵树》教学课件.ppt
- 新人教部编版五年级上册语文《冀中的地道战》精品课件.ppt
- 新编人教部编版二年级下册语文《雷雨》课件.pptx
- 最新部编版人教版小学一年级语文下册《人之初》精品课件.ppt
- 新人教部编版道德与法治九年级上册《生活在民主国家》精品教学课件.ppt
- 人教版部编版初中七年级语文下册《爱莲说》名师课件.pptx
原创力文档

文档评论(0)