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


    实 验 报 告
    题 目

    名 称
    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年前   
    665    0

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

    《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级:计科班 ...

    3年前   
    613    0

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

    《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级: 计科班 ...

    3年前   
    800    0

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

    《操作系统》课程设计报告课题: 银行家算法 专业计算机科学与技术学生姓名班级计算机学号指导教师信息工程...

    3年前   
    680    0

    c语言实验报告

    c语言实验报告  学号:__________    姓名:__________    班级:__________    日期:__________   指导教师:__________    成...

    11年前   
    773    0

    C语言实验报告《指针》

    C语言实验报告《指针》  学号:__________    姓名:__________    班级:__________    日期:__________   指导教师:__________ ...

    11年前   
    928    0

    C语言实验报告《数组》

    C语言实验报告《数组》  学号:__________    姓名:__________    班级:__________    日期:__________  指导教师:__________  ...

    11年前   
    871    0

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

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

    3年前   
    705    0

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

    题目2 进程调度算法的实现2.1 题目的主要研究内容及预期达到的目标(1)设计进程控制块; (2)设计多个进程队列; (3)设计多个进程(≥20); (4)动态生成时间片、执行时间和优先级,...

    2年前   
    573    0

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

    XX大学计算机与通信工程学院实验报告2013 至 2014 学年 第 一 学期课程名称操作系统学号 学生姓名 年级 专业 教学班号 实验地点 实验时间 2013年 月 日 ...

    3年前   
    472    0

    C语言实验报告《函数》

    C语言实验报告《函数》  学号:__________    姓名:__________    班级:__________    日期:__________  指导教师:__________  ...

    12年前   
    1328    0

    C语言程序设计实验报告

    C语言程序设计实验报告  实验名称 计算出1000以内10个最大素数之和   实验目的   1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语...

    10年前   
    922    0

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

    C语言实验报告《综合实验》  学号:__________    姓名:__________    班级:__________    日期:__________  指导教师:__________...

    10年前   
    853    0

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

    操作系统实验(进程调度+存储管理+磁盘调度++银行家算法+文件系统设计)实验三 进程调度一、 实验目的多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处...

    3年前   
    635    0

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

     2021年c语言实验报告分析总结撰写人:___________日 期:___________2021年c语言实验报告分析总结在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言...

    3年前   
    539    0

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

    《C语言程序设计》 实验报告第二学期班 级 学 号姓 名指导教师实验一 Visual C++ 6.0编程环境与C语言程序的调试过程一、实验学时2 学时。二、...

    11个月前   
    227    0

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

    C语言实验报告《逻辑结构程序设计》  学号:__________    姓名:__________    班级:__________    日期:__________   指导教师:_____...

    12年前   
    729    0

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

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

    2年前   
    494    0

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

    操作系统进程管理实验报告实验一 进程管理1.实验目的:(1)加深对进程概念的理解,明确进程和程序的区别;(2)进一步认识并发执行的实质;(3)分析进程争用资源的现象,学习解决进程互斥的方法;...

    1年前   
    338    0

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

    实验报告【实验名称】 首次适应算法和循环首次适应算法 【实验目的】理解在连续分区动态的存储管理方式下,如何实现主存空间的分配与回收。【实验原理】首次适应(first fit,FF...

    3年前   
    1032    0

    文档贡献者

    文***品

    贡献于2021-07-01

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档