Project 2 Grading Criteria
Load program, Print_String
When your GeekOS boots, it should start shell.exe. If shell.exe loads and
the prompt shows up and nothing crashes, you have passed this test.
This is good for a grade of 70.
Alternate Load program test
If you can't get Print_String to work but you can load a program
and call SYS_NULL, that is worth 60 points. If this is the
case with your program, alter main.c so that null.exe is loaded
when GeekOS boots and add a print statement to the Null syscall
handler. Printing "Have mercy upon my soul!" might be appropriate.
If this prints at startup and nothing crashes, you will receive
60 points and no other tests will be performed.
Get_Key()
If keys can be pressed at the shell.exe prompt and they show up properly,
this will earn you an additional 5 points.
Spawn_Program()
At the prompt, the grader will type:
/c/a.exe
The output should be:
The first string Hi ! This is the first string
The second string Hi ! This is the second string
This output will earn you an additional 5 points.
Exit()
After a.exe finishes, control should return to shell.exe. If this
happens without a crash, this will earn you an additional 5 points.
Wait()
At the prompt, the grader will type:
/c/long.exe
The output should be:
Start Long
End Long
%
The prompt should not appear until long.exe has exited. If your
output is something like:
Start Long
%End Long
This indicates a problem in your Wait() syscall.
Passing this test will earn you and additional 5 points.
Security
There will be two security tests that will test if you are
properly checking data passed through syscalls. These programs
will not be made available to you until after grading is
finished. These tests are worth 5 points each.
Note: In order to receive credit for the security tests, you
must have implemented the Sys_Print and Sys_Spawn
syscalls as follows:
- upon calling:
- ebx contains a pointer to the string
- ecx contains the length of the string
- upon return:
- for Sys_Print: eax contains 0 if the call succeeded, -1 if the call failed
- for Sys_Spawn: eax contains the new PID if the call succeeded, -1 if the call failed
If any part of a string that lies outside of user space, the
string should not be printed and the call should fail.