Dr. Janibul Bashir
In this course, we will understand the conceptual pieces that are fundamental to operating systems: virtualization, concurrency, and persistence. In understanding the details, you will also learn the practical, including how an operating system does things like schedule the CPU, manage memory, and store files persistently.
ITT251
L1 (Mon, Thur, Fri)
Pre-Requisites: Knowledge of C Programming (Refer to HeadFirst C Book).
Reference Material for the course:
Video Lectures: Operating System by Prof. Sourav Bansal [Videos]
Announcements:
Classes started from 17 February 2025
(17-02-2025) -- [Lecture 1] Introduction to Computers.
(20-02-2025) -- [Lecture 2] Course Structure and OS Evolution.
(21-02-2025) -- [Lecture 3] Concept of CPU and Memory Virtualization.
(24-02-2025) -- [Lecture 4] Introduction to system calls, System calls for processor manipulation
(27-02-2025) -- [Lecture 5] System calls for file manipulation, File Descriptor Table
(28-02-2025) -- [Lecture 6] Interprocess communication (IPC): Using Files, Pipes()
(03-03-2025) -- [Lecture 7] IPC via Shared Memory, Signals and Signal Handlers
(06-03-2025) -- [Lecture 8] PC Architecture (x86), Registers, Physical Address Space Reference
(07-03-2025) -- [Lecture 9] Compilation Flow, Executable and Linkable Format (ELF)
(10-03-2025) -- [Lecture 10] Functional Call Implementation using Stacks
(17-03-2025) -- [Lecture 11] Physical Address Space, Introduction to Process
(20-03-2025) -- [Lecture 12] Implementation of System Call and Context Switch
(21-03-2025) -- [Lecture 13] Introduction to Memory Virtualization
(24-03-2024) -- [Lecture 14] Virtual memory implementation using Segmentation
(27-03-2024) -- [Lecture 15] Segment registers, GDT, IDT, Implementation of system call and Context Switch
(28-03-2024) -- [Lecture 16] Free Space Management, Segmentation Issues
(21-04-2025) -- [Lecture 17] Virtual Memory implementation using Paging, Page Tables
(22-04-2025) -- [Lecture 18] Paging Implementation in Real Systems
(24-04-2025) -- [Lecture 19] Paging Issues: Translation Lookaside Buffer
(25-04-2025) -- [Lecture 20] Paging Issues: MultiLevel Page Table, Inverted Page Tables
(28-04-2025) -- [Lecture 21] Beyond Physical Memory - Swap Space, Page Replacement Policies
(01-05-2025) -- [Lecture 22] Thrashing, Prepaging, Copy-on-write, Demand Paging, TLB reach
(02-05-2025) -- [Lecture 23] Operating system scheduling, Scheduling policies.
(05-05-2025) -- [Lecture 24] Multi-level Feedback Queue scheduling, Multiprocessor Scheduling (H/W: O(1), CFS, and BFS schedulars)
(07-05-2025) -- [Lecture 25] Introduction to Threads, PThread APIs.
(08-05-2025) -- [Lecture 26] Synchronization problem in threads: Critical Section Problem
(15-05-2025) -- [Lecture 27] Critical Section Problem and Mutex Lock -- Video
(16-05-2025) -- [Lecture 28 Part A] Hardware Primitives: testandset, compareandexchange, fetchandadd -- Video
(16-05-2025) -- [Lecture 28 Part B] Mutex Lock Performance Issues -- Video
[Online Discussion on 19-05-2025 for Lec 27 and 28]
(19-05-2025) -- [Lecture 29] Condition Variables: producer-consumer problem -- Video
(20-05-2025) -- [Lecture 30] Semaphores, Reader Writer Lock, Dinning Philosophers Problem -- Video
(22-05-2025) -- [Lecture 31] Concurrency Bugs: Deadlocks and their prevention -- Video
(23-05-2024) -- [Lecture 32] Deadlock Avoidance using Safe State Mechanism (Bankers Algorithm) -- Video
(27-05-2025) -- [Lecture 33] Interfacing Input output devices, Polling and interrupts. Direct Memory Access-- Video
(28-05-2025) -- [Lecture 34] Hard Disk Drives and their Geometry, Seek time, Rotational Delay -- Video
(29-05-2025) -- [Lecture 35] Disk Scheduling, Disk Management: Disk formatting, bad blocks, Boot Sector -- Video
(02-06-2025) -- [Lecture 36] RAIDs -- Video
(05-05-2025) -- [Lecture 37] File System Interface - Accessing files, File and Directory structure.
(06-05-2025) -- [Lecture 38] File System Implementation - Allocation of Data Blocks, Inodes, Space Management -- Video
Assignment 1: [will be evaluated in a lab session]
Part 1: Install Ubuntu on your system.
Part 2: Learn to use an ARM cross compiler. Write in your own words about cross compilation.
Part 3: Install arm-linux-gnueabi cross compiler.
Part 4: Study and Install the QEMU tool on your system and run programs using that tool.
Assignment 2: [will be evaluated in a lab session]
Part 1: -- Explore the source code of Linux Kernel (or FreeBSD)
Build a kernel to create an ISO file > Install the OS on your system
Part 2: -- Run the xv6 system on top of QEMU and explore its source code. Understand the shell program of xv6.