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:

If any part of a string that lies outside of user space, the string should not be printed and the call should fail.