Operating System (UG)

  • Introduction: Process abstraction, System calls for process management, Process execution mechanisms, Scheduling policies, Inter-process communication.

  • Virtual Memory: Mechanism of address translation, Paging, Demand paging, Memory allocation and free space management algorithms.

  • Concurrency: Introduction to threads and concurrency, A sample tutorial on pthreads, Locks, Condition variables, Semaphores, Concurrency bugs.

  • I/O and Filesystems: Communication with I/O devices, Files and directories, File system implementation, Hard disk internals.

  • xv6 operating system: Process management in xv6, Synchronization, Memory management, The xv6 file systems.

  • Networking: Socket programming, Techniques to improve network I/O performance, [MICA] "MICA: A Holistic Approach to Fast In-Memory Key-Value Storage".

  • Advanced topics in OS and systems: Performance evaluation of computer systems, load testing, Little's law, CPU caches, cache coherence, optimizing cache performance, Multicore scalability, scalable locking, lock-free synchronization [Mosbench] "An Analysis of Linux Scalability to Many Cores", Distributed systems: fault tolerance, replication, consistency, distributed transactions.