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

热门搜索

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

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

文***品

贡献于2020-12-12

字数:9535



操作系统银行家算法

课程设计报告




姓 名:
学 号:
班 级: 计科班
专 业:计算机科学技术




XX学 计算机科学信息学院



目 录



1 课程设计目 …………………………………………………… 1
2 课程设计求 ………………………………………………… 1
3 课程设计题目描述 ……………………………………………… 2
4 课程设计银行家算法原理 …………………………………… 2
5 源程序结构分析代码实现 …………………………………… 4
6 课程设计总结 …………………………………………………… 25
课程设计目
操作系统计算机系统核心系统软件负责控制理整系统资源组织户协调资源计算机高效工作操作系统课程设计操作系统理课必补充复检验学课程重手段课程设计目综合应学生学知识通实验环节加深学生操作系统基原理工作程理解提高学生独立分析问题解决问题力增强学生动手力
二课程设计求
1.分析设计容出解决方案(说明设计实现原理采数结构)
2.画出程序基结构框图流程图
3.程序部分详细设计分析说明
4.源代码格式规范
5.设计合适测试例运行结果分析
6.设计中遇问题设计心体会
7.期提交完整程序代码执行程序课程设计报告


三课程设计题目描述
银行家算法种代表性避免死锁算法
  解释银行家算法必须先解释操作系统安全状态安全状态
  安全状态:果存系统中进程构成安全序列P1…Pn系统处安全状态安全状态定没死锁发生
  安全状态存安全序列安全状态定导致死锁
  什安全序列呢?
  安全序列:进程序列{P1…Pn}安全果进程Pi(1≤i≤n)尚需资源量超系统前剩余资源量进程Pj (j < i )前占资源量
  银行家算法:
  操作系统作银行家操作系统理资源相银行家理资金进程操作系统请求分配资源相户银行家贷款操作系统银行家制定规进程分配资源进程首次申请资源时测试该进程资源需求量果系统现存资源满足需求量前申请量分配资源否推迟分配进程执行中继续申请资源时先测试该进程已占资源数次申请资源数否超该进程资源需求量超拒绝分配资源没超测试系统现存资源否满足该进程尚需资源量满足前申请量分配资源否推迟分配

四 课程设计银行家算法原理
1.银行家算法思路
先户提出请求进行合法性检查检查请求需否利请求合法进行试分配试分配状态调安全性检查算法进行安全性检查安全分配否分配恢复原状态拒绝申请

2.银行家算法中数结构
利资源量 int Available[j] j资源种类
需求矩阵 int Max[i][j] i进程数量
分配矩阵 int Allocation[i][j]
需求矩阵 int need[i][j] Max[i][j] Allocation[i][j]
申请类资源数量 int Request i[j] i进程申请j资源数量
工作量 int Work[x] int Finish[y]

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

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

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

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

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



五源程序结构分析代码实现

1.程序结构

程序五部分:

(1) 初始化chushihua():程序开始进行初始化输入数:进程数量资源种类种资源利数量进程种资源已分配数量进程类资源需求数等
(2)前安全性检查safe():判断前状态安全性根方调提示处理
(3)银行家算法bank():进行银行家算法模拟实现模块调模块进行银行家算法模拟程
(4)显示前状态show():显示前资源分配详细情况包括:种资源总数量(all)系统目前种资源数量进程已资源数量进程需资源量
(5)程序main()
逐调初始化显示状态安全性检查银行家算法函数程序序进行

2.数结构
程序全局变量:
const int x10y10 定义常量
int Available[x] 种资源利数量
int Allocation[y][y] 进程前已分配资源数量
int Max[y][y] 进程类资源需求数
int Need[y][y] 需求矩阵
int Request[x] 申请类资源数量
int Work[x] 工作量表系统提供进程运行需类资源数量
int Finish[y] 表系统否足够资源分配进程0否1
int p[y] 存储安全序列
int ij 全局变量循环语句中
int nm n进程数量m资源种类数
int l0counter0

3.函数声明
void chushihua()   系统初始化函数
void safe()  安全性算法函数
void bank() 银行家算法函数
void show ()  输出前资源分配情况

4.函数main()
int main()
{
cout<<…… 显示程序开始提示信息
chushihua() 初始化函数调
cout< showdata() 输出初始化状态
判断前状态安全性
safe() 安全性算法函数调
if (l cout<<\n前状态安全法申请程序退出< cout< system(pause)
sign() 调签名函数
return 0 break
}
else{
int i 局部变量
l0
cout<<\n安全状态< cout<<安全序列
cout< for (i1 i cout<<>><<进程<<(< }
for (i0 i cout< }
bank() 银行家算法函数调
return 0
}

5 操作系统银行家算法流程图:
初始化函数chushihua()开始

AVAILABLE[[i]REQUEST[i]
ALLOCATION[i]+REQUEST[i]
NEED[i]REQUEST[i]



输入进程数量



输入资源种类数


输入资源前资源数



输入进程前已分配资源数


输入进程类资源需求

输出提示:输入误请重新输入





初始化函数chushihua()结束银行家函数 Bank()




提出请求REQUEST[i]



Error
REQUEST[i]



REQUEST[i]
Error






Safe()
输出提示:请求拒




AVAILABLE[i]REQUEST[i]ALLOCATION[i]REQUEST[i]
NEED[i]+REQUEST[i]
输出提示:意分配请求



否进行次分配



退出程序银行家算法Bank()结束



安全性算法Safe()开始



WorkAVAILABLE
FINISHfalse


NEED[i]





Work+ALLOCATION[i]
FINISH[i]ture



进程FINISHture
输出提示:系统安全





安全输出安全序列
Return ture




安全算法safe()结束







2 源程序代码:
#include
#include
#include
using namespace std
#define TRUE 1 定义 TRUE 1
#define FALSE 0 定义 FLASE0
void bank(vectorvector >vector >int int ) 声明bank(应行家算法)
int safe(vector Availablevector > Needvector > Allocationint nint m)声明safe()安全性算法
void init()
*************************************函数main()**************************************************************
void main()
{
init()
int safe(vector Availablevector > Needvector > Allocationint nint m)
}
**************************************初始化函数init()*********************************************************
void init()
{
int m m资源类数
int n 进程数
cout<<输入资源类数< cin>>m
vector Available(m) 动态申请数组Available资源量
cout<<输入类资源总数< ************************************************************************
* 面刚掉DOS输入资源量*
*未刚掉Availabletxt文件中读入数*
************************************************************************
*
for (int i0i {
cout<<输入R< cin>>Available[i]
}
*
FILE *fp
fpfopen(Availabletxtr+)
cout< for(int i0i {
fscanf(fpd&Available[i])
cout< }
fclose(fp)
cout<<\n输入进程数< cin>>n
vector > Max(n vector(m))
************************************************************************
* 面刚掉DOS输入资源量*
*未刚掉Maxtxt文件中读入数*
************************************************************************
*
for ( i0i {
cout<<输入进程< for (int j0j {
cout<< 输入需R< cin>>Max[i][j]
while (Max[i][j]>Available[j])
{
cout< cin>>Max[i][j]
}
}
}*
fpfopen(Maxtxtr+)
cout< for(i0i {
for (int j0j {
fscanf(fpd&Max[i][j])
cout< }
cout< }
fclose(fp)
cout<<输入已分配Allocation< vector > Allocation(n vector(m))
vector > Need(n vector(m))
************************************************************************
* 面刚掉DOS输入资源量*
*未刚掉Allocationtxt文件中读入数*
************************************************************************
*
for ( i0i {
cout<<输入进程< for (int j0j {
cout<< 输入分配R< cin>>Allocation[i][j]
while(Allocation[i][j]>Max[i][j])
{
cout< cin>>Allocation[i][j]
}
Need[i][j]Max[i][j]Allocation[i][j]
Available[j] Available[j]Allocation[i][j]
}
}*
fpfopen(Allocationtxtr+)
cout<
for(i0i {
for (int j0j {
fscanf(fpd&Allocation[i][j])
Need[i][j]Max[i][j]Allocation[i][j] 初始化Max时时初始化Need数组
Available[j] Available[j]Allocation[i][j] 初始化Max时时修改Available数组
cout< }
cout<
}
fclose(fp)
int safe(vector Availablevector > Needvector > Allocationint nint m)
cout<<状态安全<
bank(AvailableNeedAllocationnm)调银行家算法bank()函数
}

**************************************银行家算法bank()函数*********************************************************
void bank(vector Availablevector > Needvector > Allocationint nint m)
{
vector Request(m)
int all0
定义变量all果all0表示进程已运行完果all>1表示进程没运行完
for (int i0i for(int j0j all +Need[i][j]
if (0all)
{
cout<<进程已运行完结束< exit(0)
}
int jc选进程
char again
all0重新初始化all
while (1)
{
while (all0)
{
all0
果all0表示进程已运行完果all>1表示进程没运行完
循环直all>0找未运行完进程
cout<<选进程作前进程0< cin>>jc
for (int j0j {
all + Need[jc][j]
}
if (0all)
{
cout<<进程已运行重新输入< }
}
cout<<输入该进程请求量< for (i0i {
cin>>Request[i]
while(Request[i]>Need[jc][i]||Request[i]>Available[i])
{

cout<<请求量法满足< break

}

}

系统试探着资源分配该进程
for (i0i {
Available[i]Available[i]Request[i]
Allocation[jc][i]Allocation[jc][i]+Request[i]
Need[jc][i]Need[jc][i]Request[i]
}
int bb0
bbsafe(AvailableNeedAllocationnm)调安全性算法判断次资源分配系统否处安全状态
if (1bb)
{
cout<<系统成功分配资源< }
else
{
cout<<系统未成分配资源收回预分配资源< for (i0i {
Available[i]Available[i]+Request[i]
Allocation[jc][i]Allocation[jc][i]Request[i]
Need[jc][i]Need[jc][i]+Request[i]
}
}
cout<<您想次请求分配请yY否请键< cin>>again
if(again'y'||again'Y')
{
all0
continue
}
break
}
}
**************************************安全性算法safe()函数*********************************************************
int safe(vector Availablevector > Needvector > Allocationint nint m)
{
vector Work(m)Finish(n)申请工作量workfinish
WorkAvailable
vector count(n) 记录安全序列
int len1 记录安全序列进程数果lenn表示finishitrue处安全状态
for(int i0i for (i0i {
int needed1
for (int j0j {
if(Need[i][j] {
neededneeded*TRUE
}
else neededneeded*FALSE
}
if ((Finish[i]FALSE)&&needed1)
{
for (j0j {
Work[j]Work[j]+Allocation[i][j]
}
Finish[i]TRUE
lenlen+1
count[len]i
i1
}
}
if (lenn1)
{
cout<<系统安全< cout<<安全序列< for (i0i {
cout< if (ilen)
{
cout<<>
}
}
cout< return TRUE
}
else
{
cout<<系统安全<运行结果:
1 初始化结果

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








六课程设计总结
操作系统基特征发享系统允许进程发执行享系统软硬件资源限度利计算机系统资源操作系统应采动态分配策略样容易资源足分配引起死锁次课程设计银行家算法避免死锁银行家算法分配资源程分配序列会产生死锁算法中心思想:该法分配资源时次分配总存着进程果单独运行必然获需全部资源说结束结束类资源满足申请者需
次程序面思路展开时间仓促课程设计存着足:实现发操作总资源时满足进程需资源数时进程时进行进程序执行二扫描进程序单进程序(编号)扫描产生安全序序基础产生实安全序三进程数资源数进行数量进行限制十四运行程序界面较差进程数需资源数已分配资源数资源数目然
次课程设计时间说仓促点然学实性知识更深解算法C语言进行复程中知识点记感谢程中帮助老师学
感悟:亲动手学知识
次感谢帮助老师学






文档香网(httpswwwxiangdangnet)户传

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

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

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

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

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

购买文档

相关文档

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

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

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

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

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

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

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

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

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

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

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

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

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

实 验 报 告题 目名 称C语言实现银行家算法院 系信息科学与工程学院班 级完成时间指导老师本次实验成绩组长联系电话邮件地址组员(姓名,学号)主要任务程序算法的编写、实现、运行调试组员(姓名,学号)主要任务实验报告的完成组员(姓名,学号)主要任务实验报告的完成

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

合工大页面置换算法操作系统课程设计报告

计算机与信息学院《操作系统综合设计》报告设计题目:页面置换算法学生姓名:学 号:专业班级:计算机科学与技术班2015 年 X月一、设计题目 3二、开发环境与工具 3三、设计原理 31.最佳(Optimal)置换算法 32.先进先出(FIFO)页面置换算法 43.最近最久未使

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

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

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

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

操作系统课程设计磁盘调度算法

操作系统课程设计磁盘调度算法目 录1 课程设计目的及要求……………………………………………………12 相关知识…………………………………………………………………13 题目分析…………………………………………………………………24 概要设计…………………………………………………………………2 4.1 先来先服务(FCFS)的设计思想………

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

操作系统课程设计磁盘调度算法

《计算操作系统》课程设计报告 姓名: 班级:软件 学号: 指导老师:

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

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

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

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

驱动程序实验报告操作系统课程设计报告

操作系统课程设计报告班级: 计科 姓名: 学号: 老师: 时间:2012年X月X日一、设计目的操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。本课程设计的目的综合应用学生所学

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

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

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

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

数据结构和算法课程设计题目

XX大学课程设计课程名称: 数 据 结 构 与 算 法院(部)名 称: 信息与计算科学学院组长姓名学号 同组人员姓名指导教师姓名: 设 计 时 间: 2010.6.7----2009.6.27一、《数据结构与算法》课程设计参考题目(一)参考题目一(每位同学选作一个,同组人员

文***品 11个月前 上传380   0

操作系统课程设计报告树型目录文件系统

操作系统课程设计报告题目:树型目录文件系统 学 院 计算机学院 专 业 网络工程 年级班别 班 学 号 学生姓名 指导教师

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

哲学家进餐问题操作系统课程设计报告

XX学院 《操作系统》课程设计报告题 目: 哲学家进餐问题 班 级: 学 号: 作者姓名: 指导教师: 2011年X月X日目 录1.

z***u 2年前 上传777   0

数据结构课程设计报告最小生成树Kruskal算法

计算机科学与技术系课程设计报告 2014-2015学年第二学期课程数据结构课程设计名称Kruskal算法求最小生成树学生姓名 学号 专业班级 软件工程指导教师 2014年X月题目:设计程序完成如下功能:对给定过的网和起点,用kruskal算法的基本思想求解其所有的最小生成树1、问题分析和任务定义根据课设题目要求,拟将整体程序分为三大模块

文***品 1年前 上传206   0

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

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

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

操作系统课程设计动态分区分配存储管理

操作系统课程设计设计题目 动态分区分配存储管理学生姓名号学 号指导教师专业班级计算机班 第一章 课程设计概述1.1 设计任务:动态分区分配存储管理1.2 设计要求建立描述内存分配状况的数据结构;l建立描述进程的数据结构;l使用两种方式产生进程:(a)自动产生, (b)手工输入;l 在屏幕上显示内存的分配状况、每个进程的执行情况

文***品 2年前 上传422   0

算法与数据结构的商品货架管理课程设计报告(还有程序源代码)

课程设计课 程: 算法与数据结构 题 目: 商品货架管理 专 业: 计算机类 班 级: 座 号: 姓 名: 2012年 X月 X 日一、要解决的问题商店货架以栈

文***品 1年前 上传322   0

生产者与消费者算法模拟课程设计

课程设计说明书题目: 生产者与消费者算法模拟 院 系: 计算机科学与工程 专业班级: 信息安全(xxxx)班 学 号: 学生姓名: xxxx 指导教师: xxxx 2013年 xx月 xx 日 xxxx大学课程设计

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

操作系统实习报告样本

操作系统实习报告样本  1 操作系统实习报告内容(1)    基本信息:完成人姓名、学号、报告日期(2)    实习内容(3)    实习目的(4)    实习题目(5)    设计思路和流程图(6)    主要数据结构及其说明(7)    源程序并附上注释(8)    程序运行时的初值和运行结果(9)    实习体会:实习中遇到的问题及解决过程、实习中产生的错误及原因分析、实习的体会及收获

q***9 9年前 上传573   0

操作系统实践报告

学 号: 实践课设计报告课程名称计算机操作系统题 目模拟设计存储管理的分配与回收学 院计算机科学与技术学院专 业计算机科学与技术班 级姓 名指导教师年月日模拟设计存储管理的分配与回收一、 需求分析 本次实验主要是要求实现动态的页式存储管理。根据本次实验的要求,可以分析出本次实验需要实现

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

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

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

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

密度聚类算法报告

密度聚类算法报告1. 摘要聚类分析是数据挖掘的重要方法。该文阐述了基于密度聚类分析的基本概念及其经典的算法思想,并提出了一种基于核心点进行聚类的算法。该算法首先对点进行分类,分出核心点、边界点和噪音点。然后采用自下而上的方式对簇进行合并。对所有数据进行分类并合并标记后,给出最后结果图。算法保证了数据处理的完整性。2. 密度聚类的相关概念对于构成簇的每个对象,其Eps邻域包含的对象个数必须

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

首次适应算法最佳适应算法

姓名:学号:实验名称:进程调度模拟实验 实验目的:了解动态分区存储管理方式中的数据结构和分配算法,加深对动态分区存储管理方式及其实现技术的理解。实验内容:#include<iostream.h>#include <malloc.h>typedef struct Spare{ int SA; int size;}spare;void init(spare *S,in

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