【操作系统实验/Golang】实验3:进程死锁(银行家算法)

该文描述了一个程序设计实验,旨在通过银行家算法模拟资源分配以防止操作系统中的死锁。实验涉及进程数量、资源种类、资源需求和分配情况,以及在不同请求下系统的安全性分析。提供的测试数据和流程图展示了实验的具体操作和结果。
摘要由CSDN通过智能技术生成

1 实验问题描述

设计程序模拟避免进程死锁的银行家算法的工作过程。假设有系统中有n个进程P1, … ,Pn,有m类可分配的资源R1, … ,Rm,在T0时刻,进程Pi分配到的j类资源为Allocationij个,它还需要j类资源Need ij个,系统目前剩余j类资源Workj个,现采用银行家算法进行资源分配避免死锁的发生。

程序要求如下:

  1. 判断当前状态T0是否安全,如果安全,给出安全序列;如果不安全给出理由。

  1. 对于下一个时刻T1,某个进程Pk会提出请求Request(R1, … ,Rm),判断是否可以分配给P k进程请求的资源。

  1. 输入:

  1. 进程数量n,资源种类数m,以及各类资源的最大示例数量;

  1. T0时刻各个进程的资源分配情况Allocation、剩余所需资源Need:

  1. T1时刻,发出请求的进程编号pid,以及请求的资源情况reqs;

  1. 输出:

  1. 判断T0时刻是否安全的详细信息,如果安全,则输出安全的进程序列,否则提示不安全信息。例如:

security sequence:P1,P3,P4,P2,P0

  1. 判断T1时刻满足进程请求后系统是否安全的详细信息,最后给出是否可以满足该进程请求的结论信息。例如:

Conclusion:Requests of p1 is able to be granted.

2 测试数据

  1. 测试数据1:

n = 5, m = 3

pid

Allocation

Need

Available

0

0

1

0

7

4

3

3

3

2

1

2

0

0

1

2

2

2

3

0

2

6

0

0

3

2

1

1

0

1

1

4

0

0

2

4

3

1

Requests:

Pid=1, reqs=[1, 0, 2]

  1. 测试数据2

n = 5, m = 3

pid

Allocation

Need

Available

0

0

2

1

4

1

0

3

5

2

1

1

0

1

2

3

1

2

0

1

3

4

0

4

3

3

2

1

4

2

2

4

0

2

0

5

1

3

Requests:

a) Pid=3, reqs=[1, 2, 1]

b) Pid=3, reqs=[0, 1, 0]

c) Pid=4, reqs=[5, 1, 3]

d) Pid=4, reqs=[2, 0, 1]

3 流程图

4 实验结果

  1. 测试数据1:

  1. 测试数据2:

5 实验代码

请见GitHub。

https://github.com/Jackkee27/OS-Experiments/tree/main/exp3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值