操作系统python代码实现磁头调度算法

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)))

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值