- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
实验二进程同步
一、实验目的
死锁会引起计算机工作僵死,造成整个系统瘫痪。因此,死锁现象是操作系
统特别是大型系统中必须设法防止的。通过本次实验,使学生掌握死锁的概念和
产生死锁的原因和必要条件,预防和避免死锁的方法,死锁的检测与解除。通
过本次实验,使学生加深了对死锁概念的理解和掌握,深刻领会银行家算法的实
质及实现过程。
二、实验内容及要求
设计一个n个并发进程共享m个系统资源的系统。进程可动态申请资源和
释放资源,系统按各进程的申请动态的分配资源。要求采用银行家算法防止死锁。
三、实验参考(本程序中的用到的所有数据类型的定义,主程序的流程图及
各程序模块之间的调用关系)
1.程序流程图
安全(safe)函数框图如下:
2.逻辑设计
用结构体数组表示3个进程,其中包括使用数组形式的线性表表示某个进程申请资源的列
表(队列),以及进程需要的总资源数、前i个申请共计占用的资源,进程当前已经运行
到的位置等信息。
模拟分配的程序部分,采用循环队列对各进程进行调度。
3、物理设计
全局变量的结构定义如下:
boolavoid;
structinfo//进程信息
{
longtot,n;//最大占用资源,申请次数
longlist[16];//申请资源列表
longpre[16];//已占用资源数
longp;//已分配状况的指针
}pro[4];
longLeftRes;
程序的结构定义如下:
intmain()//主函数
{
init();
allot();
}
voidinit()//函数功能:输入和初始化
voidallot()//函数功能:模拟资源分配过程
allot()使用以下函数模拟分配过程:
boolrequire(longx)//函数功能:尝试分配资源给进程x
boolsafe(longx)//函数功能:检查分配是否安全
可以处理3种资源的程序全局变量结构如下:
//共有3种资源,3个进程
boolavoid;
structinfo//进程信息
{
longtot[4];//最大占用资源数
longp[4];//已经占有的资源数
}pro[5];
longLeftRes[4];//剩余资源数
longqu[4];
源码:
#includecstdio
#includecstring
#includecstdlib
#includectime
//共有3种资源,3个进程
boolavoid;
structinfo//进程信息
{
longtot[4];//最大占用资源数
longp[4];//已经占有的资源数
}pro[5];
longLeftRes[4];//剩余资源数
longqu[4];
voidinit()//函数功能:输入和初始化
{
chartmp[128];
longi,j;
//以下由用户选择是否采用避免死锁算法
是否采用避免死锁算法
gets(tmp);
avoid=(tmp[0]==Y||tmp[0]==y);
//输入各进程的资源信息
请输入各进程的资源信息
依次输入各进程所需要的最大资源数量
for(i=1;i=3;i++)
{
for(j=1;j=3;j++)
{
}
}
依次输入各进程已经占据的资源数量
for(i=1;i=3;i++)
{
for(j=1;j=3;j++)
{
do
{
if(pro[i].p[j]pro[i].tot[j])
占有资源超过了声明的最大资源,请重新输入
}while(pro[i].p[j]pro[i].tot[j]);
}
}
//初始化资源数量
for(i=1;i=3;i++){
LeftRes[i]=10;//初始化总资源数为10
for(j=1;j=3;j++)
{
LeftRes[i]-=pro[j].p[i];//减去已经被占据的资源
}
}
您可能关注的文档
- 乙型肝炎病毒HBVDNA定量检测试剂注册申报资料技术指导原则.pdf
- 关于对“职教高考”背景下中职生心理现状调查报告.pdf
- 关于组织绩效的内涵及其影响因素.pdf
- 新教材高中历史选择性必修1第5单元货币与赋税制度重点题及单元测验.pdf
- web前端学习心得体会范文(5篇).pdf
- 初中数学教师家长会简短发言稿(通用6篇).pdf
- 【2023全国各地中考英语真题分类汇编(中)】22 词汇运用 考点3 按照首字母提示填空(解析版).pdf
- 肾囊肿基本知识及处理.pdf
- 监护仪质量控制.pdf
- 《直线、线段、射线和角》说课稿.pdf
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
文档评论(0)