The project will be marked out of 50,
and contribute 25% to your asessment in the unit.
25 of the possible 50 marks will come from assessing your design and programming style,
the manual marking, which will assess:
Sufficient, clear and descriptive comments
Use of the C preprocessor for constants, rather than having embedded numbers in code
Consistent layout and regular indentation of code
Choice of meaningful identifier names
Design of data-structures to store device, process, and state information
Reading the two input files, and storing their contents in data-structures
Consistent approach to executing system-calls and state transitions (no special cases)
Use of functions to perform distinct actions to query or update data
Calculation and reporting of the total time spent on-CPU by all processes
(the last output line of your project).
25 of the possible 50 marks will come from assessing the correctness of your solution,
the automated marking,
which will assess your project's correct output (the measurements line)
with a number of different sysconfig and command input files that test -
Execution of one process (no I/O), which executes for less than one time-quantum
Execution of one process (no I/O), which executes for several time quanta
Execution of one process (no I/O), testing the 'sleep' system-call
Execution of two concurrent processes (no I/O), testing the 'spawn' system-call
Execution of multiple processes (no I/O), testing the 'spawn' and 'wait' system-calls
Execution of many concurrent processes (no I/O) alternating execution on the CPU
Execution of one process performing I/O
Execution of multiple processes performing I/O, competing for the data-bus