CS 450: Project 2B: xv6 Lottery Scheduler

Overview

For this project, you will implement a Lottery Scheduler for xv6. The project description can be found here.

Notes

This project should be done alone! Congrats on making it to the last individual project! Copying code (from others) is considered cheating. If we detect plagiarized code, severe penalties will be applied. Please do us all a favor and do your own work (otherwise, why are you here?).

Getting the Starter Code

As before, you should go to the Github classroom link posted in Piazza. You should accept the invitation and then go to the link it gives you, and follow the same clone procedure as you did in in prior projects to get the starter code. You'll be using the included Docker container image just as with the other projects for building your code.

I have provided a Docker container for your use in the xv6 directory. You should use it the same way you did in the previous project, namely:

            
[you@machine] git clone https://github.com/IIT-CS450-F20/p2a-xv6-scheduling-yourid
[you@machine] cd p2b-xv6-scheduling-yourid
[you@machine] docker build . --tag p2b
[you@machine] docker run -it --volume $PWD:/p2b p2b bash
            
            
If you have a Linux machine, you can do it without Docker, but you'll likely need to install some packages, i.e., python and QEMU. You can also install a Linux VM using VirtualBox or VMware if you prefer. The easiest route though is likely Docker since you won't need to worry about installing packages. Windows 10 we've found to be particularly annoying for getting docker working, so be careful with copy and pasting the above commands. For example, if you're using Powershell on Windows, the docker run command would look more like:

            
[you@machine] docker run -it --volume ${PWD}:/p2b p2b bash
            
            

I believe for Cygwin you'll want something more like:

            
[you@machine] docker run -it --volume "%cd%":/p2b p2b bash
            
            

Windows Docker is especially picky about spaces in file paths, so if you're getting a weird error like "invalid reference format" check your full path.

Due Dates and Logistics

This project is due Friday, October 9, 2020 at 11:59PM. Late submissions will be penalized as per the syllabus.

Handing In

IMPORANT:Before you hand in, make sure to add (and commit) a file named info.txt which contains your full name and e-mail address. If I cannot associate your Github account with you, you cannot expect your code to be graded!

As you go, you should be making commits using git to your local repository (again, if you've not used git, you should go to the link above). When you're ready to hand in your code, you can just run:

            
[you@machine] make handin
            
            
If you have modified files you haven't commited, the handin script will warn you. This handin script actually just invokes git push.

Remember that you will be docked points for late work as per the syllabus.

Questions?

If you have questions, please first post them on Piazza so others can get the benefit of the instructor/TA's answer. Avoid posting code that will give away your solution or allow others to cheat. If this does not resolve your issue, contact the instructor or TA, or come to office hours.