Semaphores

Semaphores

This lecture covers semaphores as synchronization primitives with counters and their operations (up/post and down/wait). Topics include binary semaphores as mutexes, semaphore usage in producer-consumer problems, and handling deadlocks caused by semaphore misuse.

Threads

Threads

This lecture explains threads as lightweight processes sharing memory space. It discusses thread control blocks, POSIX threads in Linux, concurrency issues like race conditions, critical sections, locks, and synchronization primitives.

    Mechanism of Process Execution

    Mechanism of Process Execution

    This lecture covers how the OS runs processes, handles system calls, and performs context switches. It details privilege levels, kernel vs user stacks, trap instructions, interrupt descriptor tables, and saving/restoring context during process switches.

      Principles of Computer Systems Design

      Principles of Computer Systems Design

      This lecture introduces foundational design principles of computer systems such as modularity, abstraction, layering, virtualization, hierarchy, concurrency, caching, indexing, replication, and logging to build robust systems.