#set page(height: auto, margin: 1cm) #set text(font: "Source Sans 3") #let subject(name) = context { metadata((name: name, page: locate(here()).page())) } ////////////////////////// // Process Scheduling // ////////////////////////// #subject("process-scheduling") #import "/process-scheduling/utils.typ": task, display-processes #import "/process-scheduling/algorithms.typ": FCFS #let tasks = { task(1, 0, 10, 3) task(2, 20, 40, 2) task(3, 30, 20, 2) task(4, 60, 10, 3) task(5, 80, 30, 1) task(6, 90, 20, 1) task(7, 100, 50, 3) task(8, 130, 30, 2) task(9, 180, 10, 3) task(10, 200, 60, 1) } #display-processes(..FCFS(tasks)) #pagebreak() ///////////////////// // Demand Paging // ///////////////////// #subject("demand-paging") #import "/demand-paging/utils.typ": sim-demand-paging #set page(width: auto) #let requests = (7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0 , 1) #sim-demand-paging(requests, "FIFO") #pagebreak() /////////////////////// // Disk Scheduling // /////////////////////// #subject("disk-scheduling") #import "/disk-scheduling/algorithms.typ": schedule-fcfs #import "/disk-scheduling/utils.typ": draw-algo, compute-total #let places = (53, 98, 193, 37, 14, 124, 65, 67) #let min = 0 #let max = 199 #let result = schedule-fcfs(places) #let graph = draw-algo(result, min: min, max: max, width: 10) #let compute-total = compute-total.with(min: min, max: max) #table( columns: 2, inset: 0.5em, align: center + horizon, rotate( -90deg, reflow: true )[*FCFS* (total: #compute-total(result, wrap: false))], graph )