This commit is contained in:
LinlyBoi
2023-03-18 19:20:36 +02:00
parent 6a243e302b
commit 9a2b1e6c68

View File

@@ -34,7 +34,7 @@ fn main() {
num += 1; num += 1;
} }
println!("sorting!"); println!("sorting!");
let sorted = fifo(processes); let sorted = sjf(processes, vec![], 0);
println!("You've entered: "); println!("You've entered: ");
for proc in sorted { for proc in sorted {
println!("{:#?}", proc) println!("{:#?}", proc)
@@ -92,28 +92,32 @@ pub fn fifo(mut procs: Vec<Process>) -> Vec<Process> {
(done_proc, clock) = proc.one_shot(clock); (done_proc, clock) = proc.one_shot(clock);
done_proc.turnaround = done_proc.calc_turn(); done_proc.turnaround = done_proc.calc_turn();
done_proc.waiting = done_proc.calc_wait(); done_proc.waiting = done_proc.calc_wait();
println!("{}", proc.remaining);
completed.push(done_proc); completed.push(done_proc);
} }
} }
completed completed
} }
pub fn sjf(mut procs: Vec<Process>, mut completed: Vec<Process>, clock_update: i32) -> Vec<Process> { pub fn sjf(mut procs: Vec<Process>, mut completed: Vec<Process>, mut clock: i32) -> Vec<Process> {
procs.sort_unstable_by_key(|proc| (proc.arrival, proc.burst)); procs.sort_unstable_by_key(|proc| (proc.burst, proc.arrival));
let mut clock: i32 = clock_update;
let mut completed_procs: Vec<Process> = vec![];
if procs.is_empty() { if procs.is_empty() {
completed_procs completed
} else { } else {
if procs[0] <= clock { let mut i = 0;
completed_procs.push(procs[0].one_shot(clock)); while i < procs.len() {
sjf(procs, completed_procs, completed_procs.last().completion_time_yknow_pls) if procs[i].arrival <= clock {
} else { let mut done_proc: Process;
clock += 1; (done_proc, clock) = procs[i].one_shot(clock);
sjf(procs, completed_procs, clock) done_proc.turnaround = done_proc.calc_turn();
done_proc.waiting = done_proc.calc_wait();
completed.push(done_proc);
procs.remove(i);
return sjf(procs, completed, clock);
} else {
i += 1
}
} }
sjf(procs, completed, clock + 1)
} }
} }