欢迎来到天天文库
浏览记录
ID:12883220
大小:742.00 KB
页数:36页
时间:2018-07-19
《操作系统课程设计-银行家算法》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程设计报告课程名称操作系统课题名称银行家算法专业班级学号姓名指导教师2013年7月5日35湖南工程学院课程设计任务书课程名称操作系统课题银行家算法专业班级学生姓名学号指导老师审批任务书下达日期2013年6月24日任务完成日期2013年7月5日35一、设计内容与设计要求1.设计内容:课题1:银行家算法编制银行家算法通用程序,并检测所给状态的系统安全性。假设有n个进程m类资源,则有如下数据结构:(1)可利用资源向量Available。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收
2、而动态地改变。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
3、类资源K个,方能完成其任务。上述三个矩阵存在如下关系:Need[i,j]=Max[i,j]-Allocation[i,j]。设进程I提出请求Request[N],则银行家算法按如下规则进行判断:(1)如果Request[N]<=NEED[I,N],则转(2);否则,出错。(2)如果Request[N]<=AVAILABLE,则转(3);否则,出错。(3)系统试探分配资源,修改相关数据:AVAILABLE=AVAILABLE-REQUESTALLOCATION=ALLOCATION+REQUESTNEED=NEED-REQUEST(4)系统执行安全性检查,如安全,则分配成立;否
4、则试探险性分配作废,系统恢复原状,进程等待。35课题2:模拟操作系统中进程调度过程。要求设计一个程序,该程序可模拟对10个以上的进程进行FCFS、SJF、HRP的方式进行调度。(1)设计进程控制块PCB,进程控制块至少包括进程号、到达时间和要求服务时间;(2)动态或静态创建多个(≥10)进程;(3)实现FCFS、SJF、HRP调度算法;(4)调度所创建的进程并显示调度结果。课题3:模拟短进程优先(SJF)调度要求:(1)每一个进程有一个PCB,PCB的内容可以根据具体情况设定;(2)可以由用户界面设定互斥资源(包括两种:输入设备和输出设备)的数目;(3)进程数、进入内存的时间
5、和要求服务时间可以由用户界面设定,程序应检查其合理性;(4)进程之间存在一定的同步与互斥关系,可以通过界面进行设定,其表示方法如下:进程的服务时间由四段组成:I2C10O5C5(表示进程的服务时间由2个时间片的输入,10个时间片的计算,5个时间片的输出,5个时间片的计算组成);进程间的同步关系用一个段表示:W2,表示该进程先要等待P2进程执行结束后才可以运行,因此,进程间的同步与互斥关系、服务时间可以统一用五段表示为:I2C10O5C5W2;(5)可以在运行中显示各进程的状态:就绪、阻塞、执行;(6)采用可视化界面,可以在进程调度过程中随时暂停调度,查看当前进程的状态以及相应
6、的阻塞队列;(7)具有一定的数据容错性;(8)模拟6个以上短进程优先调度的程序。界面用VC中的MFC框架结构写。课题4:利用多线程模拟实现生产者/消费者问题。生产者/消费者问题是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。35要解决该问题,就必须让生产者在缓冲区满时休眠,等到下次消费者消耗缓冲区中
7、的数据的时候,生产者才能被唤醒,开始往缓冲区添加数据。同样,也可以让消费者在缓冲区空时进入休眠,等到生产者往缓冲区添加数据之后,再唤醒消费者。通常采用进程间通信的方法解决该问题,如采用信号量方法。如果解决方法不够完善,则容易出现死锁的情况。出现死锁时,两个线程都会陷入休眠,等待对方唤醒自己。课题5:模拟实现读者写者问题读者写者问题是一个经典的并发程序设计问题,是经常出现的一种同步问题。所谓读者写者问题,是指保证一个writer进程必须与其他进程互斥地访问共享对象的同步问题。读者写者问题可以这样的描述,有
此文档下载收益归作者所有