20 lines
549 B
Typst
20 lines
549 B
Typst
#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)
|
|
} |