print("起始位置为:",end='')
b = int(input())
print("进程号为(数字用空格分开):",end='')
a = list(map(int,input().split()))
print("CSCAN算法的移动方向(1为增,0为减):",end='')
yd = int(input())
c = abs(b-a[0])
d = [c]
for i in range(len(a)-1):
e = abs(a[i + 1] - a[i])
d.append(e)
c += e
print("FSFC算法:")
print("被访问的下 移动距离")
print("一个磁道号 (磁道数)")
for i in range(len(a)):
print(" " + "{:<19}".format(str(a[i])) +str(d[i]))
print("平均寻道长度为:"+str(c/len(a)))
e = a
e.insert(0,b)
e = sorted(e)
p = []
o = b
for i in range(len(e)):
m = e.index(o)
if(len(e) >= 2):
if m == 0:
p.append(e[1])
q = o
o = e[1]
e.remove(q)
elif len(e)-1 == m:
p.append(e[-2])
q = o
o = e[-2]
e.remove(q)
elif abs(e[m-1] - e[m]) < abs(e[m] - e[m+1]):
p.append(e[m-1])
q = o
o = e[m-1]
e.remove(q)
else:
p.append(e[m+1])
q = o
o = e[m+1]
e.remove(q)
c = abs(b-p[0])
t = [c]
for i in range(len(p)-1):
e = abs(p[i + 1] - p[i])
t.append(e)
c += e
print("SSTF算法:")
print("被访问的下 移动距离")
print("一个磁道号 (磁道数)")
for i in range(len(p)):
print(" " + "{:<19}".format(str(p[i])) +str(t[i]))
print("平均寻道长度为:"+str(c/len(p)))
t = a
t = sorted(t)
d = t.index(b)
col = b
c = 0
if yd == 1:
po = t[:d]
po.reverse()
e = t[d+1:] + po
print("SCAN算法:")
print("被访问的下 移动距离")
print("一个磁道号 (磁道数)")
for i in range(len(e)):
c += abs(col - e[i])
print(" " + "{:<19}".format(str(e[i])) +str(abs(col - e[i])))
col = e[i]
print("平均寻道长度为:"+str(c/len(p)))
if yd == 0:
po = t[d+1:]
po.reverse()
e = po + t[:d]
e.reverse()
print("SCAN算法:")
print("被访问的下 移动距离")
print("一个磁道号 (磁道数)")
for i in range(len(e)):
c += abs(col - e[i])
print(" " + "{:<19}".format(str(e[i])) +str(abs(col - e[i])))
col = e[i]
print("平均寻道长度为:"+str(c/len(p)))
操作系统python代码实现磁头调度算法
最新推荐文章于 2024-01-04 15:07:54 发布