import random
import time
class process:
def __init__(self, id, arrival, burst):
self.id = id
self.arrival = arrival
self.burst = burst
self.completion = 0
self.turnaround = 0
self.waiting = 0
def fcfs_scheduling(processes):
processes.sort(key=lambda x: x.arrival)
current_time = 0
for proc in processes:
if current_time < proc.arrival:
current_time = proc.arrival
proc.completion = current_time + proc.burst
proc.turnaround = proc.completion - proc.arrival
proc.waiting = proc.turnaround - proc.burst
current_time = proc.completion
return processes
random_processes = [
process(chr(97+i), random.randint(0,5), random.randint(1,10))
for i in range(random.randint(3,7))
]
scheduled = fcfs_scheduling(random_processes)
print("id arrival burst completion turnaround waiting")
for proc in scheduled:
time.sleep(0.5)
print(f"{proc.id} {proc.arrival} {proc.burst} {proc.completion} {proc.turnaround} {proc.waiting}")
aW1wb3J0IHJhbmRvbSAgCmltcG9ydCB0aW1lICAKCmNsYXNzIHByb2Nlc3M6ICAKIGRlZiBfX2luaXRfXyhzZWxmLCBpZCwgYXJyaXZhbCwgYnVyc3QpOiAgCiAgc2VsZi5pZCA9IGlkICAKICBzZWxmLmFycml2YWwgPSBhcnJpdmFsICAKICBzZWxmLmJ1cnN0ID0gYnVyc3QgIAogIHNlbGYuY29tcGxldGlvbiA9IDAgIAogIHNlbGYudHVybmFyb3VuZCA9IDAgIAogIHNlbGYud2FpdGluZyA9IDAgIAoKZGVmIGZjZnNfc2NoZWR1bGluZyhwcm9jZXNzZXMpOiAgCiBwcm9jZXNzZXMuc29ydChrZXk9bGFtYmRhIHg6IHguYXJyaXZhbCkgIAoKIGN1cnJlbnRfdGltZSA9IDAgIAogZm9yIHByb2MgaW4gcHJvY2Vzc2VzOiAgCiAgaWYgY3VycmVudF90aW1lIDwgcHJvYy5hcnJpdmFsOiAgCiAgIGN1cnJlbnRfdGltZSA9IHByb2MuYXJyaXZhbCAgCgogIHByb2MuY29tcGxldGlvbiA9IGN1cnJlbnRfdGltZSArIHByb2MuYnVyc3QgIAogIHByb2MudHVybmFyb3VuZCA9IHByb2MuY29tcGxldGlvbiAtIHByb2MuYXJyaXZhbCAgCiAgcHJvYy53YWl0aW5nID0gcHJvYy50dXJuYXJvdW5kIC0gcHJvYy5idXJzdCAgCiAgY3VycmVudF90aW1lID0gcHJvYy5jb21wbGV0aW9uICAKCiByZXR1cm4gcHJvY2Vzc2VzICAKCnJhbmRvbV9wcm9jZXNzZXMgPSBbICAKIHByb2Nlc3MoY2hyKDk3K2kpLCByYW5kb20ucmFuZGludCgwLDUpLCByYW5kb20ucmFuZGludCgxLDEwKSkgIAogZm9yIGkgaW4gcmFuZ2UocmFuZG9tLnJhbmRpbnQoMyw3KSkgIApdICAKCnNjaGVkdWxlZCA9IGZjZnNfc2NoZWR1bGluZyhyYW5kb21fcHJvY2Vzc2VzKSAgCgpwcmludCgiaWQgIGFycml2YWwgIGJ1cnN0ICBjb21wbGV0aW9uICB0dXJuYXJvdW5kICB3YWl0aW5nIikgIApmb3IgcHJvYyBpbiBzY2hlZHVsZWQ6ICAKIHRpbWUuc2xlZXAoMC41KSAgCiBwcmludChmIntwcm9jLmlkfSAgICAge3Byb2MuYXJyaXZhbH0gICAgICAge3Byb2MuYnVyc3R9ICAgICAgIHtwcm9jLmNvbXBsZXRpb259ICAgICAgICAge3Byb2MudHVybmFyb3VuZH0gICAgICAgICAge3Byb2Mud2FpdGluZ30iKQ==