2022年银行家算法实验报告 .pdf
《2022年银行家算法实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年银行家算法实验报告 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统课程综合性实验报告:学号:2016 年11 月 20 日实验题目进程调度算法程序设计一、实验目的通过对安全性算法和银行家算法的模拟,进一步理解资源分配的基本概念,加深对资源申请,资源分配银行家算法以及系统是否能分配安全性算法资源的理解。二、设备与环境1. 硬件设备: PC 机一台2. 软件环境:安装Windows 操作系统或者Linux 操作系统,并安装相关的程序开发环境,如 C C+Java 等编程语言环境。三、实验内容用 C 语言或其它语言,如Java实现对资源的资源申请与分配;一银行家算法bank()函数 :进程 i 发出请求资源申请,(1)如果 Request j=needi,
2、j, 转向步骤 (2),否则认为出错,因为他所需要的资源数已经超过它所宣布的最大值。(2)如果: Request ij=availablei,j,转向步骤 (3),否则表示尚无足够资源,进程i 需等待。(3)假设以上两个条件都满足,则系统试探着将资源分配给申请的进程,并修改下面数据结构中的数值:Availablei,j= Availablei,j- Request j;Allocationij= Allocationij+ Request j;needij= needij- Request j;(4)试分配后,执行安全性检查,调用check()函数检查此次资源分配后系统是否处于安全状态。假设安
3、全,才正式将资源分配给进程。否则本次试探分配作废,恢复原来的资源分配状态,让该进程等待。(5)用 dowhile 循环语句实现输入字符y/n 判断是否继续进行资源申请。二安全性算法safe()函数 : (1)设置两个向量:工作向量Work,它表示系统可提供应进程继续运行所需的各类资源数目,在执行安全性算法开始时,Work= Available 。 工作向量Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finishi=false ;当有足够的资源分配给进程时,精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 1
4、1 页第 1 页再令 Finishi=true 。(2)在进程中查找符合以下条件的进程:条件 1: Finishi=false ; 条件 2: needij=Workj 假设找到,则执行步骤(3)否则,执行步骤(4) (3)当进程获得资源后, 可顺利执行, 直至完成, 并释放出分配给它的资源,故应执行:Workj= Workj+ Allocationij; Finishi=true ; goto step (2);(4)如果所有的Finishi=true 都满足,则表示系统处于安全状态,否则,处于不安全状态。四、实验结果及分析1.实验设计说明按 0 由用户输入,按1 由系统提供数据2.实验代码
5、#include #include #include #define max_process 50 /最大进程数#define max_resource 100/ 最大资源数#define false 0 #define true 1 int availablemax_resource=3,3,2;/可利用资源向量int maxmax_processmax_resource=7,5,3,3,2,2,9,0,2,2,2,2,4,3,3;/最大需求矩阵int allocationmax_processmax_resource=0,1,0,2,0,0,3,0,2,2,1,1,0,0,2;/分配矩阵i
6、nt needmax_processmax_resource;/ 需求矩阵int requestmax_processmax_resource;/ 进程需要资源数int finishmax_process; int m=5,n=3; void init(); int safe(); void bank(); void init2(); void print(); void print2(); void main() int i; printf( 请输入测试数据,按0 由用户输入测试数据,按1 由系统提供测试数据:n); scanf(%d,&i); 精选学习资料 - - - - - - - -
7、- 名师归纳总结 - - - - - - -第 2 页,共 11 页第 2 页switch(i) case 0: init(); break; case 1: init2(); break; print(); safe(); bank(); void init() int i,j; printf( 请输入进程数目:n); scanf(%d,&m); printf( 请输入资源种类数目:n); scanf(%d,&n); printf( 请按顺序输入系统中可利用的每种资源量:n); for(i=0;in;i+) scanf(%d,&availablei); printf( 请输入最大需求矩阵:n
8、); for (i=0;im;i+) for (j=0;jn;j+) scanf(%d,&maxij); printf( 请输入分配矩阵:n); for (i=0;im;i+) for (j=0;jn;j+) scanf(%d,&allocationij); for (i=0;im;i+) for (j=0;jn;j+) needij=maxij-allocationij; if(needij0) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 11 页第 3 页printf( 您输入的第 %d 个进程的 %d 个资源数据有错,请重新输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年银行家算法实验报告 2022 银行家 算法 实验 报告
限制150内