by Aleena Parvez | Nov 12, 2025
This document explains the crash-consistency problem in file systems and how journaling (write-ahead logging) effectively addresses it by recording transactions in a journal before applying changes to on-disk data. It covers fsck, journaling modes (data vs metadata journaling), recovery, and challenges like block reuse and protocols ensuring atomic updates despite crashes.
by Aleena Parvez | Nov 12, 2025
This lecture explains low-level OS mechanisms to run processes, handle system calls, and perform context switches. It includes function call stacks, privilege levels (user/kernel), trap instructions, interrupt descriptor tables, and detailed context switching processes in modern CPUs.
by Aleena Parvez | Nov 12, 2025
This lecture covers file system data structures like inodes, bitmaps, superblock, and blocks. It discusses metadata management, File Allocation Table (FAT), directory structures, free space management, and system calls for file operations, highlighting modern and traditional file system designs.
by Aleena Parvez | Nov 12, 2025
This lecture reviews the file abstraction as a linear byte array, inode structure, directory organization, and operations like open, read, write, and close. It explains hard links, symbolic links, directory trees, and mounting file systems to organize and manage persistent storage.
by Aleena Parvez | Nov 12, 2025
This lecture explains concurrency bugs in multithreaded programming including deadlocks (where threads wait indefinitely), atomicity bugs caused by race conditions, and order-violation bugs where expected execution order flips. It discusses detection, prevention using locks, condition variables, semaphores, and strategies for avoiding deadlocks such as lock ordering.