The place holds my learning experience in the Georgia Tech OMSCS program
2023-07-31 To update...
2023-07-31
This is a graduate-level introductory course in operating systems. It covers OS topics including concurrency (threads) and synchronization, inter-process communication, resource management (CPU, memory, I/O), and distributed services.
There are three projects. Project 1 and 3 are in C and Project 4 is in C++ (Project 2 is skipped). All three projects are under a coherent theme: build a file server and the clients.
Project 1 focuses on multithreading. Basically, you need to build a HTTP-like protocol, so the clients can download files from the server. You need to work with low-level socket programming.
Project 2 focuses on Inter-Process Communication. It is usually considered as the most interesting and demanding project of the three. You need to have some thinking on the design, but I think it is quite straightforward if you understand what tools are available.
Project 3 is about building a simple distributed file system (yes, DIY your own Dropbox!). It could be overwhelming if you don't have sufficient knowledge of C++, because you need to read a lot of provided code and grasp the system architecture first. In this project, you don't deal with low-level socket programming anymore, but use gRPC instead. If you know well enough about how different classes interact with each other, the coding part is not that bad (the object-orient programming experience is much smoother than C programming in Project 1 and 3). But the ambiguity in some distributed file system semantics can lead to some painful moments. Overall, a good project because it is a very real-world application. I made a short video to demonstrate how it works.