试验三死锁的检测和解除
南华大学计算机科学与技术学院 实实 验验 报报 告告 课程名称课程名称操作系统操作系统 I I 姓姓名名 学学号号 专业班级专业班级 任课教师任课教师 日日期期 一、一、 实验内容实验内容 死锁的检测与解除 二、二、 实验目的实验目的 掌握操作系统的进程管理与资源分配原理, 掌握对操作系统安 全性检验和死锁的解除的原理和方法。 三、三、 实验题目实验题目 系统中有 m 个同类资源被 n 个进程共享, 每个进程对资源的最 大需求数分别为 S1,S2,…,Sn,且 Max(Si)n; N=n; for (i=0;i〈n;i++) { cout〈 〈“资源”mc; Name[i]=mc; cout〈”资源”i+1〈number; Available[i]=number; cout〈m; M=m; cout”请输入各进程的最大需求量(”〈 〈m〈 〈“*”〈n“矩阵) [Max]:”〈 〈endl; for (int i=0;i〈m;i++) for (int j=0;jMax[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〉over; } 七、七、 程序运行时的初值和运行结果程序运行时的初值和运行结果 八、八、 实验体会实验体会 通过本次实验,比较完整的掌握了操作系统的进程管理与资源分 配原理,以及对操作系统安全性检验和死锁的解除的原理和方法。 一 开始,对于死锁的解除,我只是从第一个进程开始剥夺其资源,也不 管它是不是发生了死锁,一直剥夺到死锁解除为止。然后,通过对程 序进行改进,让其可以判断死锁进程与非死锁进程,然后从第一个死 锁进程开始剥夺已分配资源。到最后,又进一步完善程序,让其判断 一下在死锁进程中,哪个的已分配资源最多,就先剥夺它的资源,直 到死锁解除。通过以上这几次对程序的改进 ,我不仅对死锁的解除有 了更进一步的理解,也加深了对编程理念的认识。一种好的编程习惯、 编程理念不仅可以帮助减少工作量, 更可以帮助编程人员对程序的思 想进行全面理解,对程序需求进行全面理解。