(1)系统资源分配图输入(界面) • 按资源分配图的形式定义,输入进程名字、资源类名字及其个数、申请/占有边。 (2)运行结果(界面) • ① 以图形的形式输出原资源分配图; • ② 以图形的形式动态输出原资源分配图约简过程 • 实现 (1)图的描述:定义资源类结点和进程结点的数据结构,以指针方式表示结点之间边的关系(可限定最多指针个数); (2)按算法对描述的资源分配图进行约简,同时用动态图形显示约简过程; (3)约简结束后,给出资源分配图是否可完全约简的提示信息。
2019-12-21 21:15:29 2.45MB 死锁 判定
1
程序结构清晰,容易入手。死锁检测,MFC界面,操作简单。方便调试。
2019-12-21 21:11:21 6.4MB 操作系统 课程设计 死锁检测
1
本程序采用java语言实现,通过输入资源的数量和种类以及进程的数量,然后人为的拖拽完成资源分配图,最后让约简算法动态的输出。
2019-12-21 21:10:12 448KB 死锁
1
进程同步互斥——不死锁哲学家问题 java实现。计算机系统原理,课程设计,(1)利用进程并发执行原理,采用奇数号哲学家先拿左叉子,偶数号哲学家先拿右叉子的算法解决哲学家就餐问题。 (2)利用java中Swing技术将哲学家就餐的活动过程用可视图形化界面表示出来
1
银行家算法是避免死锁的一种重要方法,本实验要求用级语言编写和调试一个简单的银行家算法程序。
2019-12-21 20:49:48 6KB C++
1
含本人实验报告,有具体流程图,实验课上写的,有更好的想法可以提出,大家一起学习,赚点积分不容易
1
原创实测有效的一个c++检测线程死锁的解决方法,已应用于项目,实测有效 原创文章地址:https://blog.csdn.net/liaozhilong88/article/details/80354414
2019-12-21 20:07:54 288KB 线程死锁检测
1
#include using namespace std; const int M = 3; const int N = 5; int Ava[M] = {3, 3, 2}; int All[N][M] = {{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}}; int Nee[N][M] = {{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}}; int work[N+1][M] = {{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}}; int flag[N][2] = {{0,0},{0,0},{0,0},{0,0},{0,0}}; int count = 0; void Safe(int num); int main() { int num = 0; for (int k = 0; k < M; ++k) { work[num][k] = Ava[k]; } Safe(num); cout << "total: " << count; system("pause"); return 0; } void Safe(int num) { if (num == N) { count++; for (int m = 0; m < N; ++m) { cout << flag[m][1] << " "; } cout << endl; }
2019-12-21 19:43:22 1KB 死锁检测递归
1
银行家算法实现资源分配
2019-12-21 19:43:01 189KB 死锁 银行家和随机
1
本系统是为了能够使操作系统的进程能够正确地共享资源,并且不会因为共享资源而陷入死锁,对此,采用银行家算法。把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配
1