This commit is contained in:
LinlyBoi
2023-03-20 22:22:49 +02:00
parent a7688e94c9
commit 31fe021509

View File

@@ -134,38 +134,33 @@ pub fn round_robin(procs: Vec<Process>, q: i32) -> Vec<Process> {
let mut current_time = 0; let mut current_time = 0;
let mut in_cpu: Vec<Process> = vec![]; let mut in_cpu: Vec<Process> = vec![];
let mut done: Vec<Process> = vec![]; let mut done: Vec<Process> = vec![];
while !buffer.is_empty() || !in_cpu.is_empty() { loop {
let mut counter = 0; let mut counter = 0;
if !buffer.is_empty() {
for proc in buffer.to_owned() { for proc in buffer.to_owned() {
if buffer.is_empty() {
continue;
}
if proc.arrival <= current_time { if proc.arrival <= current_time {
in_cpu.push(proc); in_cpu.push(proc);
buffer.remove(counter); buffer.remove(counter);
} }
counter += 1; counter += 1;
} }
} match in_cpu.to_owned().first_mut() {
if !in_cpu.is_empty() { Some(proc) => {
let mut current_proc = in_cpu.remove(0); (proc.remaining, current_time) = proc.quan_zap(q, current_time);
if current_proc.remaining < q { if proc.remaining == 0 {
current_time += current_proc.remaining; proc.completion_time = current_time;
proc.turnaround = proc.calc_turn();
proc.waiting = proc.calc_wait();
done.push(proc.to_owned());
} else { } else {
current_time += q; in_cpu.push(proc.to_owned())
} }
current_proc.remaining = current_proc.robin_zap(q); in_cpu.remove(0);
if current_proc.remaining == 0 {
current_proc.completion_time = current_time;
current_proc.turnaround = current_proc.calc_turn();
current_proc.waiting = current_proc.calc_wait();
done.push(current_proc);
} else {
in_cpu.push(current_proc);
} }
} else { None => current_time += 1,
current_time += 1; }
if in_cpu.is_empty() && buffer.is_empty() {
break;
} }
} }
done done