
#磁盘调度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实现磁盘调度所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)