int main() { int i; int count = 0; char buf[8]; /* the first part */ ps(); /* the second part */ setschedclass(RANDOMSCHED); prA = create(proc_a, 2000, 30, "proc A", 1, 'A'); prB = create(proc_b, 2000, 60, "proc B", 1, 'B'); prC = create(proc_c, 2000, 90, "proc C", 1, 'C'); resume(prA); resume(prB); resume(prC); sleep(10); kill(prA); kill(prB); kill(prC); double total_cnt; double a_percent, b_percent, c_percent; total_cnt = a_cnt + b_cnt + c_cnt; a_percent = (double) a_cnt / total_cnt * 100; b_percent = (double) b_cnt / total_cnt * 100; c_percent = (double) c_cnt / total_cnt * 100; kprintf("\nTest RESULT: A = %d, B = %d, C = %d, (%d : %d : %d)\n", a_cnt, b_cnt, c_cnt, (int) a_percent, (int) b_percent, (int) c_percent); /* the third part */ setschedclass(LINUXSCHED); resume(prA = create(proc, 2000, 5, "proc A", 1, 'A')); //ps(); resume(prB = create(proc, 2000, 50, "proc B", 1, 'B')); //ps(); resume(prC = create(proc, 2000, 90, "proc C", 1, 'C')); while (count++ < LOOP) { kprintf("M"); for (i = 0; i < 10000000; i++); } }
int main() { int i; int count = 0; char buf[8]; kprintf("\nHELLO WORLD\n"); for(i = 0; i < 10; i++){ srand(i); printf("%d\n", rand()); } /* Linux like Scheduler */ setschedclass(LINUXSCHED); resume(prA = create(proc, 2000, 15, "proc A", 1, 'A')); resume(prB = create(proc, 2000, 25, "proc B", 1, 'B')); // resume(prC = create(proc, 2000, 90, "proc C", 1, 'C')); while (count++ < LOOP) { kprintf("M"); for (i = 0; i < 10000000; i++) ; } return 0; }
int main() { srand(1); int i; int count = 0; char buf[8]; double total_cnt; double a_percent, b_percent, c_percent, d_percent; kprintf("\n\n########## Test Case1, linux-like scheduling basic(2 processes):\n"); setschedclass(LINUXSCHED); resume(prC = create(proc, 2000, 90, "proc C", 1, 'C')); while (count++ < LOOP) { kprintf("M"); for (i = 0; i < 10000000; i++); } kill(prC); kprintf("\n\n########## Test Case2, linux-like scheduling basic(4 processes):\n"); count=0; resume(prA = create(proc, 2000, 5, "proc A", 1, 'A')); resume(prB = create(proc, 2000, 50, "proc B", 1, 'B')); resume(prC = create(proc, 2000, 100, "proc C", 1, 'C')); while (count++ < LOOP) { kprintf("M"); for (i = 0; i < 10000000; i++); } kill(prA); kill(prB); kill(prC); kprintf("\n\n########## Test Case3, linux-like scheduling with priority 15 and 25 (3 processes):\n"); count = 0; setschedclass(LINUXSCHED); resume(prA = create(proc, 2000, 15, "proc A", 1, 'A')); resume(prB = create(proc, 2000, 25, "proc B", 1, 'B')); while (count++ < LOOP) { kprintf("M"); for (i = 0; i < 10000000; i++); } kill(prA); kill(prB); kprintf("\n\n########## Test Case4, linux-like scheduling with quantum 8 (3 processes):\n"); count = 0; setschedclass(LINUXSCHED); resume(prA = create(proc, 2000, 8, "proc A", 1, 'A')); resume(prB = create(proc, 2000, 8, "proc B", 1, 'B')); while (count++ < LOOP) { kprintf("M"); for (i = 0; i < 10000000; i++); } kill(prA); kill(prB); kprintf("\n\n########## Test Case5, linux-like scheduling with quantum 100 (3 processes):\n"); count = 0; setschedclass(LINUXSCHED); resume(prA = create(proc, 2000, 100, "proc A", 1, 'A')); resume(prB = create(proc, 2000, 100, "proc B", 1, 'B')); while (count++ < LOOP) { kprintf("M"); for (i = 0; i < 10000000; i++); } kill(prA); kill(prB); kprintf("\n\n########## Test Case6, linux-like scheduling with quantum 1000 (3 processes):\n"); count = 0; setschedclass(LINUXSCHED); resume(prA = create(proc, 2000, 1000, "proc A", 1, 'A')); resume(prB = create(proc, 2000, 1000, "proc B", 1, 'B')); while (count++ < LOOP) { kprintf("M"); for (i = 0; i < 10000000; i++); } kill(prA); kill(prB); count=0; kprintf("\n\n########## Test Case7, linux-like scheduling with big quantum(3 processes):\n"); setschedclass(LINUXSCHED); resume(prA = create(proc, 2000, 1000000000, "proc A", 1, 'A')); resume(prB = create(procsleep, 2000, 1000000000, "proc B", 1, 'B')); while (count++ < LOOP) { kprintf("M"); for (i = 0; i < 10000000; i++); } kill(prA); kill(prB); count=0; kprintf("\n\n########## Test Case8, linux-like scheduling with chprio(3 processes):\n"); setschedclass(LINUXSCHED); resume(prA = create(proc, 2000, 100, "proc A", 1, 'A')); resume(prB = create(procchprio, 2000, 100, "proc B", 1, 'B')); while (count++ < LOOP) { kprintf("M"); for (i = 0; i < 10000000; i++); } kill(prA); kill(prB); count=0; kprintf("\n\n########## Test Case9, linux-like scheduling with create(3 processes):\n"); setschedclass(LINUXSCHED); resume(prA = create(proc, 2000, 200, "proc A", 1, 'A')); resume(prB = create(proccreate, 2000, 200, "proc B", 1, 'B')); while (count++ < LOOP) { kprintf("M"); for (i = 0; i < 10000000; i++); } sleep(5); kill(prA); kill(prB); count=0; kprintf("\n\n########## Test Case10, linux-like scheduling with sleep across epoch(3 processes):\n"); setschedclass(LINUXSCHED); resume(prA = create(proclong, 2000, 200, "proc A", 1, 'A')); resume(prB = create(procsleepmore, 2000, 200, "proc B", 1, 'B')); while (count++ < LOOP*2) { kprintf("M"); for (i = 0; i < 10000000; i++); } sleep(5); kill(prA); kill(prB); kprintf("\n\n########## Test Case11, multi-q scheduling(3 processes):\n"); setschedclass(MULTIQSCHED); total_cnt=0; a_percent=0; b_percent=0; prA = create(proc_a, 2000, 100, "proc A", 1, 'A'); prB = createReal(proc_b, 2000, 10, "proc B", 1, 'B'); resume(prA); resume(prB); sleep(5); kill(prA); kill(prB); total_cnt = a_cnt + b_cnt ; a_percent = (double) a_cnt / total_cnt * 100; b_percent = (double) b_cnt / total_cnt * 100; kprintf("Test RESULT: A = %d, B = %d (%d : %d)\n", a_cnt, b_cnt, (int) a_percent, (int) b_percent); kprintf("\n\n########## Test Case12, multi-q scheduling(4 processes):\n"); setschedclass(MULTIQSCHED); total_cnt=0; a_percent=0; b_percent=0; c_percent=0; a_cnt=b_cnt=c_cnt=0; prA = create(proc_a, 2000, 100, "proc A", 1, 'A'); prB = createReal(proc_b, 2000, 10, "proc B", 1, 'B'); prC = createReal(proc_c, 2000, 10, "proc C", 1, 'C'); resume(prA); resume(prB); resume(prC); sleep(10); kill(prA); kill(prB); kill(prC); total_cnt = a_cnt + b_cnt + c_cnt; a_percent = (double) a_cnt / total_cnt * 100; b_percent = (double) b_cnt / total_cnt * 100; c_percent = (double) c_cnt / total_cnt * 100; kprintf("Test RESULT: A = %d, B = %d, C = %d (%d : %d : %d)\n", a_cnt, b_cnt, c_cnt, (int) a_percent, (int) b_percent, (int) c_percent); kprintf("\n\n########## Test Case13, multi-q scheduling without real proc(3 processes):\n"); setschedclass(MULTIQSCHED); total_cnt=0; a_percent=0; b_percent=0; a_cnt=0; b_cnt=0; prA = create(proc_a, 2000, 100, "proc A", 1, 'A'); prB = create(proc_b, 2000, 100, "proc B", 1, 'B'); resume(prA); resume(prB); sleep(5); kill(prA); kill(prB); total_cnt = a_cnt + b_cnt ; a_percent = (double) a_cnt / total_cnt * 100; b_percent = (double) b_cnt / total_cnt * 100; kprintf("Test RESULT: A = %d, B = %d (%d : %d)\n", a_cnt, b_cnt, (int) a_percent, (int) b_percent); }