Back
Shortest Job First
# Shortest Job First Scheduling Algorithm (SJF)
def First_Come_First_Serve(name_of_process, burst_time, number_of_processes):
waiting_time = 0
total_waiting_time = 0
total_turnaround_time = 0
print("Name Of Process\tBurst Time\tWaiting Time\tTurnAround Time")
for i in range(number_of_processes):
turnaround_time = waiting_time + burst_time[i]
total_turnaround_time += turnaround_time
print(f"{name_of_process[i]}\t\t{burst_time[i]}\t\t{waiting_time}\t\t{turnaround_time}")
total_waiting_time += waiting_time
waiting_time += burst_time[i]
print(f"\nAverage Waiting Time is:: {total_waiting_time / number_of_processes}\nAverage TurnAround Time is:: {total_turnaround_time / number_of_processes}")
def Sort(name_of_process, burst_time, number_of_processes):
for i in range(number_of_processes):
for j in range(number_of_processes):
if burst_time[i] < burst_time[j]:
burst_time[i],burst_time[j]=burst_time[j],burst_time[i]
name_of_process[i],name_of_process[j]=name_of_process[j],name_of_process[i]
First_Come_First_Serve(name_of_process, burst_time, number_of_processes)
def main():
name_of_process = []
burst_time = []
number_of_processes = int(input("Enter the number of processes: "))
for i in range(number_of_processes):
name_of_process.append(input(f"Enter name of process {i + 1}: "))
burst_time.append(int(input(f"Enter burst time for process {name_of_process[i]}: ")))
Sort(name_of_process, burst_time, number_of_processes)
if __name__ == "__main__":
main()