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

热门搜索

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

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

文***品

贡献于2020-12-03

字数:9878








操作系统


课程设计报告







专业
计算机科学技术
学生姓名

班级

学号

指导教师

完成日期




信息工程学院
题目: 银行家算法模拟实现
设计目
课程设计学完操作系统原理课程进行次全面综合训练通课程设计更掌握操作系统原理实现方法加深操作系统基础理重算法理解加强学生动手力
二设计容
1)概述
CC++语言编制银行家算法通程序检测状态系统安全性
1 算法介绍:数结构:
1) 利资源量 Available
2) 需求矩阵Max
3) 分配矩阵Allocation
4) 需求矩阵Need
2 功介绍
模拟实现Dijkstra银行家算法避免死锁出现分两部分组成:
第部分:银行家算法(扫描)
第二部分:安全性算法
2)设计原理
.银行家算法基概念
1死锁概念
道程序系统中助进程发执行改善系统资源利率提高系统吞吐量发生种危险━━死锁谓死锁(Deadlock)指进程运行中争夺资源造成种僵局(Deadly_Embrace)进程处种僵持状态时外力作法前推进组进程中进程限等该组进程中进程占资源永远法资源种现象称进程死锁组进程称死锁进程
2关死锁结:
Ø 参死锁进程少两
Ø (两进程会出现死锁)
Ø 参死锁进程少两已占资源
Ø 参死锁进程等资源
Ø 参死锁进程前系统中进程子集

注:果死锁发生会浪费量系统资源甚导致系统崩溃
3资源分类
永久性资源:
进程次(资源)
l 抢占资源
l 抢占资源
时性资源:次资源信号量中断信号步信号等(消耗性资源)
      申请分配释放模式

4产生死锁四必条件:互斥(资源独占)强占(剥夺)请求保持(部分分配占申请)循环等
1) 互斥(资源独占)
资源次进程
2) 强占(剥夺)
资源申请者强行资源占者手中夺取资源资源占者愿释放
3) 请求保持(部分分配占申请)
进程申请新资源时保持原资源占(样动态申请动态分配)
4) 循环等
存进程等队列
{P1 P2 … Pn}
中P1等P2占资源P2等P3占资源…Pn等P1占资源形成进程等环路
5死锁预防
定义系统设计时确定资源分配算法保证发生死锁具体做法破坏产生死锁四必条件
①破坏剥夺条件
允许进程动态申请资源前提规定进程申请新资源立满足变等状态前必须释放已占全部资源需重新申请
②破坏请求保持条件
求进程运行前必须次性申请求资源仅该进程资源均满足时予次性分配
③破坏循环等条件
采资源序分配法:
系统中资源编号进程申请资源时必须严格资源编号递增次序进行否操作系统予分配
6.安全状态安全状态
安全状态:
果存系统中进程构成安全序列P1…Pn系统处安全状态进程序列{P1…Pn}安全果进程Pi(1≤i≤n)尚需资源量超系统前剩余资源量进程Pj (j < i )前占资源量系统处安全状态 (安全状态定没死锁发生)
安全状态存安全序列安全状态定导致死锁
二.银行家算法
1银行家算法中数结构
1)利资源量Available
含m元素数组中元素代表类利资源数目初始值系统中配置该类全部资源数目数值该类资源分配回收动态改变果Available[j]K表示系统中现Rj类资源K
2)需求短阵Max
—n×m矩阵定义系统中n进程中进程m类资源需求果Max(ij)=K表示进程i需Rj类资源数目K
3)分配短阵Allocation
n×m矩阵定义系统中类资源前已分配进程资源数果Allocation(ij)=K表示进程i前已分Rj类资源数目K
4)需求矩阵Need
n×m矩阵表示进程尚需类资源数果Need[ij]K表示进程i需Rj类资源k方完成务
述三矩阵间存述关系:
Need[ij]Max[ij]Allocation[ij]
2银行家算法
设Requesti进程Pi请求量果Requesti[j]=k表示进程需kRj类型资源Pi发出资源请求系统述步骤进行检查:
1)果 Requesti[j]2)果Requesti[j]3)系统试探求资源分配进程Pi修改面数结构中数值:
Available[j]Available[j]Requesti[j]
Allocation[ij]Allocation[ij]+Requesti[j]
Need[ij]Need[ij]Requesti[j]
4)系统执行安全性算法检查次资源分配系统否处安全状态安全正式资源分配进程Pi完成次分配否试探分配作废恢复原资源分配状态进程Pi等
3安全性算法
系统执行安全性算法描述:
1)设置两量
①工作量Work表示系统提供进程继续运行需类资源数目含m元素执行安全算法开始时Work Available
②Finish表示系统否足够资源分配进程运行完成开始时先做Finish[i]false 足够资源分配进程时令 Finish[i]true
2)进程集合中找满足述条件进程:
①Finish[i]false ②Need[ij]3)进程Pi获资源利执行直完成释放出分配资源应执行:
Work[j]Work[i]+Allocation[ij]
Finish[i]true
goto step 2
4)果进程Finish[i]true表示系统处安全状态否系统处安全状态
三.银行家算法例
假定系统中五进程:{P0P1P2P3P4}三种类型资源{ABC}种资源数量分1057T0时刻资源分配情况图1示





资源情况
进程
Max
Allocation
Need
Available
A B C
A B C
A B C
A B C
P0
7 5 3
0 1 0
7 4 3
3 3 2
(2 3 0)
P1
3 2 2
2 0 0
(3 0 2)
1 2 2
(0 2 0)
P2
9 0 2
3 0 2
6 0 0
P3
2 2 2
2 1 1
0 1 1
P4
4 3 3
0 0 2
4 3 1
图1 T0时刻资源分配表
(1)T0时刻安全性:利安全性算法T0时刻资源分配情况进行分析(图2)知T0时刻存着安全序列{P1P3P4P2P0}系统安全
资源情况
进程
Work
Need
Allocation
Work+Allocation
Finish
A B C
A B C
A B C
A B C
P1
3 3 2
1 2 2
2 0 0
5 3 2
true
true
true
true
true
P3
5 3 2
0 1 1
2 1 1
7 4 3
P4
7 4 3
4 3 1
0 0 2
7 4 5
P2
7 4 5
6 0 0
3 0 2
10 4 7
P0
10 4 7
7 4 3
0 1 0
10 5 7
图2 T0时刻安全序列
(2)P1请求资源:P1发出请求量Request1(102)系统银行家算法进行检查:
①Request1(102) ②Request1(102) ③系统先假定P1分配资源修改AvailableAllocation1Need1量形成资源变化情况图1中圆括号示
④利安全性算法检查时系统否安全图3示
资源情况
进程
Work
Need
Allocation
Work+Allocation
Finish
A B C
A B C
A B C
A B C
P1
2 3 0
0 2 0
3 0 2
5 3 2
true
true
true
true
true
P3
5 3 2
0 1 1
2 1 1
7 4 3
P4
7 4 3
4 3 1
0 0 2
7 4 5
P0
7 4 5
7 4 3
0 1 0
7 5 5
P2
7 5 5
6 0 0
3 0 2
10 5 7
图3 P1申请资源时安全性检查
进行安全性检查知找安全序列{P1P3P4P2P0}系统安全立P1申请资源分配
(3)P4请求资源:P4发出请求量Request4(330)系统银行家算法进行检查:
①Request4(330)≤Need4(431)
②Request4(330)等Available(230)P4等
(4)P0请求资源:P0发出请求量Request0(020)系统银行家算法进行检查
①Request0(020) ≤Need0(743)
②Request0(020) ≤Available(230)
③系统暂时先假定P0分配资源修改关数图4示
资源情况
进程
Allocation
Need
Available
A B C
A B C
A B C
P0
0 3 0
7 3 2
2 1 0
P1
3 0 2
0 2 0
P2
3 0 2
6 0 0
P3
2 1 1
0 1 1
P4
0 0 2
4 3 2
图4 P0分配资源关资源数
(5)进行安全性检查:资源Available(210)已满足进程需系统进入安全状态时系统分配资源
3)详细设计编码
1)银行家算法流程图

2)程序源代码
#include
#include
#include
#include
定义全局变量
const int x20y20 常量便修改
int Available[x] 资源利数量
int Allocation[y][y] 进程前已分配资源数量
int Max[y][y] 进程类资源需求数
int Need[y][y] 尚需少资源
int Request[x] 申请少资源
int Work[x] 工作量表示系统提供进程继续运行需类资源数量
int Finish[y] 表示系统否足够资源分配进程1
int p[y] 存储安全序列
int ij i表示进程j表示资源
int nm n进程i数量m资源j种类数
int l0 l记录进程Finish[i]1ln说明系统状态安全
int counter0

函数声明
void chushihua() 初始化函数
void safe() 安全性算法
void show() 函数show输出前状态
void bank() 银行家算法
void jieshu() 结束函数

void chushihua()
{
cout<<输入进程数量 开始输入关数
cin>>n
cout<<输入资源种类数
cin>>m
cout< for (j0 j {
cout<<输入资源 < cin>>Available[j] 输入数字程
Work[j]Available[j] 初始化Work[j]初始值前资源数
}
cout< for (i0 i {
for (j0 j {
cout<< 输入进程 < cin>>Allocation[i][j]
}
cout< Finish[i]0初始化Finish[i]
}
cout< for (i0 i {
for (j0 j {
cout<< 输入进程 < cin>>Max[i][j]
if(Max[i][j]>Allocation[i][j]) 需求已分配计算需求量
Need[i][j] Max[i][j]Allocation[i][j]
else
Need[i][j]0Max已分配时候类资源已足够需申请
}
cout< }
cout<}

安全性算法函数
void safe()
{
l0
for (i0 i { i++
if (Finish[i]0)
{ 逐查找Finish[i]0进程 条件
counter0 记数器
for (j0 j {
if (Work[j]>Need[i][j]) countercounter+1需求记数
}
if(counterm) i进程类资源符合Work[j]>Need[i][j] 条件二
{
p[l]i 存储安全序列
Finish[i]1 i进程标志分配
for (j0 j Work[j]Work[j]+Allocation[i][j] 释放资源
ll+1 记数现L进程安全LN时说明满足安全序列
i 1 第进程开始继续寻找满足条件二进程
}
}
}
}

显示前状态函数
void show() 函数show输出前资源分配情况
{
int ij 局部变量
int All[y] 种资源总数量
cout<<前状态:< cout<<种资源总数量< for (j0j {
cout<< 资源< All[j]Available[j] 总数量+已分配
for (i0i cout< }
cout< for (j0j cout<< 资源< cout<
for (j0j cout< for(i0i {
cout<<进程< for (j0j cout< }

cout< for (j0j cout< for(i0i {
cout<<进程< for (j0j cout< }

}
银行家算法函数
void bank()
{
cout< int k0 输入进程编号
bool rfalse 初值假输入Y继续申请置真
do{输入请求
cout<<输入申请资源进程(0< cin>>k
cout< while(k>n1) 输入错误处理
{
cout< cout< cin>>k
cout< }
cout< for (j0 j {
do{ do……while 循环判断申请输入情况
cout<<进程 < cin>>Request[j]
cout< if(Request[j]>Need[k][j])
{ 申请需求量时出错提示重新输入(贷款数目允许超需求数目)
cout<<申请需量< cout<<申请资源< cout<<重新输入< }
else 先判断否申请需求量判断否申请利量
if(Request[j]>Available[j])
{ 申请利量 应该阻塞等?…… ???
cout<<\n没资源目前利资源< Finish[k]0 该进程等
goto ppp goto语句 跳转结束次申请
}
}while(Request[j]>Need[k][j]) Request[j]>Available[j]||
}
改变AvilableAllocationNeed值
for (j0 j {
Available[j] Available[j]Request[j]
Allocation[k][j] Allocation[k][j]+Request[j]
Need[k][j] Need[k][j]Request[j]
Work[j] Available[j]
}
判断前状态安全性
safe() 调安全性算法函数
if (l {
l0
cout<<\n试分配状态安全予分配恢复原状态< 恢复数
for (j0 j {
Available[j] Available[j]+Request[j]
Allocation[k][j] Allocation[k][j]Request[j]
Need[k][j] Need[k][j]+Request[j]
Work[j] Available[j]
}
for (i0 i Finish[i]0 进程置未分配状态
}
else
{
l0
cout<<\n申请资源成功< for(j0j {
if(Need[k][j]0)
else
{ 种资源没全部申请该进程执行释放拥资源
l1 置l1作判断标志
break
}
}
if(l1)
{ 进程执行释放该进程资源
for (j0j {
Available[j]Available[j]+Allocation[k][j]
Allocation[k][j]0
}
cout<<该进程已需求资源执行释放拥资源< }
l0 零
cout<<\n安全状态< cout<<安全序列
cout< Finish[0]0
for (i1 i {
cout<<>><<进程<<(< Finish[i]0 进程置未分配状态
}
cout< }
show() 显示前状态
ppp 申请利量 应该阻塞等结束次资源申请GOTO 语句跳转
cout< char* bnew char 输入yn判断否继续申请 < cin>>b
cout< cout<<< cout< if(*b'y'||*b'Y') rtrue
else
{
rfalse 输入非 Y 令 R false
jieshu() 调结束函数
}
} while (rtrue)
}
结束函数
void jieshu()
{
cout< cout<<\t\t 演示计算完毕< cout<}

函数
int main()
{
cout< chushihua() 初始化函数调
cout< show() 输出前状态
safe() 判断前状态安全性
if (l {
cout<<\n前状态安全拒绝申请< cout< return 0
}
else
{
int i 局部变量
l0
cout< cout<<进程<<(< for (i1 i><<进程<<(< for (i0 i cout< }
bank() 调银行家算法函数
cout<<\t\t 演示计算完毕< return 0
}
4)运行结果分析
1.示例数
进程数量:5
资源种类3
资源情况
进程
Max
Allocation
Need
Available
A B C
A B C
A B C
A B C
P0
7 5 3
0 1 0
7 4 3
3 3 2
(2 3 0)
P1
3 2 2
2 0 0
(3 0 2)
1 2 2
(0 2 0)
P2
9 0 2
3 0 2
6 0 0
P3
2 2 2
2 1 1
0 1 1
P4
4 3 3
0 0 2
4 3 1
2测试结果(表中数列)
截图:





5)设计结
次做课题银行家算法模拟实现通次课程设计仅拓宽知识面实践程中巩固加深学理知识技术素质实践力进步提高时专业水进步
时软件开发方面累积少验操作系统知识重性认识更深通设计程锻炼分析问题解决问题力锻炼提高完善知识结构加深学知识理解
通天努力次课程设计圆满结束程中学知识学中会更加努力学专业知识学知识实践中便牢固掌握知识
6)参考文献
[1]计算机操作系统(第3版)汤丹西安电子科技学出版社2007年7月
[2]Visual C++面象编程教程(第二版)王育坚清华学出版社2007年10月)














文档香网(httpswwwxiangdangnet)户传

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

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

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

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

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

购买文档

相关文档

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

文***享 3年前 上传636   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年前 上传504   0

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

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

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

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

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

文***品 11个月前 上传375   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年前 上传418   0

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

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

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

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

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

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

线索二叉树算法的设计与实现

随着时代的不断进步,计算机技术也随之得到发展。数据结构在计算机技术的发展中起到巨大的作用。数据结构为构建出高效的计算机算法打下了坚实的基础。良好的数据结构能够提高算法效率的同时也能减少对系统资源的占用[

王***朝 3年前 上传1000   0

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

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

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

计算机操作系统实验三页面置换算法模拟实验

计算机工程学院实验报告书课程名:《 操作系统原理A 》 题 目: 虚拟存储器管理 页面置换算法模拟实验 班 级: 学 号: 姓 名:

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

基于MATLAB的ASK调制解调实现课程设计

大学《通信原理》课程设计报告学 院 专 业 班 级 学 号 学生姓名 指导教师 课程成绩 完成日期 2016年X月X

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

Ping程序的设计与实现课程设计

 计算机网络课程设计报告设计名称 Ping程序的设计与实现 专业班级 同组人姓名 指导教师 成 绩 一、设计目的和要求1、实验目的 利用ICMP数据包、C语言实现

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

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

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

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

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

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

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