-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.rs
99 lines (89 loc) · 2.02 KB
/
main.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#![allow(dead_code)]
#![allow(mutable_borrow_reservation_conflict)] // 危险
use std::env;
/*
Virtualization
*/
// CPU
mod cpu_api;
mod cpu_intro;
mod cpu_sched;
mod cpu_sched_lottery;
mod cpu_sched_mlfq;
// VM
mod vm_beyondphys_policy;
mod vm_freespace;
mod vm_mechanism;
mod vm_paging;
mod vm_segmentation;
mod vm_smalltables;
/*
Concurrency
*/
// THREADS
// mod threads_intro;
/*
Persistence
*/
// FILE
mod dist_afs;
mod file_implementation;
mod file_raid;
// util
mod help;
fn main() {
let args: Vec<String> = env::args().collect::<Vec<String>>();
let args: Vec<&str> = args.iter().map(AsRef::as_ref).collect();
if args.len() < 2 {
println!("Nothing to do ,please use 'help' for some help ");
return;
}
match args[1] {
"help" => {
help::help();
}
"process_run" | "pr" => {
cpu_intro::parse_op(args);
}
"fork" => {
cpu_api::pares_op(args);
}
"scheduler" => {
cpu_sched::parse_op(args);
}
"lottery" => {
cpu_sched_lottery::parse_op(args);
}
"mlfq" => {
cpu_sched_mlfq::parse_op(args);
}
"relocation" => {
vm_mechanism::parse_op(args);
}
"segmentation" => {
vm_segmentation::parse_op(args);
}
"malloc" => {
vm_freespace::parse_op(args);
}
"paging_linear_translate" | "plt" => {
vm_paging::parse_op(args);
}
"paging_multilevel_translate" | "pmt" => {
vm_smalltables::parse_op(args);
}
"paging_policy" | "pp" => {
vm_beyondphys_policy::parse_op(args);
}
"vsfs" => {
file_implementation::parse_op(args);
}
"raid" => {
file_raid::parse_op(args);
}
"afs" => {
dist_afs::parse_op(args);
}
_ => println!("I dont know,what are you talking about,please use '-h' for some help "),
}
}