Example #1
0
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++);
	}
	
		

}
Example #2
0
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);
}