77范文网 - 专业文章范例文档资料分享平台

计算机操作系统课程设计报告《Linux下动态资源分配算法演示程序

来源:网络收集 时间:2020-06-08 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

《计算机操作系统》课程设计

题 目:专 业:年 级:小组成员:指导教师:时 间:地 点:

动态资源分配算法演示程序 软件工程 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

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机操作系统课程设计报告《Linux下动态资源分配算法演示程序在线全文阅读。

计算机操作系统课程设计报告《Linux下动态资源分配算法演示程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1099874.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: