WIN
This commit is contained in:
32
src/main.rs
32
src/main.rs
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user