Project 4 Grading Criteria
Intermediate submission (worth 10 points)
This will test kernel mapping. You should have paging turned on, as follows:
- Inside Init_VM() (defined in paging.c) insert a call to checkPaging()
before and after you call Enable_Paging(). So your code should
look like:
checkPaging();
Enable_Paging();
checkPaging();
- Now, when you launch QEMU, you should see the following in the output (before
the shell prompt):
Paging on?: 0
Paging on?: 1
- Finally, when QEMU starts up, nothing should crash and the shell prompt should come
up as usual. You should be able to run user mode executables like they used to run when paging wasn't enabled.
We'll test by checking the shell and running an user mode program (e.g. b.exe). We will also
check the code to make sure you have enabled paging.
Project 4 (worth 90 points)
- Turning On Paging:
- Described above. Enabling paging is worth 25 points.
- Dynamically Growing Stack using rec.c.
At the shell prompt, typing:
/c/rec.exe 300
should output:
calling Recurse 300
calling Recurse 299
calling Recurse 298
...
calling Recurse 1
return from Recurse 1
return from Recurse 2
...
return from Recurse 298
return from Recurse 299
return from Recurse 300
%
Correct implementation is worth 20 points: 10 from successful rec 300 once, 10 from repeated rec 300 success.
- Paging Out to a Swapfile using rec.c.
At the shell prompt, typing:
/c/rec.exe 3300
should output
calling Recurse 3300
calling Recurse 3299
calling Recurse 3298
...
calling Recurse 1
return from Recurse 1
return from Recurse 2
...
return from Recurse 3298
return from Recurse 3299
return from Recurse 3300
%
Correct implementation is worth 30 points: 15 from successful rec 3300 once, 15 from repeated rec 3300 success.
- Miscellaneous tests
Expect a few additional tests that, for example:
- user processes cannot access memory from other address spaces (other processes or the kernel),
- user processes that run out of memory fail (are terminated).
For testing, we may need to reduce the size of physical memory and of the pagefile so that tests
complete in reasonable time. Be careful with extra debugging messages: you will need to add
Print() statements to help track down problems, but you may have to remove them to speed execution
when testing. So, expect:
- bootInfo->memSizeKB will be reduced for testing (so that the tests run quickly) (do not hard code),
- pagefile.bin size will be reduced for testing (so that the tests run quickly) do not hard code.
- Code Review/Coding Style
The reading of your code for style and readability will be worth 15 points
Web Accessibility