1、操作系统原理课程设计报告1 设计目的(1)进一步了解进程的并发执行(2)加强对进程死锁的理解(3)用银行家算法完成死锁检测2 设计内容给出进程需求矩阵 C、资源向量 R 以及一个进程的申请序列。使用进程启动拒绝和资源分配拒绝(银行家算法)模拟该进程组的执行情况。3 设计要求(1)初始状态没有进程启动;(2)计算每次进程申请是否分配,如:计算出预分配后的状态情况(安全状态,不安全状态) ,如果是安全状态,输出安全序列;(3)每次进程申请被允许后,输出资源分配矩阵 A 和可用资源向量 V;(4)每次申请情况应可单步查看,如:输入一个空格,继续下个申请。4 算法原理4.1 银行家算法中的数据结构(1
2、)可利用资源向量 Available它是一个含有 m 个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源数目。其数值随该类资源的分配和回收而动态地改变。如果 Availablej=K,则表示系统中现有 Rj 类资源 K 个。(2)最大需求短阵 Max这是个 nm 的矩阵,它定义了系统中 n 个进程中的每一个进程对 m 类资源的最大需求。如果 Max(i,j)K,表示进程 i 需要 Rj 类资源的最大数目为K。(3)分配短阵 Allocation这是一个 nm 的矩阵,它定义了系统中每一类资源当前已分配给每个进程的资源数。如果 Allocation(
3、i,j)K,表示进程 i 当前已分得 Rj 类资源的数目为 K。(4)需求矩阵 Need它是一个 nm 的矩阵,用以表示每一个进程尚需的各类资源数,如果Needi,j=K,则表示进程 i 还需要 Rj 类资源 k 个,方能完成其任务。上述三个矩阵间存在下述关系:Needi,j=Maxi,j-Allocationi,j4.2 银行家算法设 Requesti 是进程 Pi 的请求向量。如果 Requestijk,表示进程只需要 k 个 Rj 类型的资源。当 Pi 发出资源请求后,系统按下述步骤进行检查:(1)如果 Requestij#include #include #define FALSE 0#define TRUE 1#define W 10#define R 10int M ; int N ; int ALL_RESOURCEW;int MAXWR; int AVAILABLER; int ALLOCATIONWR; int NEEDWR; int RequestR; void output()int i,j;cout=M)couti;if(i=M) coutRequestj;if(RequestjNEEDij) coutAVAILABLEj)coutflag;void version()coutendl;cout“t 银 行 家 算 法 “endl;