操作系统课程实验指导.pptVIP

  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文档。上传文档
查看更多
操作系统课程实验指导 实验一 进程同步与互斥 一、实验目的 1.掌握基本的同步与互斥算法,理解生产者消费者模型。 2.学习使用Windows 2000/XP中基本的同步对象,掌握相关API的使用方法。 3.了解Windows 2000/XP中多线程的并发执行机制,实现进程的同步与互斥。 二、实验内容 以生产者/消费者模型为依据,在Windows 2000环境下创建一个控制台进程,在该进程中创建n个线程模拟生产者和消费者,实现进程(线程)的同步与互斥。 三、实验性质 验证性 四、实验学时 2学时 五、实验环境 《C与C++程序设计学习与实验系统 》 六、实验原理及步骤 测试用例文件 测试用例文件用于描述各线程的有关信息,该文件内容及格式如下: 3 1 P 3 2 P 4 3 C 4 1 4 P 2 5 C 3 1 2 4 程序结构 为了方便,程序结构用如下的文字予以描述。 (1) 主函数 (2) 初始化缓冲区、消费请求队列及部分同步对象 (3) 提取线程信息 (4) 完成线程相关同步对象的初始化 (5) 创建线程,模拟生产者和消费者 (6) 等待所有线程结束 (7) 程序结束 (8) 消费者 (9) 有无消费请求?有,则继续(10);无,则转(16) (10) 此请求可满足?可满足,转(11);否,则阻塞,再转(10) (11) 确定产品位置 (12) 此产品正被消费?是,则阻塞,再转(12);否,则转(13) (13) 进入临界区(请求同一产品的消费者之间互斥) (14) 消费产品,并判断是否应该释放产品所占缓冲区 (15) 退出临界区,转(9) (16) 结束消费者线程 实验二 银行家算法实现资源分配 一、实验目的 在了解和掌握银行家算法的基础上,能熟练的处理课本例题中所给状态的安全性问题,能编制银行家算法通用程序,将调试结果显示在计算机屏幕上,再检测和笔算的一致性。 二、实验内容 设计五个进程{P0,P1,P2,P3,P4}共享三类资源{A,B,C}的系统,{A,B,C}的资源数量分别为10,5,7。进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源号以及为某进程分配资源后的有关资源数据。 三、实验性质 验证性 四、实验学时 2学时 五、实验环境 《C与C++程序设计学习与实验系统 》 六、实验原理及步骤 1.进程pi提出资源申请时,系统执行下列步骤: (1)若Request[i]≤Need[i],转(2); 否则错误返回 (2)若Request[i]≤Available, 转(3);否则进程等待 3)假设系统分配了资源,则有: Available:=Available-Request[i]; Allocation[i]:=Allocation[i]+Request[i]; Need[i]:=Need[i]-Request[i] (4)执行安全性算法,若系统新状态是安全的,则分配完成,若系统新状态是不安全的,则恢复原状态,进程等待 2.进行安全性检查,定义数据结构: Work:ARRAY[0..m-1] of integer; Finish:ARRAY[0..n-1] of Boolean; m代表资源的数量,n代表进程的数量 (1) Work:=Available; Finish:=false; (2) 寻找满足下列条件的i: a). Finish[i]=false; b). Need[i]≤Work; 如果不存在,则转(4) (3) Work:=Work+Allocation[i]; Finish[i]:=true; 转(2) (4) 若对所有i,Finish[i]=true,则系统处于安全状态,否则处于不安全状态 设request--i为进程p[i]的请求向量,如果requesti[j]=K,表示进程p[i]需要K个Rj资源。当系统发出请求后,系统按下述步骤开始检查: (1)、如果requesti[j]=need[i][j],转向步骤2;否则报告出错,申请的资源已经大于它需要的最大值。 (2)、如果requesti[j]=available[j],转向步骤3;否则报告出错,尚无足够的资源。 (3)、系统试探着把资源分配给p[i],并修改下列

文档评论(0)

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

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

1亿VIP精品文档

相关文档