2022年银行家算法实验报告.docx
《2022年银行家算法实验报告.docx》由会员分享,可在线阅读,更多相关《2022年银行家算法实验报告.docx(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选学习资料 - - - - - - - - - 操作系统课程综合性试验报告:学号:2022 年11 月 20 日试验题目进程调度算法程序设计一、试验目的通过对安全性算法和银行家算法的模拟,进一步懂得资源安排的基本概念,加深对资源申请,资源安排银行家算法以及系统是否能安排安全性算法资源的懂得;二、设备与环境1. 硬件设备: PC 机一台2. 软件环境:安装Windows 操作系统或者Linux 操作系统,并安装相关的程序开发环境,如 C C+Java 等编程语言环境;三、试验内容用 C 语言或其它语言,如Java实现对资源的资源申请与安排;一银行家算法bank函数:进程 i 发出恳求资源申请,
2、1假如 Request j=needi,j, 转向步骤 2,否就认为出错,由于他所需要的资源数已经超过它所 宣布的最大值;2假如: Request ij=availablei,j,转向步骤 3,否就表示尚无足够资源,进程i 需等待;3假设以上两个条件都满意,就系统摸索着将资源安排给申请的进程,并修改下面数据结构中 的数值:Availablei,j= Availablei,j- Request j;Allocationij= Allocationij+ Request jneedij= needij- Request j;4试安排后,执行安全性检查,调用check函数检查此次资源安排后系统是否处
3、于安全状态;假设安全,才正式将资源安排给进程;否就本次摸索安排作废,复原原先的资源安排状态,让该进程等待;5用 do while 循环语句实现输入字符二安全性算法safe函数 : y/n 判定是否连续进行资源申请;1设置两个向量:工作向量 Work,它表示系统可供应应进程连续运行所需的各类资源数目,在执行安全性算法开头时,Work= Available ; 工作向量 Finish,它表示系统是否有足够的资源安排给进程,使之运行完成;开头时先做Finishi=false ;当有足够的资源安排给进程时,名师归纳总结 - - - - - - -第 1 页,共 11 页精选学习资料 - - - - -
4、 - - - - 再令 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.试验代码 #includ
5、e #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; 第 1 页名师归纳总结 - - - - - - -第 2 页,共 11 页精选
7、学习资料 - - - - - - - - - switchi 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; fori=0;in;i+ scanf%d,&availablei; printf 请输入最大需求矩阵:n; for i=0;im;i+ for j=0;jn;j+ scanf%d,&maxij;
8、 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; ifneedij0 第 2 页名师归纳总结 - - - - - - -第 3 页,共 11 页精选学习资料 - - - - - - - - - printf 您输入的第 %d 个进程的 %d 个资源数据有错,请重新输入 n,i,j; void init2 int i,j; for i=0;im;i+ for j=0;jn;j+ needij=max
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 银行家 算法 实验 报告
限制150内