写一个编制时间片轮转调度算法,可自定义时间片的大小 ,编制静态优先级调度算法,优先级高低可自定义的代码
时间: 2024-03-06 21:50:26 浏览: 85
好的,以下是Python 3中编制时间片轮转调度算法的代码和编制静态优先级调度算法的代码,都可以自定义时间片大小和优先级高低:
时间片轮转调度算法:
```python
def time_slice_rr(processes, time_slice):
n = len(processes)
queue = [] # 进程队列
current_time = 0 # 当前时间
total_time = 0 # 运行总时间
index = 0 # 当前执行的进程在队列中的位置
# 将所有进程按照到达时间顺序加入队列
for process in processes:
queue.append(process)
while True:
# 选择下一个要执行的进程
if not queue:
break
current_process = queue[index]
# 执行进程
if current_process[1] > time_slice:
current_process[1] -= time_slice
current_time += time_slice
total_time += time_slice
# 将该进程放回队列末尾
queue.append(queue.pop(index))
else:
current_time += current_process[1]
total_time += current_process[1]
current_process[1] = 0
current_process.append(current_time) # 记录结束时间
queue.pop(index)
# 更新 index
index += 1
if index >= len(queue):
index = 0
return processes
```
静态优先级调度算法:
```python
def static_priority(processes, priority_list):
n = len(processes)
queue = [] # 进程队列
current_time = 0 # 当前时间
total_time = 0 # 运行总时间
# 将所有进程按照优先级顺序加入队列
for i in range(n):
priority = priority_list[i]
queue.append(processes[priority])
while True:
# 选择优先级最高的进程
if not queue:
break
current_process = queue[0]
# 执行进程
current_time += current_process[1]
total_time += current_process[1]
current_process[1] = 0
current_process.append(current_time) # 记录结束时间
queue.pop(0)
return processes
```
以上代码仅供参考,具体实现还需要根据实际需求进行修改。
阅读全文