Introduces process abstraction and management. Covers process definition, states (running, ready, blocked), process control block (PCB), CPU scheduler, context switching, state transitions, and system booting from BIOS through bootloader to kernel.
Introduction to xv6 teaching operating system for x86. Covers x86 assembly language basics including registers (eax, ebx, eip, esp, ebp), instructions (mov, push, pop, jmp, call, ret), function call mechanics, and caller/callee save register conventions.
Introduction to virtualization and cloud computing. Covers hypervisor/VMM basics, trap-and-emulate technique, x86 privilege rings, Popek-Goldberg theorem, paravirtualization (Xen), full virtualization (VMware), and hardware-assisted virtualization (KVM/QEMU) for x86 architecture.
Covers locks for achieving mutual exclusion in concurrent programs. Discusses lock implementation using hardware primitives like test-and-set, compare-and-swap, fetch-and-add. Explains spin locks, ticket locks, and techniques to avoid spinning using yield and blocking.
Explains semaphores combining locks and condition variables for thread synchronization. Covers binary semaphores for mutual exclusion, semaphores for ordering events, producer-consumer bounded buffer problem, throttling threads, and implementing semaphores using locks and CVs.