python实现磁盘调度

python实现磁盘调度,第1张

概述#磁盘调度n=int(input("请输入进程数:"))zhizhen=int(input("请输入指针初始位置:"))yemian=[]yemian1=[]yemian2=[]yemian41=[]defcunfang():#数据的存放foriinrange(n):jincheng=int(input("请输入第%d进程所在位置"%(i+1)))yemian.append([
#磁盘调度n=int(input("请输入进程数:"))zhizhen=int(input("请输入指针初始位置:"))yemian=[]yemian1=[]yemian2=[]yemian41=[]def cunfang():#数据的存放    for i in range(n):        jincheng=int(input("请输入第%d进程所在位置"%(i+1)))        yemian.append([jincheng,0])        yemian41.append([0,0])    print("您输入的界面信息为:")    print(yemian)def first():    global zhizhen    zhizhen1=zhizhen    yIDong=0    yemian1=yemian[:]    for i in range(n):        yemian1[i][1]=abs(float(zhizhen1)-float(yemian1[i][0]))        yIDong=yIDong+yemian[i][1]        zhizhen1=yemian1[i][0]    print("所得fcfs磁盘调度结果:")    print(yemian1)    yIDong=float(yIDong/n)    print("平均寻道长度为:%0.1f"%(yIDong))def zhen():#排序等简单处理    global zhizhen    global zhi    zhi=0    yIDong=0    zhizhen1=zhizhen    yemian2=yemian3[:]    global qian    qian=[]    global hou    hou=[]    global right    right=0    for i in range(n):        if(zhizhen1<=yemian2[i][0]):#问题:如果指针初始位置恰好在某一进程位置,会怎样?            yIDong=yemian2[i][0]            zhi=i            break    if (yIDong == zhizhen1):        if (abs(yIDong - yemian2[zhi - 1][0]) < abs(yIDong - yemian2[zhi + 1][0])):            zhi=zhi            right=1        else:            zhi=zhi-1    else:        if(abs(zhizhen1 - yemian2[zhi - 1][0]) < abs(zhizhen1 - yemian2[zhi][0])):            right=1        else:            right=0        zhi = zhi - 1    qian=yemian2[0:zhi+1]    hou=yemian2[zhi+1:]def sstf():    global yemian41    yemian4=yemian41[:]    global zhizhen    zhizhen1=zhizhen    global right    global zhi    global qian    qian1=qian[:]    global hou    ppp=0    global n    hou1=hou[:]    qqq=0    zhi1=zhi    if(right==1):        while(zhi1>=0):            yemian4[ppp][0]=qian1[zhi1][0]            yemian4[ppp][1]=zhizhen1-qian1[zhi1][0]            zhizhen1=yemian4[ppp][0]            zhi1=zhi1-1            ppp=ppp+1        ppp=0        zhi1=zhi+1        while(zhi1<n):            yemian4[zhi1][0]=hou1[ppp][0]            yemian4[zhi1][1]=hou1[ppp][0]-zhizhen1            zhizhen1=hou1[ppp][0]            zhi1=zhi1+1            ppp=ppp+1    else:        zhi1=zhi        ppp=0        zhizhen1=zhizhen        while(ppp<n-zhi1-1):            yemian4[ppp][0]=hou1[ppp][0]            yemian4[ppp][1]=hou1[ppp][0]-zhizhen1            zhizhen1 = hou1[ppp][0]            ppp=ppp+1        while(zhi1>=0):            yemian4[ppp][1]=zhizhen1-qian1[zhi1][0]            yemian4[ppp][0]=qian[zhi1][0]            zhi1=zhi1-1            zhizhen1=qian[zhi1][0]            ppp=ppp+1    print("所得sstf磁盘调度结果:")    print(yemian4)    for i in range(n):        qqq=qqq+yemian4[i][1]    qqq=float(qqq/n)    print("平均寻道长度为:%0.1f"%(qqq))def scan():    global  zhizhen    zhizhen1=zhizhen    global yemian3    yemian2=yemian3[:]    zhi3=0    ppp=0    for i in range(n):        if(zhizhen1<=yemian2[i][0]):#问题:如果指针初始位置恰好在某一进程位置,会怎样?            zhi3=i            break    zhi4=zhi3    global yemian41    while(zhi4<n):        yemian41[ppp][0]=yemian2[zhi4][0]        yemian41[ppp][1]=yemian2[zhi4][0]-zhizhen1        zhizhen1=yemian2[zhi4][0]        ppp=ppp+1        zhi4=zhi4+1    zhi4=zhi3-1    while(zhi4>=0):        yemian41[ppp][0]=yemian2[zhi4][0]        yemian41[ppp][1] = zhizhen1-yemian2[zhi4][0]        zhizhen1 = yemian2[zhi4][0]        ppp = ppp + 1        zhi4=zhi4-1    qqq=0    print("所得scan磁盘调度结果:")    print(yemian41)    for i in range(n):        qqq=qqq+yemian41[i][1]    qqq=float(qqq/n)    print("平均寻道长度为:%0.1f"%(qqq))def cscan():    global  zhizhen    zhizhen1=zhizhen    global yemian3    yemian2=yemian3[:]    zhi3=0    ppp=0    qqq=0    for i in range(n):        if(zhizhen1<=yemian2[i][0]):#问题:如果指针初始位置恰好在某一进程位置,会怎样?            zhi3=i            break    zhi4=zhi3    global yemian41    while(zhi4<n):        yemian41[ppp][0]=yemian2[zhi4][0]        yemian41[ppp][1]=yemian2[zhi4][0]-zhizhen1        zhizhen1=yemian2[zhi4][0]        ppp=ppp+1        zhi4=zhi4+1    zhi4 = zhi3    while(qqq<zhi4):        yemian41[ppp][0]=yemian2[qqq][0]        yemian41[ppp][1]=abs(zhizhen1-yemian2[qqq][0])        zhizhen1=yemian2[qqq][0]        ppp=ppp+1        qqq=qqq+1    print("所得cscan磁盘调度结果:")    print(yemian41)    qqq=0    for i in range(n):        qqq = qqq + yemian41[i][1]    qqq = float(qqq / n)    print("平均寻道长度为:%0.1f" % (qqq))if __name__ == '__main__':    cunfang()    yemian3 = yemian[:]    yemian3.sort(key=lambda x: x[0], )    print("进行简易排序:")    print(yemian3)    sss=0    zhen()    while(sss==0):        print("请输入1,2,3,4选择FCFS。sstF.SCAN.CSCAN等算法,其余终止程序(输入):")        rrr=int(input())        if(rrr==1):            first()        elif(rrr==2):            sstf()        elif(rrr==3):            scan()        elif(rrr==4):            cscan()        else:            print("运行结束!")            sss=1

总结

以上是内存溢出为你收集整理的python实现磁盘调度全部内容,希望文章能够帮你解决python实现磁盘调度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1159191.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存