andrew@theinternet

For Fall 2020, my fourth semester, I chose to take CS6200: Graduate Introduction to Operating Systems. This class teaches the functions, abstractions, and design theory of operating systems. It offers a good balance of theoretical coverage with practical examples from (mostly Unix-based) modern OS’s.

The practical coverage is augmented with rather large and complex projects in C and C++. Comfort with these languages is suggested as a prerequisite for the class, though I chose to jump in and try to pick that up as I went. This may have contributed to my assessment of the projects, honestly. The first project is to implement a socket-based file transfer protocol, complete with header parsing and support for multi-threading. The second project is to implement a proxy server and cache server, which communicate via shared memory. The third project is to leverage the gRPC framework and C++ language to implement a distributed file system with basic multi-client/server synchronization.


  • The screenshot images in these lecture notes are property of Georgia Tech. You can find the originals in the publicly available Kaltura videos.

Lecture Notes

  • Part 1 Lesson 1 - Introduction to Operating Systems
  • Part 2 Lesson 1 - Process and Process Management
  • Part 2 Lesson 2 - Threads and Concurrency
  • Part 2 Lesson 3 - PThreads Case Study
  • Part 2 Lesson 4 - Thread Design Considerations
  • Part 2 Lesson 5 - Thread Performance Considerations
  • Midterm Practice Questions
  • Part 3 Lesson 1 - Scheduling
  • Part 3 Lesson 2 - Memory Management
  • Part 3 Lesson 3 - Inter-Process Communication
  • Part 3 Lesson 4 - Synchronization Constructs
  • Part 3 Lesson 5 - I/O Management
  • Part 3 Lesson 6 - Virtualization
  • Part 4 Lesson 1 - Remote Procedure Calls
  • Part 4 Lesson 2 - Distributed File Systems
  • Part 4 Lesson 3 - Distributed Shared Memory
  • Part 4 Lesson 4 - Datacenter Technologies
  • Final Exam Practice Questions