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


    


    操作系统课程设计报告


    课题: 银行家算法




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

    班级
    计算机
    学号

    指导教师




    信息工程学院




    实验求实验目
    实验目:课程设计学生学完操作系统原理课程进行次全面综合训练通课程设计学生更掌握操作系统原理实现方法加深操作系统基础理重算法理解加强学生动手力
    实验求:课程设计目出发通设计工作环节达教学求:两组组题目中选(拟题目需指导教师意)学生必须独立完成课程设计相互抄袭组者文档相设计完成完成工作交指导教师检查求写出份详细设计报告
    二设计容:
    课题编制银行家算法通程序检测状态系统安全性
    1)银行家算法中数结构:
    利资源量Available含m 元素数组中元素代表类利资源数目初始值系统中配置该类全部资源数目数值该类资源分配回收动态改变Available[j]K表示系统中现Rj 类资源K
    需求矩阵Maxn*m矩阵定义系统中n进程中进程m类资源需求果Max[ij]K表示进程i需Rj类资源数目K
    1 分配矩阵Allocationn*m矩阵定义系统中类资料前已分配没进程资源数果Allocation[ij]K表示进程i前已分Rj类资源数目K需求矩阵Needn*m矩阵表示进程尚需类资源数果Need[ij]K表示进程i需Rj类资源K方完成务
    述三矩阵存关系: Need[ij] Max[ij] Allocation[ij]
    2)银行家算法
    设Request[i] 进程Pi请求量果Request[ij]K表示进程Pi需KRj类型资源Pi发出资源请求系统述步骤进行检查:果Request[ij]< Need[ij]便转步骤2否认出错需资源数已超宣布值
    三设计思路
    设计思路A 设计进程资源申请表示初值确定B 设定系统提供资源初始状态C 设定次某进程类资源申请表示D 编制程序银行家算法决定申请否满足
    四详细设计
    1初始化:户输入数分利资源量矩阵AVAILABLE需求矩阵MAX分配矩阵ALLOCATION需求矩阵NEED赋值
    2银行家算法:避免死锁方法中施加限制条件较弱获令满意系统性该方法中系统状态分安全状态安全状态系统始终处安全状态便避免发生死锁银行家算法基思想分配资源前判断系统否安全分配具代表性避免死锁算法
    设进程cusneed提出请求REQUEST [i]银行家算法规进行判断
    (1)果REQUEST [cusneed] [i]< NEED[cusneed][i]转(2)否出错
    (2)果REQUEST [cusneed] [i]< AVAILABLE[cusneed][i]转(3)否出错
    银行家算法数结构
    假设M进程N类资源数结构
    #define W 10
    #define R 20
    int M                       总进程数
    int N                     资源种类
    int ALL_RESOURCE[W]        种资源数目总
    int MAX[W][R]             M进程N类资源资源需求量
    int AVAILABLE[R]          系统资源数
    int ALLOCATION[W][R]      M进程已N类资源资源量
    int NEED[W][R]            M进程需N类资源资源量
    int Request[R]            请求资源数
    3安全性检测算法
    1)先定义两变量表示推算程数
    F[n]A[n]表示推算程中系统中剩余资源量变化
    J[n]False表示推算程中进程否假设已完成
    系统试探分配资源修改相关数:
    AVAILABLE[i]REQUEST[cusneed][i]
    ALLOCATION[cusneed][i]+REQUEST[cusneed][i]NEED[cusneed][i]REQUEST[cusneed][i]
    4安全性检查算法
    1)设置两工作量WorkAVAILABLEFINISH
    2)进程集合中找满足述条件进程
    FINISHfalse
    NEED找执行(3)否执行(4)
    3)设进程获资源利执行直完成释放资源
    Work+ALLOCATION
    Finishtrue
    GOTO 2
    4)进程Finish true表示安全否系统安全
    安全状态 某时刻系统中进程排列安全序列{P1P2`````Pn}刚称时系统安全
    谓安全序列{P1P2`````Pn}指P2需剩余资源数量系统掌握剩余空间资源Pi(j安全状态产生死锁
    目前状态 需求 尚需
    P1         3                9             6
    P2       5                10            5
    P3        2                4             2
    次进程中申请资源判定实际分配话系统否安全
    银行家算法数结构
    五代码清单
    #include
    #include
    #include
    #include
    #include
    #include

    const int MAX_P20
    const int MAXA10 定义A类资源数量
    const int MAXB5
    const int MAXC7

    typedef struct node{
    int a
    int b
    int c
    int remain_a
    int remain_b
    int remain_c
    }bank

    typedef struct node1{
    char name[20]
    int a
    int b
    int c
    int need_a
    int need_b
    int need_c
    }process

    bank banker
    process processes[MAX_P]
    int quantity

    初始化函数
    void initial()
    {
    int i

    bankeraMAXA
    bankerbMAXB
    bankercMAXC
    bankerremain_aMAXA
    bankerremain_bMAXB
    bankerremain_cMAXC

    for(i0istrcpy(processes[i]name)
    processes[i]a0
    processes[i]b0
    processes[i]c0
    processes[i]need_a0
    processes[i]need_b0
    processes[i]need_c0
    }

    }
    新加作业
    void add()
    {
    char name[20]
    int flag0
    int t
    int need_aneed_bneed_c
    int i
    cout<cout<<新加作业<cout<<请输入新加作业名
    cin>>name

    for(i0iif(strcmp(processes[i]namename)){
    flag1
    break
    }
    }
    if(flag){
    cout<<错误作业已存<}
    else{
    cout<<作业需A类资源
    cin>>need_a
    cout<<作业需B类资源
    cin>>need_b
    cout<<作业需C类资源
    cin>>need_c
    t1
    cout<if(need_a>bankerremain_a){
    cout<<错误需A类资源银行家剩A类资源<t0
    }
    if(need_b>bankerremain_b){
    cout<<错误需B类资源银行家剩B类资源<t0
    }
    if(need_c>bankerremain_c){
    cout<<错误需C类资源银行家剩C类资源<t0
    }
    if(t){
    strcpy(processes[quantity]namename)
    processes[quantity]need_aneed_a
    processes[quantity]need_bneed_b
    processes[quantity]need_cneed_c
    quantity++
    cout<<新加作业成功<}
    else{
    cout<<新加作业失败<}
    }
    }
    作业申请资源
    void bid()
    {
    char name[20]
    int ip
    int abc
    int flag

    cout<cout<<申请资源作业名
    cin>>name

    p1
    for(i0iif(strcmp(processes[i]namename)){
    pi
    break
    }
    }
    if(p1){
    cout<<该作业申请A类资源数量
    cin>>a
    cout<<该作业申请B类资源数量
    cin>>b
    cout<<该作业申请C类资源数量
    cin>>c
    flag1
    if((a>bankerremain_a)||(a>processes[p]need_aprocesses[p]a)){
    cout<<错误申请A类资源银行家剩A类资源该进程需数量<flag0
    }
    if((b>bankerremain_b)||(b>processes[p]need_bprocesses[p]b)){
    cout<<错误申请B类资源银行家剩B类资源该进程需数量<flag0
    }
    if((c>bankerremain_c)||(c>processes[p]need_cprocesses[p]c)){
    cout<<错误申请C类资源银行家剩C类资源该进程需数量<flag0
    }
    if(flag){
    bankerremain_aa
    bankerremain_bb
    bankerremain_cc
    processes[p]a+a
    processes[p]b+b
    processes[p]c+c
    cout<<作业申请资源成功<}
    else{
    cout<<作业申请资源失败<}
    }
    else{
    cout<<该作业存<}
    }
    撤消作业
    void finished()
    {
    char name[20]
    int ip

    cout<cout<<撤消作业名
    cin>>name

    p1
    for(i0iif(strcmp(processes[i]namename)){
    pi
    break
    }
    }
    if(p1){
    bankerremain_a+processes[p]a
    bankerremain_b+processes[p]b
    bankerremain_c+processes[p]c
    for(ipiprocesses[i]processes[i+1]
    }
    strcpy(processes[quantity1]name)
    processes[quantity1]a0
    processes[quantity1]b0
    processes[quantity1]c0
    processes[quantity1]need_a0
    processes[quantity1]need_b0
    processes[quantity1]need_c0
    quantity
    cout<<撤消作业成功<}
    else{
    cout<<撤消作业失败<}
    }
    查资源情况
    void view()
    {
    int i
    cout<cout<<银行家剩资源(剩余资源总资源)<cout<cout<< B类<cout<< C类<cout<if(quantity>0){
    for(i0icout<<作业名<cout<cout<< B类<cout<< C类<cout<}
    }
    else{
    cout<<前没作业<}
    }
    显示版权信息函数
    void version()
    {
    cout<cout<< 银行家算法 <cout<}
    void main()
    {
    int chioce
    int flag1

    initial()
    version()
    while(flag){
    cout<<1新加作业 2作业申请资源 3撤消作业<cout<<4查资源情况 0退出系统<cout<<请选择
    cin>>chioce
    switch(chioce){
    case 1
    add()
    break
    case 2
    bid()
    break
    case 3
    finished()
    break
    case 4
    view()
    break
    case 0
    flag0
    break
    default
    cout<<选择错误<}
    }
    }
    六说明
    运行环境CFREE40新建务编制代码输入运行环境中

    F5:出现图示窗口提示新建作业:wujun作业分配资源A:3B:4C:5输入2作业分配资源三种资源数量分配分A3B5C4输入4查资源情况出现出错提示申请B类资源超银行家剩B类资源作业申请资源失败输入0退出系统

    重新加入作业:wujun1作业分配资源分A3B3C3该作业分配资源A3B2C2输入4查资源情况
    显示输出银行家算法剩资源(剩余资源总资源)
    七实验心
    八参考文献
    汤子瀛等计算机操作系统西安电子科技学出版社2001年5月
    蒋静 徐志伟操作系统原理•技术编程『M』北京机械工业出版社2004
    文档香网(httpswwwxiangdangnet)户传

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

    下载文档到电脑,查找使用更方便

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

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

    下载文档

    相关文档

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

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

    3年前   
    808    0

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

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

    3年前   
    694    0

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

    操作系统课程设计报告专业计算机科学与技术学生姓名班级学号指导教师完成日期信息工程学院题目: 银行家算法的模拟实现 一、设计目的本课程设计是学习完“操作系统原理”课程后进...

    3年前   
    682    0

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

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

    3年前   
    724    0

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

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

    3年前   
    466    0

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

    计算机与信息学院《操作系统综合设计》报告设计题目:页面置换算法学生姓名:学 号:专业班级:计算机科学与技术班2015 年 X月一、设计题目 3二、开发环境与工具 3三、设计原理 31....

    3年前   
    556    0

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

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

    3年前   
    580    0

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

    操作系统课程设计磁盘调度算法目 录1 课程设计目的及要求……………………………………………………12 相关知识…………………………………………………………………13 ...

    3年前   
    547    0

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

    《计算操作系统》课程设计报告 姓名: ...

    3年前   
    461    0

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

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

    3年前   
    642    0

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

    操作系统课程设计报告班级: 计科 姓名: 学号: 老师: 时间:2012年X月X日一、设计目的操作...

    1年前   
    296    0

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

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

    3年前   
    1047    0

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

    操作系统课程设计报告题目:树型目录文件系统 学 院 计算机学院 专 业 网络工程 年级班别 班 学 ...

    3年前   
    539    0

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

    XX学院 《操作系统》课程设计报告题 目: 哲学家进餐问题 班 级: 学 号: ...

    2年前   
    766    0

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

    XX大学课程设计课程名称: 数 据 结 构 与 算 法院(部)名 称: 信息与计算科学学院组长姓名学号 同组人员姓名指导教师姓名: 设 计 时 间: 2010.6.7-...

    11个月前   
    376    0

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

    计算机科学与技术系课程设计报告 2014-2015学年第二学期课程数据结构课程设计名称Kruskal算法求最小生成树学生姓名 学号 专业班级 软件工程指导教师 2014年X月题目:设计...

    1年前   
    203    0

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

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

    3年前   
    479    0

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

    操作系统课程设计设计题目 动态分区分配存储管理学生姓名号学 号指导教师专业班级计算机班 第一章 课程设计概述1.1 设计任务:动态分区分配存储管理1.2 设计要求建立描述内存...

    2年前   
    418    0

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

    课程设计课 程: 算法与数据结构 题 目: 商品货架管理 专 业: 计算机类 班 级: ...

    1年前   
    322    0

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

    课程设计说明书题目: 生产者与消费者算法模拟 院 系: 计算机科学与工程 专业班级: 信息安全(xxxx)班 学 号: 学生...

    3年前   
    641    0

    文档贡献者

    文***享

    贡献于2020-12-13

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

    该用户的其他文档