---------------------
Argument passing
- -5 args-argc: argc is not set correctly
- -5 args-argv0: executable name not passed as argv[0]
- -5 args-multiple: passing multiple arguments fails
- -5 args-dblspace: using multiple spaces between arguments fails
+ -4 args-argc: argc is not set correctly
+ -4 args-single: passing single argument fails
+ -3 args-argv0: executable name not passed as argv[0]
+ -3 args-argvn: argv[argc] is not a null pointer
+ -3 args-multiple: passing multiple arguments fails
+ -3 args-dbl-space: using multiple spaces between arguments fails
+Score: /20
+
+System calls
+ -4 sc-boundary: syscall with args across page boundary must work
+ -3 sc-bad-sp: system call with a bad stack pointer must not crash OS
+ -3 sc-bad-arg: syscall with argument off top of stack must not crash OS
+Score: /10
System calls: halt, exec
-1 halt: halt system call fails
- -2 exit: exit system call malfunctions
-Score: /3
+ -1 exit: exit system call malfunctions
+Score: /2
System calls: create
-2 create-normal: create a file in the most normal way
-1 create-bad-ptr: pass invalid pointer to create system call
-1 create-long: pass long file name to create system call
-1 create-exists: pass name of an existing file to create system call
-Score: /7
+ -1 create-bound: pass name of file crossing page boundary
+Score: /8
System calls: open
-2 open-normal: open a file in the most normal way
-2 open-missing: try to open a file that doesn't exist
+ -2 open-boundary: pass name of file crossing page boundary
-1 open-empty: pass empty string to open system call
-1 open-null: pass null pointer to open system call
+ -1 open-bad-ptr: pass invalid pointer to open system call
-1 open-twice: open the same file twice
-Score: /7
+Score: /10
System calls: close
-2 close-normal: close an open file in the most normal way
System calls: read
-2 read-normal: read from open file in most normal way
-2 read-bad-ptr: pass invalid pointer to read system call
+ -2 read-boundary: pass buffer crossing page boundary
-1 read-zero: try to read zero bytes
-1 read-stdout: try to read from stdout
-1 read-bad-fd: try to read from invalid file descriptor
-Score: /7
+Score: /9
System calls: write
-2 write-normal: write to open file in most normal way
-2 write-bad-ptr: pass invalid pointer to write system call
+ -2 write-boundary: pass buffer crossing page boundary
-1 write-zero: try to write zero bytes
-1 write-stdin: try to write to stdin
-1 write-bad-fd: try to write to invalid file descriptor
-Score: /7
+Score: /9
System calls: exec
-2 exec-once: call exec/join once
+ -2 exec-arg: check command-line passing on exec
-2 exec-multiple: call exec/join multiple times
-2 exec-missing: exec of nonexistent file must return -1
-1 exec-bad-ptr: pass invalid pointer to exec system call
-Score: /7
+Score: /9
System calls: join
-2 join-simple: join must return proper value
Score: /7
Multiprogramming
- -
-
-3. Multiprogramming / Page boundary checking (/50 points)
- Multiprogramming: Exec'ing two simple programs -30
- from another program doesn't work
- Open/Create fails on page boundary -5
- Read/Write fails on page boundary -5
- Can close file opened by parent -5
- Running out of physical memory crashes OS -5
- Shell test doesn't work with normal page size -5
- Shell test doesn't work with smaller page size -5
- Exec/Join tests 0 and 1 fail when we substitute a new
- bitmap.cc that returns pages in a random order. -5
-
------------
-Notes on the shell tests :
-
-Large page size echo/matmult test
- -5 if nothing works no matter what you do
- -4 if shell works in either case but matmult doesn't work in either case
-
-Small page size echo/matmult test
- -5 if nothing works no matter what you do
- -4 if shell works in either case but matmult doesn't work in either case
-------------
-
+ -3 multi-recurse: test recursively executing subprocesses
+ -3 multi-oom: exhausting user memory must not crash OS
+ -3 multi-child-fd: child must not be able to close parent's fds
+Score: /9