1. CS 6210 - Advanced Operating Systems
Just finished the 2021 spring semester of the course: CS 6210 - AOS: Advanced Operating Systems. Let me review the course contents and my thoughts :)
2. Course Contents
It was a fun fact that Microkernel was believed to be very slow based on Mach’s paper, but actually, it can perform much better! While Mach’s microkernel requires about 900 processor cycles for border crossing, it actually performed with only 123 processor cycles if it is created with the aim of the performance.
It covers two major virtualizations: Full Virtualization and Para Virtualization. How does the OS manage the page tables for each OS? Shadow page table? How can it execute the efficient mapping? How does it manage the memory allocation to each VM? Those questions will be answered in the lecture.
Various architectures such as Shared memory machines, SMP architecture, and DSM: Distributed Shared Memory are covered. The memory consistency models and hardware cache coherence (write-invalidate, write-update, etc) are also the topics here.
Another important topic is Synchronization. Spinlock, Spin locks with Delay, Ticket Lock, Array-based queueing lock (ABQL), Linked list based queueing lock are all covered. After the lecture, you can understand the pros and cons of each of them.
Barrier synchronization also has a variety of algorithms. It includes the Sense reversing barrier, Tree barrier, MCS Tree barrier, Tournament barrier , and Dissemination barrier.
Lightweight RPC reduces the overhead by creating the shared memory called A-stack. It can make the RPC cheap.
When you need to synchronize among the distributed servers, you can consider Lamport’s distributed mutual exclusion algorithm.
Also, it covers the latency limits: how we can reduce the latency in terms of RPC. The concept of Active Network is quite similar to the SDN: Software Defined Network.
- GMS: How can we use peer memory for paging across LAN?
- DSM: Can we make the cluster appear like a shared memory machine?
- DFS: How to use cluster memory for cooperative caching of files?
Failures and Recovery
- LRVM (Lightweight Recoverable Virtual Memory): Persistent memory layer in support of system services
- RioVista: Performance-conscious design of persistent memory
- Quicksilver: Making recovery a first-class citizen in OS design
- System issues in giant scale services (Lessons from Giant-Scale Services)
- MapReduce: Programming models for apps working on Big data
- CDN: Content Distribution Networks. Distributed Hash Table, Coral Approach
- Security and authentication using a private key infrastructure
3. Tests & Projects
For the projects, it has a total of 4 projects:
- Project 1: Virtual Machine Scheduling in KVM
- Project 2: Barrier Synchronization
- Project 3: Distributed Service using gRPC
- Project 4: Implement MapReduce Framework
All of them are quite hard and time-consuming. But you’ll get what you put in. I recommend starting the project as soon as possible.
It has total 3 tests: test 1, test 2, test 3 (Final). Something very different from the other courses is that the test questions are published before the test. Furthermore, it is allowed to discuss the answers among students. So, basically, preparing the answers and memorize them, and output during the test. Opinions are divided about this style of test.
It was definitely the toughest but greatest course! I am very impressed that Professor Kishore is very involved in the course. He held the office hour 1 hour every week and asked a lot of questions during the office hour. It helped us to understand.
Finally, I could earn A! 🎉 I gained more than 90% score for both tests & projects, but the generous grading helped me a lot. What I can say is, if you put in hard work, you will get a good score.
I’d definitely recommend this course to anyone interested in the operating system!