《操作系统》课程综合性实验报告 姓名: 学号: 2025 年 11 月 20 日实验题目进程调度算法程序设计一、实验目的通过对安全性算法和银行家算法的模拟,进一步理解资源分配的基本概念,加深对资源申请,资源分配(银行家算法)以及系统是否能分配(安全性算法)资源的理解。二、设备与环境1. 硬件设备:PC 机一台2. 软件环境:安装 Windows 操作系统或者 Linux 操作系统,并安装相关的程序开发环境,如 C \C++\Java 等编程语言环境。三、实验内容用 C 语言(或其它语言,如 Java)实现对资源的资源申请与分配;(一)银行家算法(bank()函数):进程 i 发出请求资源申请, (1)假如 Request [j]<=need[i,j],转向步骤(2),否则认为出错,因为他所需要的资源数已经超过它所宣布的最大值。 (2)假如:Request i[j]<=available[i,j],转向步骤(3),否则表示尚无足够资源,进程 i 需等待。 (3)若以上两个条件都满足,则系统试探着将资源分配给申请的进程,并修改下面数据结构中的数值: Available[i,j]= Available[i,j]- Request [j]; Allocation[i][j]= Allocation[i][j]+ Request [j]; need[i][j]= need[i][j]- Request [j]; (4)试分配后,执行安全性检查,调用 check()函数检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进程。否则本次试探分配作废,恢复原来的资源分配状态,让该进程等待。(5)用 do{…}while 循环语句实现输入字符 y/n 推断是否继续进行资源申请。(二)安全性算法(safe()函数):(1)设置两个向量: 工作向量 Work,它表示系统可提供给进程继续运行所需的各类资源数目,在执行安全性算法开始时,Work= Available。 工作向量 Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做 Finish[i]=false;当有足够的资源分配给进程时, 再令Finish[i]=true。 (2)在进程中查找符合以下条件的进程: 条件 1:Finish[i]=false; 条件 2:need[i][j]<=Work[j] 若找到,则执行步骤(3)否则,执行步骤(4) (3)当进程获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行: Work[j]= Work[j]+ Allocation[i][j]; Finish[i]=true; goto step (2); (4)假如所有的 Finish[i]=true 都满足,则表示系统处于安全状态,否则,处于不安全状态。四、实验结果及分析1.实验设计说明 按 0 由用户输入,按 1 由系统...