《操作系统实验要求.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《操作系统实验要求

实验一 银行家算法 2 一、目的和要求 2 二、实验内容 2 三、说明 2 四、实验总结与体会 3 实验二 进程同步 9 一、实验内容 9 二、实验目的 9 三、实验题目 9 四、实验报告 12 实验三 虚拟存储器 16 一、实验内容 16 二、实验目的 16 三、实验题目 16 四、实验报告 22 实验四 磁盘驱动调度 23 一、实验内容 23 二、实验目的 23 三、实验题目 23 四、实验报告 25 实验一 银行家算法 一、目的和要求 银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 二、实验内容 1.设计进程对各类资源最大申请表示及初值确定。 2.设定系统提供资源初始状况。 3.设定每次某个进程对各类资源的申请表示。 4.编制程序,依据银行家算法,决定其申请是否得到满足。 三、说明 算法设计思路:银行家算法又称“资源分配拒绝”法,其基本思想是,系统中的所有进程放入进程集合,在安全状态下系统受到进程的请求后试探性的把资源分配给他,现在系统将剩下的资源和进程集合中其他进程还需要的资源数做比较,找出剩余资源能满足最大需求量的进程,从而保证进程运行完成后还回全部资源。这时系统将该进程从进程集合中将其清除。此时系统中的资源就更多了。反复执行上面的步骤,最后检查进程的集合为空时就表明本次申请可行,系统处于安全状态,可以实施本次分配,否则,只要进程集合非空,系统便处于不安全状态,本次不能分配给他,请进程等待。 1.数据结构 假设有n个进程m类资源,则有如下数据结构: MAX[n*m] n个进程对m类资源的最大需求量 AVAILABLE[m] 系统可用资源数 ALLOCATION[n*m] n个进程已经得到m类资源的资源量 NEED[n*m] n个进程还需要m类资源的资源量 2.银行家算法 设进程I提出请求Request[m],则银行家算法按如下规则进行判断。 (1)如果Request[m]=NEED[I,m],则转(2);否则,出错。 (2)如果Request[m]=AVAILABLE,则转(3);否则,出错。 (3)系统试探分配资源,修改相关数据: AVAILABLE=AVAILABLE-REQUEST ALLOCATION=ALLOCATION+REQUEST NEED=NEED-REQUEST (4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。 3.安全性检查 (1)设置两个工作向量WORK=AVAILABLE;FINISH[n]=FALSE (2)从进程集合中找到一个满足下述条件的进程, FINISH[i]=FALSE NEED=WORK 如找到,执行(3);否则,执行(4) (3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 WORK=WORK+ALLOCATION FINISH=TRUE GO TO 2 (4)如所有的进程Finish[n]=true,则表示安全;否则系统不安全。 四、实验总结与体会 源程序示例: #define n 5 #define m 3 main() { /* void input(int *av,int **al,int **need);*/ /* int read_req(int *request,int *k);*/ /* int security(int *av,int **al,int **need);*/ int request[m],Available[m],Alloc[n][m],Need[n][m]; int i,j,k,t=0; input(Available,Alloc,Need); while(1) {t=0; if(read_req(request,k)) break; for(i=0;im;i++) { if(!(request[i]=Need[k-1][i])) {printf(\nillegal!);t=1;break;} } if(t)continue; for(i=0;im;i++) { if(!(request[i]=Available[i])) {printf(\nzuce!);t=1;break;} } if(t)continue; for(i=0;im;i++) { Available[i]=Available[i]-request[i]; Alloc[k-1][i]=Alloc[k-1][i]+reque

文档评论(0)

xiayutian80 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档