"同意分配请求~~~\n";Р elseР {Р cout<<"SORRY╮(╯▽╰)╭……你的请求被拒绝…\n";Р for (i=0;i<n;i++)Р {Р Available[i]+=Request[mi][i];Р Allocation[mi][i]-=Request[mi][i];Р Need[mi][i]+=Request[mi][i];Р }Р }Р for (i=0;i<m;i++) Р Finish[i]=0;Р char Flag; //标志位Р cout<<"是否再次请求分配?是请按Y/y,否请按N/n";Р while (1)Р {Р cin>>Flag;Р if (Flag=='Y'||Flag=='y'||Flag=='N'||Flag=='n')Р break;Р elseР {Р cout<<"请按要求重新输入:\n";Р continue;Р }Р }Р if (Flag=='Y'||Flag=='y')Р continue;Р else break;Р?}Р}Р模拟程序运行结果截图Р初始化状态:随机分派的进程和资源配置结构Р<—上一个失败的请求;因为分配后的状态不安全,所以未能得到资源。Р<—发起一个请求,系统试分配,分配后安全,所以请求成功,同时生成一个安全的进程执行序列。Р总结与心得Р在开始编写程序时,由于相关参数由用户自己进行输入时,由于运用scanf和printf语句,造成程序长度很长,而且输入子程序复杂度较高,程序反应速度也比较慢。后来改用cin和cout函数程序长度大大缩短。由于程序的可重复使用的方便性,采取设立标志位Flag,由用户输入命令(Y/N或y/n)用以作为程序继续运行和结束的标志。Р实验中老师要求对固定的资源进行分配,虽然实现相对较为简单,在此基础上,我进行了改进,可以手动输入资源和进程数目,下图为程序运行情况: