;j++){ Р cin>>Max[i][j]; Р } Р do{ Р flag=0; Рcout<<"请输入各进程已经分配资源量("<<m<<"*"<<n<<"矩阵)[Allocation]:"<<endl; Р for (int i=0;i<m;i++) Р for (j=0;j<n;j++) Р { Р cin>>Allocation[i][j]; Р if(Allocation[i][j]>Max[i][j]) Р flag=1; Р Need[i][j]=Max[i][j]-Allocation[i][j]; Р } Р if(flag) Р cout<<"首次输入的已分配资源已经大于最大需求量请重新输入!\n"; Р }while(flag);// 当申请资源符合要求时end do Р ShowData();//显示Р Safe();//安全检测Р if(l!=m)//当安全进程数不等于所有进程数Р unlock(); Р cout<<"运行结束"<<endl; Р cin>>over; Р}Р程序运行时的初值和运行结果Р实验体会Р通过本次实验,比较完整的掌握了操作系统的进程管理与资源分配原理,以及对操作系统安全性检验和死锁的解除的原理和方法。一开始,对于死锁的解除,我只是从第一个进程开始剥夺其资源,也不管它是不是发生了死锁,一直剥夺到死锁解除为止。然后,通过对程序进行改进,让其可以判断死锁进程与非死锁进程,然后从第一个死锁进程开始剥夺已分配资源。到最后,又进一步完善程序,让其判断一下在死锁进程中,哪个的已分配资源最多,就先剥夺它的资源,直到死锁解除。通过以上这几次对程序的改进,我不仅对死锁的解除有了更进一步的理解,也加深了对编程理念的认识。一种好的编程习惯、编程理念不仅可以帮助减少工作量,更可以帮助编程人员对程序的思想进行全面理解,对程序需求进行全面理解。