Web/cgi interfaces to some of the chapter homework simulators from http://www.ostep.org/ Download: all.tar.gz For use in courses, the interfaces require authentication and each student receives different random problems based on their userid. For external demonstration purposes there is a public version of scheduler which does not use any authentication and does not log the results for grading. Chapter simulator interfaces currently available: c04 - process-run c07 - scheduler c08 - MLFQ c15 - relocation c16 - segmentation c17 - malloc c18 - paging-linear-translate c20 - paging-multilevel-translate c22 - paging-policy c37 - disk c38 - raid c40 - vsfs c42 - fsck c44 - ssd c45 - checksum The public version of scheduler can be run at: https://www.ece.villanova.edu/cgi/scheduler-public Instead of files scheduler/{scheduler,scheduler-post,post.sh} it uses slightly modified files scheduler/{scheduler-public,scheduler-public-post,post-public.sh} Example execution flow on the server: scheduler (generate problem) -> scheduler-post (pre-process user submission) -> post.sh (check answers) Students can check their results using the -check interfaces, e.g. scheduler-check The random seed initialization for each problem should be kept secret. In the code provided here all secret random seeds were modified to have "123456789" prefix, but these should be changed to be different for each problem. For each simulator, sample output in examples/ shows the given problem (e.g. checksum.html), debug with answers (checksum-debug.html), and result checking (checksum-post.html). One example of student checking results is shown in checksum-check.txt All of the interfaces have optional user-defined seed and "ans" arguments. If the user specifies a seed then the results are not logged and the user can also request the answers to be shown. The seed is command-line argument $2, e.g. append +12345 to end of the URL query. If a seed is specified and $3 is not empty then the answers are shown. fsck takes two seeds. Examples: https://myserver/os/cgi/relocation?+4321 https://myserver/os/cgi/relocation?+4321+ans https://myserver/os/cgi/vsfs?operation+123456 https://myserver/os/cgi/vsfs?operation+123456+ans https://myserver/os/cgi/fsck?1+123+456 https://myserver/os/cgi/fsck?1+123+456+ans See sim-list.txt for a list of the command-line options used with the web interfaces. The original python scripts (in python/ here, with symlinks in the other subdirs) were obtained on May 31, 2021 from: https://github.com/remzi-arpacidusseau/ostep-homework/ To update with changes needed for the web interfaces: cd python && patch < ../DIFF The web interfaces use /opt/bin/dash, which can be a link to /bin/dash if available, otherwise install from: http://gondor.apana.org.au/~herbert/dash/ R. Perry, richard.perry@villanova.edu, http://fog.misty.com/perry/