OS课程设计报告.doc
《OS课程设计报告.doc》由会员分享,可在线阅读,更多相关《OS课程设计报告.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计报告操作系统原理专业计算机科学与技术学生姓名谷 飞班级092学号指导教师李先锋完成日期2011年12月29日信息工程学院题目: 生产者与消费者的模拟实现一、设计目的本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。二、设计内容(1)概述模拟实现银行家算法避免死锁的出现,利用一种语言编程实现银行家算法,能够扫描数据完成分配,避免死锁 。解决的主要问题是利用银行家算法避免死锁。在操作系统中研究资源分配策略时也有类似的问题,系统中有限的资源要供多个进程使用,必须保证得
2、到资源的进程能在有限的时间内归还资源,以供它进程使用资源。如果资源分配不得当就会发生进程循环等待资源,各进程都无法继续执行下去的死锁现象。而最有代表性的避免死锁的算法,是Dijkstra的银行家算法。 银行家算法是避免死锁的一种重要方法,在课程设计中用C语言编写一个资源管理系统,并要用银行家算法和安全性算法检查是否允许分配资源给进程,避免死锁。通过课程设计,加深我们对了解有关资源申请、避免死锁等概念,并加深我们对银行家算法理解。提高了我们分析、解决问题的能力。(2)设计原理 在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不
3、安全状态,则分配,否则等待。银行家算法是避免死锁的一种重要方法,为实现银行家算法,系统必须设置若干数据结构。1、银行家算法中的数据结构a、可利用资源向量Available.这是一个含有m个元素的数据组,其中的每一个元素代表一类可利用的资源数目,其初值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态改变。b、最大需求矩阵Max。这是一个n*m的矩阵,它定义了系统中n个进程中每一个进程对m类资源的最大需求。c、分配矩阵Allocation。这也是一个n*m的矩阵,它定义了系统中每一类资源当前已分配给每一个进程的资源数。d、需求矩阵Need。这也是一个n*m的矩阵,用以表示
4、每一个进程尚需的各类资源数。2、银行家算法设Requesti是进程P的请求向量,如果Requestij=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:(1)如果Requestij=Needi,j,便转向步骤(2);否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。(2)如果Requestij=Availablej,便转向步骤(3);否则,表示尚无足够资源,P需等待。(3)系统试探着把资源分配给进程P,并修改下面数据结构中的数值: Availablej:=Availablej-Requestij; Allocationi,j:=Allocation
5、i,j+Requestij; Needi,j:=Needi,j-Requestij;(4)系统执行安全性算法,检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配个进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。3、安全性算法: a、设置两个向量: 工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,他含有m个元素,在执行安全算法开始时,Work:=Available。 Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finishi:=false;当有足够资源分配给进程时,再令Finishi=
6、true。 b、从进程集合中找到一个能满足下述条件的进程: Finishi=false; Needi,j=Workj;若没找到,执行步骤c,否则,执行步骤d。 c、当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行: Workj:=Workj+Allocationi,j; Finishi:=true; go to step2; d、如果所有进程的Finishi=true都满足,则表示系统处于安全状态;否则,系统处于不安全状态。(3)详细设计及编码结束程序选择所要分配的进程进行资源分配是否继续分配资源退出资源分配AVAILABLEi=AVAILABLEi-REQUEST
7、iALLOCATIONi=ALLOCATIONi+REQUESTiNEEDi=NEEDi-REQUESTi安全性检查输出系统不安全提示输出提示:同意分配请求REQUESTiAVAILABLEi输出错误提示开始输入相关数据项提出请求REQUESTiNEEDi输出错误提示YNNYNY 系统流程图: N Y系统功能流程图源程序#include #include const unsigned short SIZE_OF_BUFFER = 20; /缓冲区长度 unsigned short ProductID = 0; /产品号 unsigned short ConsumeID = 0; /将被消耗的产
8、品号 unsigned short in = 0; /产品进缓冲区时的缓冲区下标 unsigned short out = 0; /产品出缓冲区时的缓冲区下标 int g_bufferSIZE_OF_BUFFER; /缓冲区是个循环队列 bool g_continue = true; /控制程序结束 HANDLE g_hMutex; /用于线程间的互斥 HANDLE g_hFullSemaphore; /当缓冲区满时迫使生产者等待 HANDLE g_hEmptySemaphore; /当缓冲区空时迫使消费者等待 DWORD WINAPI Producer(LPVOID); /生产者线程 DWO
9、RD WINAPI Consumer(LPVOID); /消费者线程 int main() /创建各个互斥信号 g_hMutex = CreateMutex(NULL,FALSE,NULL); g_hFullSemaphore = CreateSemaphore(NULL,SIZE_OF_BUFFER-1,SIZE_OF_BUFFER-1,NULL); g_hEmptySemaphore = CreateSemaphore(NULL,0,SIZE_OF_BUFFER-1,NULL); /调整下面的数值,可以发现,当生产者个数多于消费者个数时, /生产速度快,生产者经常等待消费者;反之,消费者经
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OS 课程设计 报告
限制150内