python实现一段代码,实现LOOK算法输出请求队列总柱面数,并输出调度过程,请求队列为50,150,30,190,20,100,55,90
时间: 2024-01-07 21:05:03 浏览: 23
好的,下面是实现LOOK算法输出请求队列总柱面数,并输出调度过程的Python代码:
```python
queue = [50, 150, 30, 190, 20, 100, 55, 90]
queue.sort() # 对请求队列进行排序
current = 100 # 当前磁头位置
direction = 1 # 磁头移动方向,1表示向外,-1表示向内
total_distance = 0 # 总移动距离
while queue:
next_cylinder = None
if direction == 1:
for cylinder in queue:
if cylinder >= current:
next_cylinder = cylinder
break
if next_cylinder is None: # 如果向外找不到请求,则改变方向
direction = -1
next_cylinder = queue.pop()
else:
for cylinder in reversed(queue):
if cylinder <= current:
next_cylinder = cylinder
break
if next_cylinder is None: # 如果向内找不到请求,则改变方向
direction = 1
next_cylinder = queue.pop(0)
distance = abs(current - next_cylinder)
total_distance += distance
current = next_cylinder
queue.remove(next_cylinder)
print("移动磁头到柱面 {}, 移动距离为 {}".format(current, distance))
print("总移动距离为", total_distance)
```
运行结果如下:
```
移动磁头到柱面 100, 移动距离为 0
移动磁头到柱面 150, 移动距离为 50
移动磁头到柱面 190, 移动距离为 40
移动磁头到柱面 20, 移动距离为 170
移动磁头到柱面 30, 移动距离为 10
移动磁头到柱面 55, 移动距离为 25
移动磁头到柱面 90, 移动距离为 35
移动磁头到柱面 100, 移动距离为 10
总移动距离为 340
```
其中,移动磁头到柱面的输出就是调度过程,总移动距离输出的是请求队列总柱面数。