void test_aging(char *name, char *arg) { kprintf("executing %s, this is tested with 25 frames only. change NFRAMES to 25\n", name); kprintf("setting aging policy\n"); srpolicy(AGING); char *addr = (char*) 0x40000000; //1G bsd_t bs = 1; int i = ((unsigned long) addr) >> 12; // the ith page get_bs(bs, 200); if (xmmap(i, bs, 200) == SYSERR) { kprintf("xmmap call failed\n"); return; } i = 0; kprintf("*******************generating first page fault\n"); *addr = 'A' + (i++); addr += NBPG; //increment by one page each time kprintf("************filling all the pages\n"); while (!is_free_frm_list_empty()) { *addr = 'A' + (i++); addr += NBPG; //increment by one page each time } kprintf("*************all pages filled\n"); kprintf("access first page again\n"); addr = (char*) 0x40000000; //1G *addr = 'A'; kprintf("************generating aging page fault\n"); addr += ((++i) * NBPG); //increment by one page each time *addr = 'Z'; kprintf("setting back fifo policy\n"); srpolicy(FIFO); }
void test7(){ int pid1; int ret = TPASSED; kprintf("\nTest 7: Test FIFO page replacement policy\n"); srpolicy(FIFO); pid1 = create(test_func7, 2000, 20, "test_func7", 0, NULL); resume(pid1); sleep(10); kill(pid1); kprintf("\n\tFinished! Check error and replaced frames\n"); }
void test8(){ int pid1; int ret = TPASSED; kprintf("\nTest 8: Test LRU page replacement policy\n"); srpolicy(LRU); pid1 = create(test_func8, 2000, 20, "test_func8", 0, NULL); resume(pid1); sleep(10); kill(pid1); kprintf("\n\tSecond run (test where killing process is handled correctly):\n"); pid1 = create(test_func8_2, 2000, 20, "test_func8_2", 0, NULL); resume(pid1); sleep(10); kill(pid1); kprintf("\n\tFinished! Check error and replaced frames\n"); }
/*------------------------------------------------------------------------ * main -- user main program *------------------------------------------------------------------------ */ int main() { int i, s; int count = 0; char buf[8]; kprintf("Aging policy:\n"); kprintf("\t1 - Default (FIFO no output)\n"); kprintf("\t2 - FIFO with output\n"); kprintf("\t3 - AGING with output\n"); kprintf("\nPlease Input:\n"); while ((i = read(CONSOLE, buf, sizeof(buf))) <1); buf[i] = 0; s = atoi(buf); switch (s) { case 1: // Default.. do nothing break; case 2: // FIFO with output srpolicy(FIFO); break; case 3: // AGING with output srpolicy(AGING); break; } kprintf("What test? Most of these best test when NFRAMES=12. Options are:\n"); kprintf("\t1 - Basic Test (Recommend NFRAMES=12)\n"); kprintf("\t2 - Virtual Heap Test (Recommend NFRAMES=12)\n"); kprintf("\t3 - Shared Memory Test (Recommend NFRAMES=12)\n"); kprintf("\t4 - Random Access Test (Recommend NFRAMES=22)\n"); kprintf("\t5 - Kill Test (Need NFRAMES=1024 and DUSTYDEBUG=1)\n"); kprintf("\t6 - Error Test\n"); kprintf("\t8 - Combo!\n"); kprintf("\nPlease Input:\n"); while ((i = read(CONSOLE, buf, sizeof(buf))) <1); buf[i] = 0; s = atoi(buf); switch (s) { case 1: // Basic Test basic_test(); break; case 2: // Virtual heap test vheap_test(); break; case 3: // Shared Memory Test shmem_test(); break; case 4: // Random Access Test random_access_test(); break; case 5: // Kill test kill_test(); break; case 6: // Kill test error_test(); break; case 8: // Kill test kill_test(); sleep(30); basic_test(); sleep(30); random_access_test(); sleep(30); vheap_test(); sleep(30); shmem_test(); sleep(30); error_test(); break; } return 0; }
int main() { int pid1; int pid2; srpolicy(FIFO); #if 0 kprintf("\n1: shared memory\n"); pid1 = create(proc1_test1, 2000, 20, "proc1_test1", 1, "P1"); resume(pid1); sleep(10); pid2 = create(proc2_test1, 2000, 20, "proc2_test1", 4, "P2",63,56,"special"); resume(pid2); sleep(10); #endif #if 0 kprintf("\n2: vgetmem/vfreemem\n"); pid1 = vcreate(memTest, 2000, 2, 20, "memTest", 4,"MT",78,92,"specialMem"); kprintf("pid %d has private heap\n", pid1); ASSERT(pid1 != SYSERR); resume(pid1); sleep(3); #endif #if 0 sleep(10); kprintf("\n3: Heap and Stack Load Test: Many processes with virtual mem, created and destroyed in a loop.\n"); pid1 = create(privateHeapLoadTest, 2000, 20, "privateHeapLoadTest", 0,NULL); if(pid1 == SYSERR) { kprintf("Cannot create process. Test launch FAIL.\n"); } resume(pid1); sleep(3); #endif #if 0 kprintf("\n4:FIFO test.\n"); srpolicy(FIFO); pid1 = create(fifo_test, 2000, 20, "fifo", 0, NULL); resume(pid1); sleep(20); #endif #if 1 kprintf("\n4:LRU test.\n"); srpolicy(LRU); kprintf("Current policy : %d\n",grpolicy()); pid1 = create(lru_test, 2000, 20, "lru", 0, NULL); resume(pid1); sleep(10); #endif #if 0 kprintf("\n4: Illegal Address Access Test. These 2 processes should get killed.\n"); pid1 = vcreate(badAccessTest, 2000, 50, 20, "badAccessTest", 0,NULL); pid2 = vcreate(badAccessTest, 2000, 50, 20, "badAccessTest", 0,NULL); if(pid1 == SYSERR) { kprintf("Cannot create process1. Test launch FAIL.\n"); } if(pid2 == SYSERR) { kprintf("Cannot create process2. Test launch FAIL.\n"); } resume(pid1); sleep(3); resume(pid2); sleep(3); kprintf("\n6: Test Done. Both the processes should have been killed now.\n"); sleep(60); #endif #if 0 kprintf("\n5: Peak Load Test: All backing stores fully mapped with first and last byte of every page written and tested. BS-15 shared amongst all process.\n"); pid1 = create(peakLoadTestLaunch, 2000, 20, "peakLoadTestLaunch", 0,NULL); if(pid1 == SYSERR) { kprintf("Cannot create process. Test launch FAIL.\n"); } resume(pid1); sleep(6000); #endif kprintf("=====================Main End============\n"); return 0; }