1 / 21
文档名称:

操作系统哲学家问题实验报告.doc

格式:doc   大小:2,363KB   页数:21页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统哲学家问题实验报告.doc

上传人:文艺人生 2022/10/1 文件大小:2.31 MB

下载得到文件列表

操作系统哲学家问题实验报告.doc

文档介绍

文档介绍:该【操作系统哲学家问题实验报告 】是由【文艺人生】上传分享,文档一共【21】页,该文档可以免费在线阅读,需要了解更多关于【操作系统哲学家问题实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。操作系统哲学家问题实验报告
2/21
实验报告三
实验名称:一、调试验证“有限缓冲”经典同步问题
二、利用Java同步解决“哲学家进餐”问题
日期:2015-11-5班级:13级计科学号:姓名:
实验目的
了解信号量的使用
掌握正确使用同步机制的方法
实现生产者消费者进程的互斥与同步
实现java同步解决“哲学家进餐”问题
实验内容
调试验证“有限缓冲”经典同步问题
利用Java同步解决“哲学家进餐”问题
项目要求与分析
“有限缓冲”经典同步问题
问题描述
有一群生产者进程在生产产品,此产品提供给消费者去消费。为使生产者和消费者进程能并发执行,在它们之间设置一个具有n个缓冲池,生产者进程可将它所生产的产品放入一个缓冲池中,消费者进程可从一个缓冲区取得一个产品消费。
问题分析
设两个同步信号量:一个说明空缓冲区的数目,用empty表示,初值为有界缓
3/21
的筷子,而看到右侧筷子都不可用,又都放下左侧筷子,等一会儿,又同时拿起左侧筷子……如此永远重复下去。对于这种情况,所有的程序都在运行,但却都无法取得进展,即出现饿死,所有的哲学家都吃不上饭。
解决死锁问题:为了避免死锁,把哲学家分为三种状态:思考,饥饿(等待),进食,并且一次拿起两只筷子,否则不拿。
具体实现
1.“有限缓冲”经典同步问题。
具体实现代码
//缓冲区实现
publicclassBoundeBufferimplementsBuffer
{
privatestaticfinalintBUFFER_SIZE=5;
privateObject[]buffer;
privateintin,out;
privateSemaphoremutex;
4/21
privateSemaphoreempty;
privateSemaphorefull;

publicBoundeBuffer()
{
in=0;
out=0;
buffer=newObject[BUFFER_SIZE];

mutex=newSemaphore(1);
empty=newSemaphore(BUFFER_SIZE);
full=newSemaphore(0);
}

publicvoidinsert(Objectitem)
{
try
{
();
5/21
();
buffer[in]=item;
in=(in+1)%BUFFER_SIZE;
();
();
}catch(InterruptedExceptione)
{();}
}

publicObjectremove()
{
try{
();
();
}catch(InterruptedExceptione)
{
();
}

6/21
Objectitem=buffer[out];
out=(out+1)%BUFFER_SIZE;
();
();

returnitem;
}
//生产者实现
publicclassProducerimplementsRunnable
{
privateBufferbuffer;

publicProducer(Bufferbuffer)
{
=buffer;
}

publicvoidrun()
{
Datemessage;
7/21

while(true)
{
();
message=newDate();
("生产者产生了"+message);
(message);
}
}
}
//消费者实现
publicclassConsumerimplementsRunnable
{
privateBufferbuffer;

publicConsumer(Buffer
8/21
buffer)
{
=buffer;
}

publicvoidrun()
{
Datemessage;

while(true)
{
();
message=(Date)();

("消费者者消费了"+message);
//工厂测试类
publicclassFactory
9/21
{
publicstaticvoidmain(String[]args)
{
Bufferbuffer=newBoundeBuffer();
Threadproducer=newThread(newProducer(buffer));
Threadconsumer=newThread(newConsumer(buffer));

();
();
}
运行结果:
10/21

最近更新

精准配送路径规划-洞察阐释 36页

酒店消防管理制度及要求整理版 4页

关于道路交通事故协议书丢了(二篇) 1 3页

关于糕点销售事例范文通用(5篇) 11页

2024年上海杉达学院单招职业倾向性测试必刷测.. 44页

2024年内蒙古北方职业技术学院单招职业技能测.. 45页

2024年吉林省辽源市单招职业倾向性测试必刷测.. 45页

2024年天津渤海职业技术学院单招职业倾向性考.. 45页

2024年宜昌科技职业学院单招职业适应性测试必.. 44页

2024年广东岭南职业技术学院单招职业技能测试.. 44页

2024年德阳城市轨道交通职业学院单招职业倾向.. 45页

2024年梅河口康美职业技术学院单招职业倾向性.. 44页

关于对工作差错的通报(7篇) 10页

2024年浙江东方职业技术学院单招职业技能考试.. 44页

2024年湖北省武汉市单招职业倾向性考试题库最.. 44页

2024年烟台黄金职业学院单招职业技能考试题库.. 44页

2024年绍兴文理学院单招职业倾向性测试必刷测.. 44页

智能导诊系统优化策略-洞察阐释 34页

2024年郑州铁路职业技术学院单招职业适应性考.. 46页

2024年青岛航空科技职业学院单招职业技能考试.. 46页

2024年黄山职业技术学院单招职业倾向性考试题.. 43页

2025年三门峡职业技术学院单招职业技能测试题.. 44页

2025年上海海事大学单招职业适应性考试题库最.. 45页

2025年丽水职业技术学院单招综合素质考试必刷.. 44页

2025年云南能源职业技术学院单招职业适应性考.. 46页

2025年信阳职业技术学院单招职业技能测试题库.. 44页

2025年兰考三农职业学院单招职业技能考试必刷.. 44页

2025年内蒙古建筑职业技术学院单招职业倾向性.. 43页

2025年北京戏曲艺术职业学院单招职业倾向性测.. 47页

公园项目立项申请书范文怎么写好(二篇) 3页