- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
大连理工大学远程与继续教育学院《操作系统》课程设计
大连理工大学远程与继续教育学院《操作系统》课程设计
学习中心:
专
业:
计算机科学与技术
年
级:
18 年 秋季
学
号:
学
生:
题 目: 进程同步与互斥 生产者与消费者问题
谈谈你对本课程学习过程中的心得体会与建议:
在学习操作系统之前,我只是很肤浅地认为操作系统只是单纯地讲一些关于计算机方面的操作应用,并不了解其中的具体操作过程和实用性。通过这一学期的学习,我才知道操作系统(Operating System,简称 OS)是管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。 经过一个学期的学习,我也知道了计算机操作系统是铺设在计算机硬件上的多层系统软件,不仅增强了系统的功能,而且还隐藏了对硬件操作的细节,由它实现了对计算机硬件操作的多层次的抽象。操作系统的一些原理在生活中也有所应用本次课程设计中,完成本题我觉得还可以用其他语言来做,也让我更加熟悉掌握学习过的编程语言。为实现生产者和消费者问题,使用的是 C++语言,自我感觉比较好的是运用到了线程,将缓冲区作为一个循环队列,简单模拟了生产者和消费者对于缓冲区的输入输出,结果是比较成功的。
《操作系统》课程设计, 从以下 5 个题目中任选其一作答。
《操作系统》课程设计
题目四:进程同步与互斥 生产者与消费者问题
要 求:(1)撰写一份 word 文档,里面包括(设计思路、流程
大连理工大学远程与继续教育学院《操作系统》课程设计
大连理工大学远程与继续教育学院《操作系统》课程设计
(原理)图、源代码)章节。
设计思路:简单描述生产者与消费者问题。可设计生产者进程主要计算进程,消费者进程输出打印进程,二者彼此独立,运行速度不确定,可能会产生还未生产就需要消费这种情况,此时引用一个或若干个缓冲区,存放生产者生产的信息,解决速度不确定带来的问题。
流程(原理)图:绘制流程图或原理图。
源代码:列出源代码,也可以仅列出伪代码。
需求分析
问题描述:
一组生产者向一组消费者提供消息,它们共享一个有界缓冲区 n,生产者向其中投放消息,消费者从中取得消息。
规则:
对于生产者进程:产生一个数据,当要送入缓冲区时,要检查缓冲区是否已满,若未满,则可将数据送入缓冲区,并通知消费者进程;否则,等待;
对于消费者进程:当它去取数据时,要看缓冲区中是否有数据可取,若有则取走一个数据,并通知生产者进程,否则,等待。
缓冲区是个临界资源,因此,诸进程对缓冲区的操作程序是一个共享临界区, 所以,还有个互斥的问题。
信号灯设置 : 两个同步信号灯--
empty :表示空缓冲区的数目,初值为有界缓冲区的大小 n; full : 表示满缓冲区(即信息)的数目,其初值为 0;
一个互斥信号灯--
mutex:互斥信号灯,初值为 1。
程序描述: main( )
{
int full=0; /* int empty=n;/* int mutex=1;/* cobegin
p1 ( ); p2( ); coend
}
满缓冲区的数目 */ 空缓冲区的数目 */
对有界缓冲区进行操作的互斥信号灯*/
p1()
{
while(生产未完成)
{
?
生产一个产品; p(empty);
p(mutex);
送一个产品到有界缓冲区; v(mutex);
v(full);
}
}
p2( )
{
while(还要继续消费)
{
p(full); p(mutex);
从有界缓冲区中取产品;
大连理工大学远程与继续教育学院《操作系统》课程设计
大连理工大学远程与继续教育学院《操作系统》课程设计
v(mutex); v(empty);
?
消费一个产品;
}
}
C++语言程序模拟用信号量机制实现生产者和消费者问题:
本次课程设计主要通过 C++模拟信号量制中各个进程,及各进程之间的互斥、同步关系,来实现生产者和消费者问题。
模块说明:
const unsigned short SIZE_OF_BUFFER = 10; //缓冲区长度
unsigned
short
ProductID
=
0;
//产品号
unsigned
short
ConsumeID
=
0;
//将被消耗的产品号
unsigned
short
in =
0;
//产品进缓冲区时的缓冲区
下标
unsigned short out = 0; // 产品出缓冲区时的缓冲区下标
int g_buffer[SIZE_OF_BUFFER]; //缓冲区是个循环队列bool g_continue = true; //控制程序结束HANDLE g
原创力文档


文档评论(0)