无锡找厂网站,黑彩网站建设需要什么东西,访问域名,如何在淘宝上做自己的网站操作系统模拟之磁盘寻道算法。 文件共1份#xff0c;代码如下#xff1a;
import math
import random
import copydef alo_fcfs():print(您选择了FCFS算法#xff0c;执行结果如下#xff1a;)print(当前磁道号 下一磁道号 绝对差)print({:6d}{:1…操作系统模拟之磁盘寻道算法。 文件共1份代码如下
import math
import random
import copydef alo_fcfs():print(您选择了FCFS算法执行结果如下)print(当前磁道号 下一磁道号 绝对差)print({:6d}{:10d}{:8d}.format(start_numer, disk_queue[0], abs(start_numer - disk_queue[0])))sum_distance abs(start_numer - disk_queue[0])for i in range(disk_queue_length - 1):sum_distance sum_distance abs(disk_queue[i] - disk_queue[i 1])print({:6d}{:10d}{:8d}.format(disk_queue[i], disk_queue[i 1], abs(disk_queue[i] - disk_queue[i 1])))print({:6d} {} {}.format(disk_queue[i], None, None))print(寻道序列总长{:d}FCFS算法的平均寻道长度为{:.2f}.format(sum_distance, sum_distance / (disk_queue_length 1)))def alo_sstf():print(您选择了SSTF算法执行结果如下)print(当前磁道号 下一磁道号 绝对差)sum_distance 0last_number start_numertemp_queue copy.deepcopy(disk_queue)while len(temp_queue) 0:index 0min_diff 0x3f3f3f3ffor i in range(len(temp_queue)):if abs(temp_queue[i] - last_number) min_diff:index imin_diff abs(temp_queue[i] - last_number)print({:6d}{:10d}{:8d}.format(last_number, temp_queue[index], min_diff))last_number temp_queue[index]sum_distance sum_distance min_difftemp_queue.pop(index)print({:6d} {} {}.format(last_number, None, None))print(寻道序列总长{:d}SSTF算法的平均寻道长度为{:.2f}.format(sum_distance, sum_distance / (disk_queue_length 1)))def cal(temp_queue, start_number, index, left1, left2, right1, right2, step1, step2):last_number start_numberprint({:6d}{:10d}{:8d}.format(last_number, temp_queue[index], abs(last_number - temp_queue[index])))sum_distance abs(last_number - temp_queue[index])last_number temp_queue[index]for j in range(left1, right1, step1):print({:6d}{:10d}{:8d}.format(last_number, temp_queue[j], abs(last_number - temp_queue[j])))sum_distance sum_distance abs(last_number - temp_queue[j])last_number temp_queue[j]for j in range(left2, right2, step2):print({:6d}{:10d}{:8d}.format(last_number, temp_queue[j], abs(last_number - temp_queue[j])))sum_distance sum_distance abs(last_number - temp_queue[j])last_number temp_queue[j]print({:6d} {} {}.format(last_number, None, None))print(寻道序列总长{:d}FCFS算法的平均寻道长度为{:.2f}.format(sum_distance, sum_distance / (disk_queue_length 1)))def alo_scan():print(您选择了SCAN算法执行结果如下)print(请继续选择当前磁头运动方向)print(由低到高请输入1)print(由高到低请输入2)last_number start_numerdirection_choice int(input())temp_queue copy.deepcopy(disk_queue)temp_queue.sort()print()print(当前磁道号 下一磁道号 绝对差)if direction_choice 1:for j in temp_queue:if j start_numer:index temp_queue.index(j)breakcal(temp_queue, start_numer, index, index 1, index - 1, disk_queue_length, -1, 1, -1)elif direction_choice 2:for j in range(disk_queue_length - 1, -1, -1):if temp_queue[j] start_numer:index jbreakcal(temp_queue, start_numer, index, index - 1, index 1, -1, disk_queue_length, -1, 1)def alo_cscan():print(您选择了CSCAN算法执行结果如下)print(请继续选择当前磁头运动方向)print(由低到高请输入1)print(由高到低请输入2)last_number start_numerdirection_choice int(input())temp_queue copy.deepcopy(disk_queue)temp_queue.sort()print()print(当前磁道号 下一磁道号 绝对差)if direction_choice 1:for j in temp_queue:if j start_numer:index temp_queue.index(j)breakcal(temp_queue, start_numer, index, index 1, 0, disk_queue_length, index, 1, 1)elif direction_choice 2:for j in range(disk_queue_length - 1, -1, -1):if temp_queue[j] start_numer:index jbreakcal(temp_queue, start_numer, index, index - 1, disk_queue_length - 1, -1, index, -1, -1)if __name__ __main__:print(欢迎进入操作系统演示之磁盘寻道算法)print(现在开始数据初始化)print(请输入磁盘寻道序列长度10-20含端点)disk_queue_length int(input())if 10 disk_queue_length 20:print(输入成功)else:print(您输入的磁盘寻道序列长度超出给定范围请重新输入10-20含端点的数字)print(请输入磁盘寻道序列长度10-20含端点)disk_queue_length int(input())disk_queue []for k in range(disk_queue_length):disk_queue.append(random.randint(0, 200))start_numer random.randint(0, 200)print()print(生成的磁盘寻道序列为{}.format(disk_queue))while True:print()print(请选择要执行的磁盘寻道算法)print(选择FCFS请输入1)print(选择SSTF请输入2)print(选择SCAN请输入3)print(选择CSCAN请输入4)menu_choice int(input())if menu_choice 1:alo_fcfs()elif menu_choice 2:alo_sstf()elif menu_choice 3:alo_scan()elif menu_choice 4:alo_cscan()else:print(您选择的不在范围内请重新输入)print()continueprint()print(继续尝试其他算法请输入1)print(更新数据请输入2)print(结束程序请输入3)end_choice int(input())if end_choice 1:continueelif end_choice 2:print(现在开始更新数据)print(请输入更新的磁盘寻道序列长度10-20含端点)disk_queue_length int(input())if 10 disk_queue_length 20:print(更新成功)else:print(您输入的磁盘寻道序列长度超出给定范围请重新输入10-20含端点的数字)print(请输入磁盘寻道序列长度10-20含端点)disk_queue_length int(input())disk_queue []for k in range(disk_queue_length):disk_queue.append(random.randint(0, 200))print()print(更新的磁盘寻道序列为{}.format(disk_queue))start_numer random.randint(0, 200)else:print(程序退出成功)break