Files
rust-based-os-comp2022/user/src/bin/ch5_stride0.rs
2022-06-28 09:25:52 +08:00

44 lines
920 B
Rust
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#![no_std]
#![no_main]
#[macro_use]
extern crate user_lib;
use user_lib::{get_time, set_priority};
/*
理想结果6个进程退出时输出 count 基本正比于 priority
*/
fn spin_delay() {
let mut j = true;
for _ in 0..10 {
j = !j;
}
}
// to get enough accuracy, MAX_TIME (the running time of each process) should > 1000 mseconds.
const MAX_TIME: isize = 4000;
pub fn count_during(prio: isize) -> isize {
let start_time = get_time();
let mut acc = 0;
set_priority(prio);
loop {
spin_delay();
acc += 1;
if acc % 400 == 0 {
let time = get_time() - start_time;
if time > MAX_TIME {
return acc;
}
}
}
}
#[no_mangle]
pub fn main() -> usize {
let prio = 5;
let count = count_during(prio);
println!("priority = {}, exitcode = {}, ratio = {}", prio, count, count/prio);
0
}