操作系统实验报告———资源分配.doc

上传人:灯火****19 文档编号:137206990 上传时间:2020-07-06 格式:DOC 页数:18 大小:499.50KB
返回 下载 相关 举报
操作系统实验报告———资源分配.doc_第1页
第1页 / 共18页
操作系统实验报告———资源分配.doc_第2页
第2页 / 共18页
操作系统实验报告———资源分配.doc_第3页
第3页 / 共18页
操作系统实验报告———资源分配.doc_第4页
第4页 / 共18页
操作系统实验报告———资源分配.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《操作系统实验报告———资源分配.doc》由会员分享,可在线阅读,更多相关《操作系统实验报告———资源分配.doc(18页珍藏版)》请在金锄头文库上搜索。

1、石家庄经济学院实习报告(学 院)系: 信息工程学院 专 业: 计算机科学与技术姓 名: 江丹 班 级: 专接本2班 学 号: 511109030201 指导教师: 张有华 2012年 6 月 25 日操作系统课程实习报告学号:511109030201 姓名:江丹 起迄日期:2012/6/172012/6/25指导教师:张有华 实习地点:206室实习题目:本实习中共有两个实习题。第一题:用银行家算法实现资源分配。要求:(1) 设计一个3个并发进程共享10个同类资源的系统,进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。(2) 设计用银行家算法和随机分配算法,实现资源分配的两个资

2、源分配程序,应具有显示或打印各进程依次要求申请的资源数以及依次分配资源的情况。(3) 确定一组各进程依次申请资源数的序列,在相同的情况下分别运行上述两种资源分配程序,观察运行结果。第二题:用按序分配策略实现资源分配。要求:(1) 设计一个3个进程共享10个资源的系统,进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。(2) 设计用按序分配算法实现资源分配的资源分配程序,应具有显示或打印各进程依次要求申请的资源号以及依次分配资源地情况。(3) 确定两组各进程依次要求申请的资源号,要求其中的一组中各进程按序地申请资源,另一组中各进程申请资源不受序号限制,分别运行上述设计的资源分配程

3、序,观察运行结果。1 实习内容运用随机分配算法、银行家算法、按需分配策略进行资源分配,检查各种算法资源分配的安全性。2 实习目的多个进程动态地共享系统的资源可能会产生死锁现象。死锁的产生,必须同时满足四个条件,第一个是互斥条件,即一个资源每次只能由一个进程占用;第二个为等待条件,即一个进程请求资源不能满足时,它必须等待,但它仍继续保持已得到的所有其它资源;第三个是非出让条件,任何一个进程不能抢占另一个进程已经获得且未释放的资源;第四个为循环等待条件,系统中存在若干个循环等待的进程,即其中每一个进程分别等待它前一个进程所持有的资源。防止死锁的机构只须确保上述四个条件之一不出现,则系统就不会发生死

4、锁。在实习中假定系统中任一资源在每一时刻只能则由一个进程使用,任何进程不能抢占它进程正在使用的资源,当进程得不到资源时必须等待。因此只要资源分配策略能保证进程不出现循环等待,则系统就不会发生死锁。本实习要求学生编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁的发生。3 实习步骤第一步:首先先看书,理解银行家算法、随机分配算法及按需分配算法原理,确定整体的代码思路,确定流程图。第二步:分析并修改流程图,检查其中的逻辑错误。第三步:从细节上分析,各部分功能的代码实现。第四步:运行并查看结果,这里主要查看各个资源对资源的占有和申请情况。以及按照

5、自己随机的输入三组数字,选择各种算法,检验其分配的安全性,会不会产生死锁。第一题的设计思路及运行结果:3.13.7部分3.1需求分析本次实验是在预输入三个进程的基础上初始化,通过选择算法,来检测各种算法的分配的安全性。3.2 数据结构设计与说明定义进程结构体:typedef struct pcbworkint pid;char state10;int cur_count;/当前申请量int dem_count;/资源需求总量int alr_count;/已占资源量 int need_count;/还需要的资源量struct PCB *next;pcb;定义系统资源结构体:typedef str

6、uct sys_resint cur_count_sum;/当前申请总量int sys_res_sum;/系统资源量struct sys_res *next;res;3.3 算法设计第一部分:初始化三个进程 /初始化当前各个资源申请量printf(请输入各个进程的当前申请量n);printf(进程号t当前申请量t最大资源需求n);while(ipid,&p-cur_count,&p-dem_count);p-next=NULL;if(head=NULL)head=p;elseq-next=p;q=p;i+;第二部分:检测系统资源量够不够进程申请if(res1.sys_res_sum=sum)r

7、es1.cur_count_sum=sum;printf(系统资源量满足进程申请资源总量!);elseprintf(输入数据有错,请重新输入!);p=head;i=0;while(ialr_count=0; p-need_count=p-dem_count;strcpy(p-state,就绪);p=p-next;i+; 第三部分:进行循环选择:当输入数字大于等于0.5时,执行随即分配算法;当输入数字小于0.5时执行银行家算法,并给出每个算法的执行结果-即有没有出现死锁,还是安全执行完毕。这里分别调用两个函数:random()和banker()p=head;printf(n开始判断执行随即分配算

8、法,还是银行家算法:n);while(!fabs(n-0.0)=0.5就执行随即分配算法if(n=0.5)printf(您当前选用的是随机分配算法!);random(head,res1);elseprintf(您当前选用的是银行家分配算法!);banker(head,res1);/执行执行银行家算法本程序用C语言实现,将随机分配算法和银行家算法分别封装到函数中,运用了循环内执行if-else语句的方式,进行随机分配算法和银行家算法之间的切换选择。3.4下面是本程序流程图:资源分配模拟程序总流程图图3.4.1-1资源分配模拟程序总流程图图3.4.1-2随机分配算法流程图图3.4.1-3银行家算法

9、流程图3.5 程序实现及运行结果分析随机分配算法运行结果如下:图3.5.1-1随机分配算法结果图结果分析: 起初程序输入3个进程(进程id、资源申请量、资源最大需求量) 输入大于0.5的数,让程序首先进行随机分配算法。随机分配算法的主要思想是:对当前处于就绪状态的进程,依次分配资源,能分配多少分配多少,即按顺序满足初次的各个进程初次的申请请求。进行循环操作,直到某一个进程的最大资源需求量没有得到满足,那么它以后的进程申请也将得不到满足,该组分配将进入死锁! 死锁的表现:某些进程一直得不到满足,与其他进程产生了互斥请求,结果,谁也没有得到资源。未完成的进程之间一直处于资源的争夺中,却一直都不能占

10、有,且释放。由图可知,随机分配算法产生了死锁!银行家算法运行结果如下:图3.5.1-2银行家算法结果图结果分析: 起初程序输入3个进程(进程id、资源申请量、资源最大需求量) 输入小于0.5的数,让程序执行随银行家算法。银行家算法思想与随机分配算法的思想类似。区别在于:系统掌握每个进程对资源的最大需求量,当进程要求申请资源时,系统就测试该进程尚需资源的最大量,如果系统中现存的资源数大于或等于该进程尚需的最大量时,则就满足进程的当前申请。 可以看到,各个进程的资源以占有量=本进程的以占有量+系统资源释放资源量 由上面结果可以看出当前银行家算法没有产生死锁!3.6 程序源代码第一题-代码:参见文件

11、夹LAB01_1(源代码所在的文件夹链接)3.7 程序运行结果 程序运行结果见图(图3.4.1-1、图3.4.1-2、图3.4.1-3)这里第一题测试用例为三个进程:分别为:进程号当前申请量最大资源需求135233322第二题的设计思路及运行结果:4.14.74.1需求分析本次实验是在预输入三个进程的基础上初始化,通过选择算法,来检测各种算法的分配的安全性。4.2 数据结构设计与说明定义进程结构体:struct/定义进程结构体int Pid; /进程号 int P_state; /状态int num; /该进程所需资源总量int have; /该进程已占有资源数量int Waiting_num

12、;/当前等待资源号int pre_num; /上次申请资源号PCBN;定义系统资源结构体:struct/定义资源结构体int r_id;/资源idint r_state;/资源状态resourceM;4.3 算法设计第一部分:初始化三个进程和资源结构体 初始化三个进程:/初始化当前各个资源申请量,这里以数组的结构体数组的形式初始化 printf(请输入每个进程所需要的资源总数n); /对进程进行初始化 printf(n); printf(进程编号 所需资源总数n); for (i=0;iN;i+) PCBi.Pid=i+1;/数组从0开始,但编序号为了可观性更好从1开始,所以为i+1 printf(%d ,PCBi.Pid); PCBi.P_state=Ready;/进程初始态为就绪态 PCBi.pre_num=0;/上次

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

当前位置:首页 > 办公文档 > 总结/报告

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