Pintos
A significant element of this class are programming projects using Pintos. Pintos is a teaching operating system for 80x86. It is simple and small (compared to Linux). On the other hand, it is realistic enough to help you understand core OS concepts in depth. It supports kernel threads, virtual memory, user programs, and file system. But its original implementations are premature or incomplete. Through the projects, you will be strengthening all of these areas of Pintos to make it complete.
These projects are hard and cumulative by design. They have a reputation of taking a lot of time. But they are also as rewarding as they are challenging. Since Pintos is designed for 80x86 architecture, at the end of the projects, you could run theoretically the OS that you built on a regular IBM-compatible PC! Of course, during development, running Pintos on bare metal machines each time could be time consuming. Instead, you will run the projects in an x86 emulator running inside a Docker container.
You can work in groups of 1-3 people. So start talking with your classmates around once the course begins!
The complete Pintos documentation in PDF or HTML.
You should read everything below before attempting any of the projects
You’ll want to read these once you start work on the projects. Their advice can save you a lot of time:
If you use Visual Studio Code, here are several ways to use GDB within the code editors:
- Debug Pintos in VS Code (by Darren Liu)
- VSCode Development Setup (by Mustafa Quraish)
- Pintos Dev Container (by Jiasong Liang)
You need not read the reference guide, but you may find the information in it valuable from time to time:
Bracketed notations in Pintos source code comments can be looked up in the Bibliography.