预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

4〕需求矩阵need一、实验目的n*m矩阵need[ij]=k表示进程还需要的第j类资源的数目为kneed[ij]=max[ij]-allocation[ij]本实验要求学生编写和调试一个系统动态分配资源的简单模拟程序观察死锁产生的条件并采用适当的算法有效地防止和避免死锁的发生。5〕进程pi的请求向量request[i]具有m个元素的数组说明进程pi对每类资源的请求数目二、实验题目6〕工作向量work系统提供给进程继续运行所需各类资源数目初值:work:=available7〕状态标志finish第一题:用银行家算法实现资源分配。要求:具有n个元素的数据表示进程是否可在有限时间内获得所有资源执行完初值为fals(1)设计一个3个并发进程共享10个同类资源的系统进程可动态地申请资源和释放资源系统按各进程的申请动态地分配资源。(2)设计用银行家算法和随机分配算法实现资源分配的两个资源分配程序应具有显示或打印各进程依次要求申请的资源数以及依次分配资源的情况。(3)确定一组各进程依次申请资源数的序列在相同的情况下分别运行上述两种资源分配程序观察运行结果。第二题:用按序分配策略实现资源分配。要求:(1)设计一个3个进程共享10个资源的系统进程可动态地申请资源和释放资源系统按各进程的申请动态地分配资源。(2)设计用按序分配算法实现资源分配的资源分配程序应具有显示或打印各进程依次要求申请的资源号以及依次分配资源地情况。(3)确定两组各进程依次要求申请的资源号要求其中的一组中各进程按序地申请资源另一组中各进程申请资源不受序号限制分别运行上述设计的资源分配程序观察运行结果。#include<stdio.h>#include<stdlib.h>三、数据结构1〕可利用资源向量available/*----------------------#defineF0常量定义--------------------*/具有m个元素的数组available[j]=k表示系统中第j类资源有k个可用#defineT12〕最大需求矩阵max#definen5//进程数量n*m矩阵max[ij]=k表示进程i需要第j类资源的最大数目为k#definem3//资源种类数量/*--------------------------------------------------*/3〕分配矩阵allocation/*--------------------数据结构定义------------------*/intAvailable[m]={332};//可用资源intWork[m];intFinish[n];//工作向量//用以判断系统是否有足够资源分给相应进程kn*m矩阵allocation[ij]=k表示进程i当前已占用的第j类资源的数目为voidRecycle();intbackDos();//假设进程运行完资源回收//判断所有进程是否运行完完后返回操作系统Print();/*--------------------------------------------------*/}/*-----------------------进程-----------------------*/structPCB{return0;}intflag;//状态标志是否运行完/*--------------------------------------------------------------------*/intMax[m];//资源最大需求量//已分配资源intAllocation[m];intNeed[m];intRequest[m];/*----------------------------试分配函数-----------------------------*///试分配//还需要的资源//请求资源量inttryAdminister(intnum){}P[n];intj;for(j=0;j<m;j++)/*-----------------------函数声明--------------------*/inttryAdminister(intnum);//试分配if(P[num].Request[j]>P[num].Need[j]){voidsafeCheck(intnum);voidPrint();//安全性检查//状态输出printf("非法请求!\n\n");/*主函数(只需改变n、m和下面的初始数组便可形成新的进程量资源量和状态)*/returnF;intmain(){}elseif(P[num].Request[j]>Available[j]){intijnum;inttotal[n][m]={{753}{322}{902}{222}{433}};intha