华信学院操作系统实习银行家

上传人:鲁** 文档编号:489532766 上传时间:2023-06-20 格式:DOC 页数:30 大小:458KB
返回 下载 相关 举报
华信学院操作系统实习银行家_第1页
第1页 / 共30页
华信学院操作系统实习银行家_第2页
第2页 / 共30页
华信学院操作系统实习银行家_第3页
第3页 / 共30页
华信学院操作系统实习银行家_第4页
第4页 / 共30页
华信学院操作系统实习银行家_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《华信学院操作系统实习银行家》由会员分享,可在线阅读,更多相关《华信学院操作系统实习银行家(30页珍藏版)》请在金锄头文库上搜索。

1、石家庄经济学院华信学院计算机操作系统实习报告(学院)系:一电子信息系专业:计算机科学与技术姓名:班级:学号:指导教师:目录一、实验内容 1.二、实验目的 1.1. 数据结构设计 2.2. 算法设计 2.3. 程序实现及运行结果 8.四、实验总结 1.3.一、实验内容用银行家算法实现资源分配要求:(1) 设计一个 3 个并发进程共享 10 个同类资源的系统,进程可动态地申请 资源和释放资源,系统按各进程的申请动态地分配资源。(2) 设计用银行家算法和随机分配算法,实现资源分配的两个资源分配程 序,应具有显示或打印各进程依次要求申请的资源数以及依次分配资源的情况。(3) 确定一组各进程依次申请资源

2、数的序列,在相同的情况下分别运行上述 两种资源分配程序,观察运行结果。二、实验目的编写和调试一个系统动态分配资源的简单模拟程序 ,观察死锁产生的条件 ,并 采用适当的算法 ,有效地防止和避免死锁的发生 .多个进程动态地共享系统的资源可能会产生死锁现象。 死锁的产生, 必须同 时满足四个条件, 第一个是互斥条件, 即一个资源每次只能由一个进程占用; 第 二个为等待条件, 即一个进程请求资源不能满足时, 它必须等待, 但它仍继续保 持已得到的所有其它资源; 第三个是非出让条件, 任何一个进程不能抢占另一个 进程已经获得且未释放的资源; 第四个为循环等待条件, 系统中存在若干个循环 等待的进程, 即

3、其中每一个进程分别等待它前一个进程所持有的资源。 防止死锁 的机构只须确保上述四个条件之一不出现,则系统就不会发生死锁。在实习中假定系统中任一资源在每一时刻只能则由一个进程使用, 任何进程 不能抢占它进程正在使用的资源, 当进程得不到资源时必须等待。 因此只要资源 分配策略能保证进程不出现循环等待,则系统就不会发生死锁。本实习要求学生编写和调试一个系统动态分配资源的简单模拟程序, 观察死 锁产生的条件,并采用适当的算法,有效地防止和避免死锁的发生。三、实验过程1.数据结构设计随机算法和银行家算法中的进程的 pcbstruct pcbcharname; / 进程号charstate; / 状态

4、r 就绪 f 完成intapplyall; / 资源需求总量intallocation; / 已占用资源量struct pcb * next;按序分配中的进程的 pcb struct pcbcharname;/ 进程号charstate;/ 状态 r 就绪 f 完成 d 表示申请资源不合法intapplynow;/ 当前申请的资源号intapplylast;/ 上次申请的资源号int apply10; / 进程总共需要申请的资源 struct pcb * next;2.算法设计算法思想: 这个实验按照要求需要实现三种资源分配的算法, 银行家算法、 随机分配算法和按序分配算法。 银行家算法要求先

5、判断申请的资源是否满足条件 (小于进程所需求的资源个数同时还要小于系统可以利用的资源个数),如果满足条件就进行试分配, 然后寻找安全序列; 如果存在安全序列则证明试分配可以采 用,否则请求不合理。 随机分配的算法和银行家大体上差不多, 也是想要判断申 请的资源时候满足条件, 如果满足的话就直接给进程分配资源。 随机分配与银行 家算法的区别在于随机分配会出现死锁的情况。 最后是按序分配, 按序分配采取 的是摒弃环路等待的思想来避免死锁。 系统对资源进行编号, 各个进程只能按照 顺序从小到大的申请资源, 如果某一个进程为按需申请资源, 则它就不能得到申 请的资源。 同时进程每次只能申请一个资源,

6、申请到了新的资源就把上一次申请的资源释放;如果进程申请的资源被占用,则不能申请该资源在银行家算法的程序中我一共编写了四个函数, pcb * create(struct pcb * a,int n)是初始化进程链表,即创建n个进程,每次创建的进程都插到链表的末尾,传 入的参数是结构体链表。 void show(struct pcb * a) 是打印进程的情况,传入的参 数是结构体链表。 void bank(struct pcb * a, int n) 是执行银行家算法,传入的参数 是结构体链表, 首先获取输入的要申请资源的进程名和申请量。 然后搜索链表查 找到对应的进程并判断申请是否合理, 合理

7、的话进行试分配, 更改链表中对应进 程的参数。 然后进行安全型算法。 如果存在安全序列则保存试分配后的结果, 否 则恢复试分配之前的状态。void ran dom(struct pcb * a)是随机分配的函数,传入的 参数是结构体链表。 也是先获取输入的要申请资源的进程名和申请量, 然后搜索 链表查找到对应的进程并判断申请是否合理, 合理的话就给进程分配资源, 否则 不进行分配。在按序分配算法的程序中我一共编写了四个函数, void init() 是初始化系统的 资源,系统的 10 类资源没有被占用, 所以全部付 0。 pcb * create(struct pcb * a,int n)初始

8、化进程链表同时进行第一次资源分配,传入的参数是结构体链表。也是依 次创建 n 个进程, 每次插入到链表的末尾。 在申请资源时, 如果当前申请的资源 被占用则设进程当前申请的资源的值为 11,否则设成申请的资源的序号。 void radom(struct pcb * a,i nt w)是实现按需分配的函数,传入的参数是结构体链表和进 程的个数。 我设置了一个标志位来控制分配的过程, 先判断标志位, 然后在判断 进程的状态, 接着查找进程申请资源的数组, 如果即将申请的资源未被占用则可 以申请,并释放上次申请的资源, 同时还要改变系统资源的状态和进程自己资源 的状态;否则不能申请,换下一进程在申请

9、资源。之后重复上面的操作。具体的 流程图如下:1.创建流程图开始输入进程号 资源需求总量 已占资源量判断资源总量、已占 资源量是否都小于10创建成功结束图3-2-1创建流程图2.显示流程图开始判断进程队列要显示的是否为空显示指向下一个结束图3-2-2显示流程图3.安全算法开始进行扫描判断当前是否有要申请资源的进程指向下一个进程该进程的状态是否为完成状态是执行,改状态 释放所需资源结束该进程是否还需要再分配资源所需资源是否小于当前系统可用的分配,执行 改状态,释 放所占资源4.银行家算法开始用户输入要请求的资 源和请求的进程当前请求的资源不大于系否统拥有的资源找到请求申请资源的进程,并给 进程分

10、配资源,之后修改现在系 统已占用的资源判断能否找到安全序列是否得到全部资源 判断进程置进程为完成态,回还该进程已占 用的资源量,更改系统现在可以用 的资源量判断所有进程处于 完成状态返回是把申请的資源给岀系统当前可用的资源改变汞统当前可用费拔数变貉朿3.程序实现及运行结果请根据提示选择选择:善输入要创建逬程的个数;鲁前输入进程号资源总需求量己占资源量; 菁备爲入进程号资源总需求量己占资源量三 養需爲入逬程号资源总需求量已占岗源量: C 7 2_图3-3-1初始化根据提示首先选择1初始化进程链表,输入创建进程的个数3个分别按照提示输入 a 5 2、b 6 3、c 7 2。a5E7己占用资源量 状

11、态=倖源分配祛实现资源分配1 初始化进趣表 菇用银乔家现资遊分配 碁用随机分配章连实现贵僚知博根据提不选择选择:彩输入要申请资源的进程的进程名和要申请的资源个数=L 3图3-3-2 a进程申请资源程序会显示一下资源占用的情况。选择2,用银行家算法实现资源分配。输入申请资源的进程名为a,申请资源个数3个资源需求总量已占用资源量332状态系统可认利用的资源;r2F2p2进行安全性算法a b安全序列为:諾缶咸珈醴用噴二a5bc7系统资源剩余量为池资源需求总量己占用资源量332状态请根据提示选择选择, b 3-图3-3-3 b进程申请资源程序会先判断输入的数据是否正确,此时系统剩余资源为3个,a总共需

12、要资源5个,已经有2个,剩余需要资源3个。剩余需要资源小于等于系统剩余资 源,输入正确,进行试分配。试分配完毕,进行安全性算法,并输出安全序列。a已达到资源需求总量,状态改为完成。图3-3-4全部完成状态依次输入b 3、c 5后,a、b、c全部为完成状态。图3-3-5 c进程申请资源按照刚才重新初始化链表,输入 C 2。此时系统剩余资源3个,C剩余需要资源5个,剩余需要资源大于系统剩余 资源,取消分配。資源需求总量状态系统可以刃屈的资源安全序列为弑分配成功辛a系统资祿剩余量为煜用系纸可以利用的资源资源需求总量系统资源剩余量为吃已占用资源量状态3p己占曲资源量33已占用资源量3鑼后的结磁己占用贵

13、源量状态3尸请输入要申请资源的逬程的逬程名和要申请的资源个数III后的纟壽辭总量请根据提示选择选择;2佶输入要申请资源的进程的进程名和要申请的瓷源个数资源分配不合理取梢分配庚源分配 妬化进轟袤晴根据提图3-3-6 安全序列检测初始化链表,a先申请一个资源,成功。 b再申请一个资源,此时不成功,取消分配四、实验总结此次实验由自己动手编写,实习针对于资源分配,通过对申请的响应,完 成对资源分配。每个进程所拥有的状态有、 就绪、等待和完成, 对于其进程的选择主要是判断其 状态是否允许响应申请。编写过程中,最初很简单, 凭借对上课时对知识的掌握, 很容易编写出了框 架。但知识的漏洞,使得程序的编写过程中出现了严重的错误。比如,银行家算法编写过程中, 最初认为进程尚需资源量即为其所申请的资 源,其实不然。 此错误使得编写的函数实现功能仅为一次性完成, 无法达到动态 性。在其基础上又无法简单更改,只好重新拟定流程,浪费了宝贵的实习时间。 再者,银行家算法中的安全性检查模块, 当只有一个进程就绪, 而且申请资源量 使得系统不安全, 此时,进程的安全标志位皆

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号