Learn some stuff about OS. UCI CS143a intro OS class is kind of bust, so I am taking a self-guided run through Stanford CS140 Operating Systems. The class features four main projects:
- Project 1: Threads
- Project 2: User Programs
- Project 3: Virtual Memory
- Project 4: File systems
I will only be working on the coding, and not the design docs of each project. I am going through lecture notes and may consider looking at exams.
Everything is run on docker. Run sudo make docker-container
. This will mount the local code base into /pintos
of the container, and changes made from a local text editor will be propagated. Run sudo make docker-bash
to bash into the container to build, run, and debug pintos.
- When switching between projects, make sure to edit
pintos/utils/Pintos.pm
line 362 andpintos/utils/pintos
line 259 so they are looking in the right build directory. Otherwise pintos will be unable to run tests for the project. - The project is now complete with a 100% test pass rate. Virtual memory was originally branched from master, and file system branched from virtual memory, but now everything is merged into master. The old branches will stay alive as stale branches. The course recommended building both project 3 and 4 on top of project 2 to make life easier, but I decided to build project 4 on top of project 3 for completeness. The commits at which each project finished (all testcases for that project pass):
- Project 1 Threads. Some of the docker setup might be messed up here.
- Project 2 User Programs
- Project 3 Virtual Memory
- Project 4 File Systems is HEAD on master branch
- See /docs for some implementation notes and final thoughts of the class.