计算机操作系统课程设计报告《Linux下动态资源分配算法演示程序
更新时间:2024-05-03 12:06:01 阅读量: 综合文库 文档下载
《计算机操作系统》课程设计
题 目:专 业:年 级:小组成员:指导教师:时 间:地 点:
动态资源分配算法演示程序 软件工程 2012级
2014年 12 月
目录
1. 概述 .................................................. 3 2. 课程设计任务及要求 .................................... 4
2.1 设计任务 .................................................... 4 2.2 日程安排表 .................................................. 4 2.3 设计要求 .................................................... 4
3. 算法及数据结构 ........................................ 4
3.1算法的总体思想............................................... 4 3.2 银行家算法 .................................................. 5 3.3 安全性算法 .................................................. 6
4. 程序设计与实现 ........................................ 8
4.1 程序流程图 .................................................. 8 4.2 程序代码 .................................................... 9 4.3 实验结果 ................................................... 16
5. 结论 ................................................. 18 6. 收获及体会 ........................................... 19 7. 参考文献 ............................................. 20
1. 概述
动态资源分配算法演示程序是对操作系统中“银行家算法”的模拟,银行家算法是操作系统中一种最具代表性的避免死锁的算法。通过对信息的编辑,来实现自行输入信息。资源种类与数目可在界面进行设置,在资源分配过程中可以随时增加进程及其对资源的需求。在编辑信息时,可以修改资源和进程的各种信息,包括添加、修改和删除。确定信息后,可以通过检查系统安全性,来显示系统的安全序列或者显示系统处于不安全状态。请求资源功能实现了进程请求系统中资源的模拟。如果能够通过系统安全状态检测,则系统对该进程进行资源分配;当进程满足所有资源分配后能够自行释放所有资源,退出资源竞争。本程序是在LINUX环境系统下编写的。
本设计主要用于解决多种资源被多个独立执行的进程使用的安全算法。该算法采用矩阵存储资源的数据,通过对系统资源预分配后检查系统状态,以避免死锁的产生。要求如下: (1) 模拟一个银行家算法;
(2) 初始化时让系统拥有一定的资源; (3) 用键盘输入的方式申请资源;
(4) 如果预分配后,系统处于安全状态,则修改系统的资源分配情况; (5) 如果预分配后,系统处于不安全状态,则提示不能满足请求,设计
的主要内容是模拟实现动态资源分配。同时编写和调试一个系统动态资源的简单模拟程序,观察死锁产生的条件,并使用适当的算法,有效的防止和避免死锁的发生。
2. 课程设计任务及要求
2.1 设计任务
本设计主要用于解决多种资源被多个独立执行的进程使用的安全算法。该算法采用矩阵存储资源的数据,通过对系统资源预分配后检查系统状态,以避免死锁的产生。 2.2 日程安排表 日期 任务 负责人 A B 完成情况 完成 2014.12.24星期三下午 查找资料,按需求设计算法 2014.12.25星期四上午 查找资料,开始编写代码 2014.12.25星期四下午 编写代码与注释 2014.12.26星期五上午 代码完善与修改 2014.12.26星期五下午 文档制作
A B 完成 A B A A 完成 完成 完成 2.3 设计要求
(1)资源种类与数目可在界面进行设置,在资源分配过程中可以随时增加进程及其对资源的需求。
(2)可读取样例数据(要求存放在外部文件中)进行资源种类、数目与进程数的初始化。
(3)在资源分配过程中可以随时进行系统安全状态检测。
(4)如果能够通过系统安全状态检测,则系统对该进程进行资源分配;当进程满足所有资源分配后能够自行释放所有资源,退出资源竞争。 (5)要求进行安全性检查时按指定策略顺序进行,即按每个进程当前Need数由小至大进行排序,如果Need数相同,则按序号由小至大进行排序; (6)具有一定的数据容错性。
3. 算法及数据结构 3.1算法的总体思想
为了实现银行家算法,在系统中必须设置这样四个数据结构,分别用来描述
系统中可利用的资源、所有进程对资源的最大需求、系统中的资源分配,以及所有进程还需要多少资源的情况。
(1) 可利用资源向量Available。这是一个含有m个元素的数组,其中的每
一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。如果Available[j]=K,则表示系统中现有Rj类资源K个。
(2) 最大需求矩阵Max。这是一个n*m的矩阵,它定义了系统中n个进程中
的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。
(3) 分配矩阵Allocation。这也是一个n*m的矩阵,它定义了系统中每一类
资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。
(4) 需求矩阵Need。这也是一个n*m的矩阵,用以表示每一个进程尚需的各
类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个方能完成其任务。
上述三个矩阵间存在下述关系:Need[i,j]=Max[i,j]-Allocation[i,j] 3.2 银行家算法 3.2.1 功能
设进程i提出请求Request[n],则银行家算法按如下规则进行判断。 (1) 如果Request[n]>Need[i,n],则报错返回。
(2) 如果Request[n]>Available,则进程i进入等待资源状态,返回。 (3) 假设进程i的申请已获批准,于是修改系统状态:
Available=Available-Request Allocation=Allocation+Request Need=Need-Request
(4) 系统执行安全性检查,如安全,则分配成立;否则试探险性分配作
废,系统恢复原状,进程等待。
3.2.2 数据结构
int Max[100][100]={0};//各进程所需各类资源的最大需求
int Avaliable[100]={0};//系统可用资源 char name[100]={0};//资源的名称
int Allocation[100][100]={0};//系统已分配资源 int Need[100][100]={0};//还需要资源
int M=100;//作业的最大数为100
int N=100;//资源的最大数为100 3.2.3 算法
3.3 安全性算法 3.3.1功能
开始 输入资源种类数 输入进程的数量 输入各进程最大需求量 Allocation[i,j]>Max[i,j] 输入各进程已经申请的资源显示资源,开始银行家算法 提出请求Request[j] Request[j]<=Need[i,j] 否 报错 否 Request[j]<=Available[j] 报错 Available[j]-=Request; Allocation[i,j]-=Request[j]; Need[i,j]+=Request[j]; 结束
(1)设置两个工作向量Work=Available;Finish[M]=False (2)从进程集合中找到一个满足下述条件的进程, Finish [i]=False Need<=Work
如找到,执行(3);否则,执行(4)
(3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 Work=Work+Allocation; Finish=True;go to step 2; (4)如所有的进程Finish[M]=true,则表示安全;否则系统不安全。 3.3.2 数据结构
int Allocation[100][100]={0};//系统已分配资源 int Request[100]={0};//请求资源向量
int temp[100]={0};//存放安全序列 int Work[100]={0};//存放系统可提供资源 3.3.3算法
开始 Work[j]=Avaliable[j];Finish[i]=false; Need[i,j]<=Work&&Finsh[i]=false; Work[j]+=Allocation[i,j];Finish[i]=ture; 所有进程的Finish[i]=ture; 系统不安安全,输出安全序列Return ture; 结束
4. 程序设计与实现
4.1 程序流程图
开始 输入资源种类数 输入进程的数量 输入各进程最大需求量 输入各进程已经申请的资源量 Allocation[i,j]>Max[i,j] 显示资源,开始银行家算法 提出请求Request[j] 否 Request[j]<=Need[i,j] Error Request[j]<=Available[j] 否 Error Available[j]-=Request[j]; Allocation[i,j]-=Request[j]; Need[i,j]+=Request[j]; Safe()算法判定系统安全性






正在阅读:
计算机操作系统课程设计报告《Linux下动态资源分配算法演示程序05-03
温暖的母爱作文550字06-25
国电电力团青工作实务手册04-05
3.开题报告11-14
2016级军训方案10-29
EDA课程设计 - 电梯控制器 - 图文04-19
从中美宪法的涉税规定说开去05-26
水泥厂质量管理知识试卷及答案(2018)04-05
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 资源分配
- 算法
- 演示
- 操作系统
- 课程
- 计算机
- 程序
- 报告
- 动态
- 设计
- Linux
- 2016年柴油发电机组市场现状与发展趋势预测
- 上海市长宁区2017届初三第二学期教学质量检测理化试卷
- 泛光照明工程合同
- 货车的设计 - 布置各性能参数的选定
- 关于成立区环保局信访工作领导小组的通知
- 基于单片机的LED点阵屏毕业设计 - 图文
- 半导体物理基础
- 村干部人事档案管理现状调查与思考
- 儿童保健工作制度及规范
- 作物栽培学复习资料2
- 界址点坐标成果表
- 牛津高中英语模块一模块二课文原文
- 民事起诉状(汇票无法兑换)律师拟定版本
- 方案、预案—--千户集团税收风险分析应对工作指引关联交易篇
- 2018年中国传感器行业市场分析报告目录
- 转换插头插座项目可行性研究报告
- 环境物品清洁消毒及灭菌培训考核试卷带答案
- 电力电缆不同敷设方式注意问题
- 工业循环冷却水使用二氧化氯发生器杀菌灭藻实施方案
- 江苏省扬州市2016届高三上学期期末考试英语试卷(含阅读理解解析