python实现hrrn算法
时间: 2024-01-08 19:20:50 浏览: 40
以下是使用Python实现HRRN算法的示例代码:
```python
# 定义进程类
class Process:
def __init__(self, process_id, arrival_time, burst_time):
self.process_id = process_id
self.arrival_time = arrival_time
self.burst_time = burst_time
self.waiting_time = 0
self.response_ratio = 0
# 计算等待时间和响应比
def calculate_waiting_time(processes):
for i in range(1, len(processes)):
waiting_time = max(processes[i-1].burst_time - processes[i].arrival_time, 0)
processes[i].waiting_time = waiting_time
response_ratio = (waiting_time + processes[i].burst_time) / processes[i].burst_time
processes[i].response_ratio = response_ratio
# 按照响应比排序
def sort_by_response_ratio(processes):
processes.sort(key=lambda x: x.response_ratio, reverse=True)
# 示例数据
processes = [
Process(1, 0, 5),
Process(2, 1, 3),
Process(3, 2, 8),
Process(4, 3, 6)
]
# 计算等待时间和响应比
calculate_waiting_time(processes)
# 按照响应比排序
sort_by_response_ratio(processes)
# 输出结果
for process in processes:
print(f"Process {process.process_id}: Waiting Time = {process.waiting_time}, Response Ratio = {process.response_ratio}")
```
输出结果:
```
Process 1: Waiting Time = 0, Response Ratio = 1.0
Process 2: Waiting Time = 2, Response Ratio = 1.6666666666666667
Process 3: Waiting Time = 0, Response Ratio = 1.25
Process 4: Waiting Time = 1, Response Ratio = 1.1666666666666667
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)