- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Linux的进程同步与通信的模拟实现课程设计报告
中北大学
操作系统课程设计
说 明 书
?
学 院、系: 专 业: 学 生 姓 名: 学 号: 设 计 题 目: 基于Linux的进程同步与通信的模拟实现 起 迄 日 期: 指 导 教 师:
?
?
?2013 年 1月 16 日
需求分析
该软件需要利用银行家算法判断系统是否处于安全状态,同时根据银行家算法得出的安全序列进行临界资源的分配。软件设计的目的是要对输入的进程进行安全性判断模拟分配资源。
首先先创建进程:手动创建几个进程,都在界面上完成;其中包括每个进程已分配的资源、最大需求资源、系统剩余资源以及每个进程的执行时间。实例中创建5个进程。
其次采用银行家算法,判断是否可以进行资源的分配。
最后,按照银行家算法得出的安全序列,对临界资源进行分配。
总体设计
软件由两个模块组成,分别是银行家算法判断安全序列模块以及临界资源分配模块。
2.1银行家算法模块
本模块中有如下功能:初始化allocation矩阵,初始化max矩阵,初始化available矩阵,初始化need矩阵,初始化finished矩阵,初始化进程执行时间,用银行家算法判断是否安全,计算系统总资源数目,输出系统总资源数目。
其中设置了多个线性单链表结构存储矩阵中的数据,包括已分配allocation矩阵、最大需求量max矩阵、可用资源数available矩阵、需要资源数need矩阵、安全路径path矩阵、进程安全标示finish矩阵、进程运行时间ti矩阵。
银行家算法: 设进程i提出请求Request[n],则银行家算法按如下规则进行判断。 (1)如果Request[n]Need[i,n],则报错返回。 (2)如果Request[n]Available,则进程i进入等待资源状态,返回。 (3)假设进程i的申请已获批准,于是修改系统状态: Available=Available-Request Allocation=Allocation+Request Need=Need-Request(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。
安全性检查 (1)设置两个工作向量Work=Available;Finish[M]=False(2)从进程集合中找到一个满足下述条件的进程, Finish [i]=False Need=Work 如找到,执行(3);否则,执行(4) (3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 Work=Work+Allocation Finish=True GO TO 2 (4)如所有的进程Finish[M]=true,则表示安全;否则系统不安全。
2.2临界资源分配模块
这个模块有如下功能:创建线程、模拟为线程分配资源。在原来的基础上设置了两个可变长数组altemp、ntemp,分别存放当前进程的已分配资源和需要的资源量。
通过比较每类资源的需要资源量和系统可用的资源量之间大小关系,判断系统是否能给进程分配资源。如果分配成功,则利用sleep函数模拟线程执行,然后释放线程利用的系统资源,执行完毕。如果分配失败,则调用sleep函数等待一段时间,再进行循环判断,直到判断出资源量能够满足进程的要求。
运行时,首先先新建一个终端,然后用gcc命令编译和链接,运行程序,
编译命令为:gcc –o process process.c –lpthread 如下
图1
创建三类资源,五个进程,并写出每个进程的已分配资源、最大需求量、系统现在可用的资源、进程执行时间。如下。
图2(已分配资源)
图3(最大需求量)
图4(系统可用资源)
图5(进程执行时间)
输出系统所有资源量,用银行家算法判断是否安全,如果安全得出安全序列,分配资源如下。
图6(执行过程)
图7(执行过程)
程序流程图
图 8
3.详细设计
我负责的是银行家算法判断是否安全,以下是我做的代码。
int main()
{
flag=0;
processtest=0;
for(temp=0;tempproNum;temp++)
{
alloctemp=allochead;
needtemp=needhead;
finishtemp=finihead;
worktemp=workhead;
for(i=0;iproNum;i++)
{
worktemp1=worktemp;
if(finishtemp-stat==0)
{
for(j=0;jsourceTyNum;j++,need
您可能关注的文档
最近下载
- 2025CSCO非小细胞肺癌诊疗指南2025.docx
- 第二节+串并联电路中电流的规律(教学课件)物理鲁科版(五四学制)2024九年级上册.pptx VIP
- 电信研发工程师L1题库.xlsx VIP
- DBJD25-67-2019 甘肃省建筑与装饰工程预算定额地区基价 不含税 中册.docx VIP
- 水生态产品价值实现路径.pptx
- 学习解读《中华人民共和国反不正当竞争法》课件(2025年新修订版).pptx VIP
- 数据架构、应用架构、业务架构及技术架构4A架构设计方案.pptx VIP
- 组合式空调机组运行调试使用及维护.pdf VIP
- 工程类邀请招标文件参考模板.doc VIP
- 电力内外线课题六 配电线路设备.ppt VIP
文档评论(0)