| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

操作系统实验报告C语言实现银行家算法

文***品

贡献于2021-07-01

字数:4933

实 验 报 告
题 目

名 称
C语言实现银行家算法

院 系

信息科学工程学院

班 级



完成时间



指导老师




次实验
成绩

组长

联系电话



邮件址

组员(姓名

学号)





程序算法编写实现运行调试

组员(姓名

学号)





实验报告完成
组员(姓名

学号)





实验报告完成
组员(姓名

学号)




























银行家算法原理:

操作系统作银行家操作系统理资源相银行家理资金进程操作系统请求分配资源相户银行家贷款
  保证资金安全银行家规定
  (1) 顾客资金需求量超银行家现资金时接纳该顾客
  (2) 顾客分期贷款贷款总数超需求量
  (3) 银行家现资金满足顾客尚需贷款数额时顾客贷款推迟支付总顾客限时间里贷款
  (4) 顾客需全部资金定限时间里资金
操作系统银行家制定规进程分配资源进程首次申请资源时测试该进程资源需求量果系统现存资源满足需求量前申请量分配资源否推迟分配进程执行中继续申请资源时先测试该进程次申请资源数否超该资源剩余总量超拒绝分配资源满足前申请量分配资源否推迟分配

参考书:

计算机操作系统第三版 西安电子科技学出版社 汤子瀛编
































































算法流程图:

附录1 银行家算法流程图

附录2 安全性算法流程图

实验步骤:

.银行家算法
进程i发出请求资源申请
(1)果Request [j](2)果:Request i[j](3)两条件满足系统试探着资源分配申请进程修改面数结构中数值:
Available[ij] Available[ij] Request [j]
Allocation[i][j] Allocation[i][j]+ Request [j]
need[i][j] need[i][j] Request [j]
(4)试分配执行安全性检查调check()函数检查次资源分配系统否处安全状态安全正式资源分配进程否次试探分配作废恢复原资源分配状态该进程等
(5)do{…}while 循环语句实现输入字符yn判断否继续进行资源申请

二.安全性检查算法(check()函数)
(1)设置两量:
工作量Work表示系统提供进程继续运行需类资源数目执行安全性算法开始时Work Available
工作量Finish表示系统否足够资源分配进程运行完成开始时先做Finish[i]false足够资源分配进程时令Finish[i]true

(2)进程中查找符合条件进程:
条件1:Finish[i]false
条件2:need[i][j]找执行步骤(3)否执行步骤(4)

(3)进程获资源利执行直完成释放出分配资源应执行:
Work[j] Work[j]+ Allocation[i][j]
Finish[i]true
goto step (2)

(4)果Finish[i]true满足表示系统处安全状态否处安全状态


程序源代码调试结果
附录3 程序源代码

附录4 程序运行调试结果


实 验 心



次实验负责程序编写方面然基础般然坚持花三天时间终程序欣慰事次实验仅银行家算法更深入理解编程力较提高希更样机会较锻炼更掌握运专业知识提高力水

次实验相c基础定难度程序方面做较少银行家算法解较透彻程序设计原理流程图方面做工作较次实验学东西知道方面足然发展方定位硬件方C语言进步学






Y
N
Y
N
Y
N
Y
N
系统初始化
输入进程数no1
输入资源类数no2
输入进程需求矩阵Max已分配矩阵Allocation利资源矩阵Available
印输出时资源分配情况表
Need[][]Max[][]Allocation[][]
输入欲申请资源进程号
输入否合法
输入该进程申请资源量
Request[]>Need[][]

继续分配(Y)
or
退出(N)
Request[]>Available[][]

预分配
调check()函数进行安全性检查
退出系统

附录 1


银行家算法流程图

附录 2
安全性算法流程图


调check()函数
work[]available[]
finish[]false
need[][]finish[]false

work[]work[]+allocation[][]
finish[]true
Y
N
进程finish[]true
Y
N
输出安全序列印出前资源分配情况
输出提示:系统安全
调结束



附录3
程序源代码:

#include
#include
#include
# define m 50

int no1 进程数
int no2 资源数
int r
int allocation[m][m]need[m][m]available[m]max[m][m]
char name1[m]name2[m] 定义全局变量
void main()
{
void check()
void print()
int ijp0q0
char c
int request[m]allocation1[m][m]need1[m][m]available1[m]
printf(**********************************************\n)
printf(* 银行家算法设计实现 *\n)
printf(**********************************************\n)
printf(请输入进程总数\n)
scanf(d&no1)
printf(请输入资源种类数\n)
scanf(d&no2)
printf(请输入Max矩阵\n)
for(i0i for(j0j scanf(d&max[i][j]) 输入已知进程资源需求量

printf(请输入Allocation矩阵\n)
for(i0i for(j0j scanf(d&allocation[i][j]) 输入已知进程已分配资源数

for(i0i for(j0j need[i][j]max[i][j]allocation[i][j] 根输入两数组计算出need矩阵值

printf(请输入Available矩阵\n)
for(i0i scanf(d&available[i]) 输入已知资源数

print() 输出已知条件
check() 检测T0时刻已知条件安全状态

if(r1) 果安全执行代码
{
do{
q0
p0
printf(\n请输入请求资源进程号(0~4):\n)
for(j0j<10j++)
{
scanf(d&i)
if(i>no1)
{
printf(输入错误请重新输入:\n)
continue
}
else break
}
printf(\n请输入该进程请求资源数request[j]\n)
for(j0j scanf(d&request[j])
for(j0j if(request[j]>need[i][j]) p1
判断请求否超该进程需资源数
if(p)
printf(请求资源超该进程资源需求量请求失败\n)
else
{
for(j0j if(request[j]>available[j]) q1
判断请求否超资源数
if(q)
printf(没做够资源分配请求失败\n)

else 请求满足条件
{
for(j0j {
available1[j]available[j]
allocation1[i][j]allocation[i][j]
need1[i][j]need[i][j]
保存原已分配资源数需资源数资源数

available[j]available[j]request[j]
allocation[i][j]+request[j]
need[i][j]need[i][j]request[j]
系统尝试资源分配请求进程
}
print()
check() 检测分配安全性
if(r0) 果分配系统安全
{
for(j0j {
available[j]available1[j]
allocation[i][j]allocation1[i][j]
need[i][j]need1[i][j]
原已分配资源数需资源数资源数
}
printf(返回分配前资源数\n)
print()
}
}
}printf(\n继续分配?Y or N \n)
判断否继续进行资源分配
cgetche()
}while(c'y'||c'Y')
}

}

void check() 安全算法函数
{
int kfv0ij
int work[m]a[m]
bool finish[m]
r1
for(i0i finish[i]false 初始化进程均没足够资源数完成
for(i0i work[i]available[i]work[i]表示提供进程继续运行类资源数
kno1
do{
for(i0i {
if(finish[i]false)
{
f1
for(j0j if(need[i][j]>work[j])
f0
if(f1) 找没完成需求数提供进程继续运行资源数进程
{
finish[i]true
a[v++]i 记录安全序列号
for(j0j work[j]+allocation[i][j] 释放该进程已分配资源
}
}
}
k 完成进程分配未完成进程数减1
}while(k>0)
f1
for(i0i {
if(finish[i]false)
{
f0
break
}
}
if(f0) 进程没完成安全状态
{
printf(系统处安全状态)
r0
}
else
{
printf(\n系统前安全状态安全序列:\n)
for(i0i printf(pd a[i]) 输出安全序列
}

}

void print() 输出函数
{
int ij
printf(\n)
printf(*************时刻资源分配情况*********************\n)
printf(进程名号 | Max | Allocation | Need |\n)
for (i 0 i < no1 i++)
{
printf( pdd ii)

for (j 0 j < no2 j++)
{printf(d max[i][j])}

for (j 0 j < no2 j++)
{printf( d allocation[i][j])}

for (j 0 j < no2 j++)
{printf( d need[i][j])}

printf(\n)
}
printf(\n)
printf(类资源利资源数)
for (j 0 j < no2 j++)
{printf( davailable[j])}
printf(\n)
}


(程序结束)













附录 4
程序运行调试结果:

1 程序初始化





2检测系统资源分配否安全结果










文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

操作系统课程设计银行家算法的模拟实现

操作系统课程设计报告专业计算机科学与技术学生姓名班级学号指导教师完成日期信息工程学院题目: 银行家算法的模拟实现 一、设计目的本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。

文***品 3年前 上传685   0

操作系统课程设计银行家算法报告

《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级:计科班 专 业:计算机科学与技术 指导教师: 时 间: 2009 XX大学 计

文***品 3年前 上传618   0

《操作系统 银行家算法》课程设计报告

《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级: 计科班 专 业:计算机科学与技术 XX大学 计算机科学与信息学院目 录1 课程设计目的 ………………………………………

文***品 3年前 上传810   0

银行家算法《操作系统》课程设计报告

《操作系统》课程设计报告课题: 银行家算法 专业计算机科学与技术学生姓名班级计算机学号指导教师信息工程学院一、实验要求和实验目的实验目的:本课程设计是学生学习完《操作系统原理》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统

文***享 3年前 上传697   0

c语言实验报告

c语言实验报告  学号:__________    姓名:__________    班级:__________    日期:__________   指导教师:__________    成绩:__________  实验一  上机操作初步和简单的C程序设计  一、 实验目的  1、熟悉C语言运行环境Turbo C++3.0  2、会简单的程序调试  3、熟悉C语言

极***速 11年前 上传793   0

C语言实验报告《指针》

C语言实验报告《指针》  学号:__________    姓名:__________    班级:__________    日期:__________   指导教师:__________    成绩:__________  实验五  指针  一、 实验目的  1、掌握指针的概念、会定义和使用指针变量  2、掌握指向数组的指针变量  3、掌握字符串指针的使用  

D***1 11年前 上传955   0

C语言实验报告《数组》

C语言实验报告《数组》  学号:__________    姓名:__________    班级:__________    日期:__________  指导教师:__________    成绩:__________  实验三  数组  一、 实验目的  1、掌握一维和二维数组的定义、赋值和输入输出  2、掌握字符数组和字符串数组的使用  3、掌握与数组有关的排

我***海 11年前 上传883   0

操作系统课程设计编程序模拟银行家算法

课程设计报告书 课程名称: 操作系统原理 题 目: 编程序模拟银行家算法 系 名: 信息工程系 专业班级: 软件 姓 名: 学 号:

文***品 3年前 上传726   0

进程调度算法的实现计算机操作系统课程设计

题目2 进程调度算法的实现2.1 题目的主要研究内容及预期达到的目标(1)设计进程控制块; (2)设计多个进程队列; (3)设计多个进程(≥20); (4)动态生成时间片、执行时间和优先级,将这些信息输出至文件中; (5)设计基于时间片的多优先级调度算法; (6)动态调度,并把所有调度信息输出至文件中。(7)理解进程调度相关理论;(8)掌握时间片调度原理;(9)掌握高优先级

文***品 3年前 上传584   0

操作系统实验三磁盘调度算法的实现

XX大学计算机与通信工程学院实验报告2013 至 2014 学年 第 一 学期课程名称操作系统学号 学生姓名 年级 专业 教学班号 实验地点 实验时间 2013年 月 日 第 节 至 月 日 第 节主讲教师 辅导教师 实验( 三 )实验名称磁盘调度算法的

文***享 3年前 上传479   0

C语言实验报告《函数》

C语言实验报告《函数》  学号:__________    姓名:__________    班级:__________    日期:__________  指导教师:__________    成绩:__________  实验四  函数  一、 实验目的  1、掌握函数定义、调用和声明的方法  2、掌握实参和形参之间的传递方式  3、函数的嵌套调用  二、 实

t***g 12年前 上传1360   0

C语言程序设计实验报告

C语言程序设计实验报告  实验名称 计算出1000以内10个最大素数之和   实验目的   1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。  2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循

大***6 10年前 上传954   0

C语言实验报告《综合实验》

C语言实验报告《综合实验》  学号:__________    姓名:__________    班级:__________    日期:__________  指导教师:__________    成绩:__________  实验六  综合实验  一、 实验目的  1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。  2、掌握C程序的结构化程序设计方法,能

q***u 10年前 上传868   0

操作系统实验(进程调度+存储管理+磁盘调度++银行家算法+文件系统设计)

操作系统实验(进程调度+存储管理+磁盘调度++银行家算法+文件系统设计)实验三 进程调度一、 实验目的多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。因而引起进程调度。本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。二、 实验要求1. 设计进程调度算法,进程数不定2. 包含几种调度算法,并加以实现3. 输出进程的调度

文***享 3年前 上传642   0

2021年c语言实验报告分析总结

 2021年c语言实验报告分析总结撰写人:___________日 期:___________2021年c语言实验报告分析总结在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这

k***8 3年前 上传556   0

铜陵学院C语言程序设计实验报告

《C语言程序设计》 实验报告第二学期班 级 学 号姓 名指导教师实验一 Visual C++ 6.0编程环境与C语言程序的调试过程一、实验学时2 学时。二、实验目的1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序;2.通过运行简单的C程序,初步了解C源程序的特点。三、预习

文***享 1年前 上传252   0

C语言实验报告《逻辑结构程序设计》

C语言实验报告《逻辑结构程序设计》  学号:__________    姓名:__________    班级:__________    日期:__________   指导教师:__________    成绩:__________  实验二  逻辑结构程序设计  一、 实验目的  1、学会正确使用逻辑运算符和逻辑表达式  2、熟练掌握if语句和switch语句 

s***0 12年前 上传741   0

查找算法的程序实现「学生版」

查找算法的程序实现【学生版】【例1】 在数组元素a(1)到a(8)中查找键值为key的数,其顺序查找的VB程序段如下,请在划线处填写正确的语句。for i=1 to 8if ①        then   Text1.text=str(i)  exit forend ifnext iif ②        then text1.text=″在数组中没有找到″+str(key)

文***7 2年前 上传510   0

操作系统进程管理实验报告

操作系统进程管理实验报告实验一 进程管理1.实验目的:(1)加深对进程概念的理解,明确进程和程序的区别;(2)进一步认识并发执行的实质;(3)分析进程争用资源的现象,学习解决进程互斥的方法;(4)了解Linux系统中进程通信的基本原理。2.实验预备内容(1)阅读Linux的sched.h源码文件,加深对进程管理概念的理解;(2)阅读Linux的fork()源码文件,分析进程的

文***享 1年前 上传360   0

操作系统实验四主存空间的分配与回收首次适应算法和循环首次适应算法

实验报告【实验名称】 首次适应算法和循环首次适应算法 【实验目的】理解在连续分区动态的存储管理方式下,如何实现主存空间的分配与回收。【实验原理】首次适应(first fit,FF)算法FF算法要求空闲分区链以地址递增的次序链接。在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区即可。然后再按照作业的大小,从该分区中划出一块内存空间,分配给请求者,

文***品 3年前 上传1047   0

C语言代码大全

 乘法口诀表 #include <stdio.h> #include <conio.h> void main(void) { int i,j,x,y; clrscr(); printf(“\n\n * * * 乘法口诀表 * * * \n\n“); x=9; y=5; for(i=1;i<=9;i++) { gotoxy(x,y); printf(“%2d “,i);

山***1 5年前 上传1760   0

操作系统 七次实验报告 常用页面置换算法模拟实验

操作系统课程第七次实验报告姓名学号系计算机任课教师指导教师评阅教师实验地点 综合楼B102 实验时间2012-9-26实验课表现出勤和个人表现Q1(15+15(组长评分)=30分)得分:实验总分(Q1+Q2+Q3+Q4)实验完成情况Q2(45分(组长与教师评分的加权平均))得分:实验编号与实验名称:实验七、常用页面置换算法模拟

文***品 3年前 上传743   0

查找算法的程序实现「教师版」

查找算法的程序实现【教师版】【例1】 在数组元素a(1)到a(8)中查找键值为key的数,其顺序查找的VB程序段如下,请在划线处填写正确的语句。for i=1 to 8if ①        then   Text1.text=str(i)  exit forend ifnext iif ②        then text1.text=″在数组中没有找到″+str(key)

文***7 2年前 上传419   0

—基于机器学习的人脸识别算法的设计与实现

人脸识别技术是一种新型的生物特征认证技术。人脸识别技术也是一个非常活跃的研究领域,涵盖了许多领域,例如数字图像处理。随着人们对应用程序需求的增长,面部识别技术趋向于大量使用,使用微芯片和标准化。

平***苏 3年前 上传829   0

大数据处理算法研究与实现

因为要适应不同的人的上网要求,提供一些企业的一些网络地址,是网上比较重要的一部分、成套动力设备中起主要作用的机器、寄件系统、系统控制在内的完整的网络平台服务。我们有一个自己的平台,现如今数据发展越来越快速了,而且在很多领域也发生了根本的变化。近年来,中

王***朝 4年前 上传861   0