This is my work (in a team of 3) for the project of CSE120 - Principles of Computer Operating Systems at UCSD. In this project, we implement fundamental functionalities of operating systems. Here are what we did in each part of the project:
- Part 1: Thread join(), sleep(), Condition Variable, Rendevous monitor class, Promise (like the JS promise). (See the /threads directory).
- Part 2: File table, System calls (open, read, write, exec, exit), Virtual Memory. (See the /userprog directory)
- Part 3: Demand Paging, Page Swap using Clock Least Recently Used Algorithm. (See the /vm directory)
It is a really fun project and I learned a lot about the underlying implementation idea of many OS concepts. This by no means serves as a reference for other students of the CSE120 course.