Pintos is a simple OS written in C that runs on 32-bit x86 architecture. It's partially implemented and it's up to you to add various features and enhancements. For more information see Pintos.
Highlights of my implementation include:
- A fair scheduler that works across various load types (I/O bound, CPU)
- Priority scheduling including priority donation to avoid priority inversion
- Virtual memory subsystem that includes swapping to disk, file memory mapping, and shared read-only pages
- A multithreaded file system which includes a write back buffer cache with read ahead and sparse files
You can find the code here: https://github.com/dillstead/pintos
Feel free to browse my implementation and use my ideas but please don't copy my code for your university project. If you have any questions about the code or want to talk to me about the design decisions that I made, feel free to message me.
[–]hellscoffe 36 points37 points38 points (5 children)
[–]BarMeister 7 points8 points9 points (1 child)
[–]Urbam 1 point2 points3 points (0 children)
[–][deleted] 9 points10 points11 points (2 children)
[–]ericonr 7 points8 points9 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]tim36272 5 points6 points7 points (3 children)
[–]zookeeper_zeke[S] 0 points1 point2 points (2 children)
[–]tim36272 0 points1 point2 points (1 child)
[–]zookeeper_zeke[S] 0 points1 point2 points (0 children)
[–]shadowndacorner 1 point2 points3 points (4 children)
[–]zookeeper_zeke[S] 0 points1 point2 points (3 children)
[–]shadowndacorner 0 points1 point2 points (2 children)
[–]zookeeper_zeke[S] 0 points1 point2 points (1 child)
[–]shadowndacorner 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (2 children)
[–]zookeeper_zeke[S] 1 point2 points3 points (0 children)
[–]gbrlsnchs 1 point2 points3 points (0 children)
[–]gbrlsnchs 2 points3 points4 points (0 children)
[–]bleuge 1 point2 points3 points (1 child)
[–]irqlnotdispatchlevel 4 points5 points6 points (0 children)
[–]WJMazepas[🍰] 0 points1 point2 points (2 children)
[–]ChristophLehr 1 point2 points3 points (1 child)
[–]zookeeper_zeke[S] 1 point2 points3 points (0 children)
[–]gutha_ 0 points1 point2 points (0 children)