20 lines
549 B
Typst
Raw Normal View History

2024-12-02 22:56:33 +01:00
#import "utils.typ": *
#let FCFS(tasks) = {
let (processes, tasks) = _prepare-tasks(tasks)
let cur-time = 0
for task in tasks {
let proc = processes.at(task.id)
if task.arrival < cur-time {
proc.events.push((READY, task.arrival))
}
let wait-time = calc.max(0, cur-time - task.arrival)
proc.events.push((RUNNING, task.arrival + wait-time))
cur-time = task.arrival + task.duration + wait-time
proc.events.push((TERMINATED, cur-time))
processes.at(task.id) = proc
}
return _prepare-output(processes)
}