Operating Systems
Instructor
Dr. Janibul Bashir
Course Overview
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.
Course Code
ITT251
Lectures
L1 (Mon, Thur, Fri)
Pre-Requisites: Knowledge of C Programming (Refer to HeadFirst C Book).
Reference Material for the course:
Text Book (TB): Operating System Concepts by A. Silberschatz, P. B. Galvin and G. Gagne (Sixth Edition)
Reference (R): Operating Systems (Three easy pieces) by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau.
Video Lectures: Operating System by Prof. Sourav Bansal [Videos]
Announcements:
Classes started from 17 February 2025
Course Content
Introduction (TB-Chapter 1, 2, R2-Chapter 2)
(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.
System Calls (TB-Chapter 3, 4, R2-Chapter 4, 5, Video: L1,L2,L3)
(24-02-2025) -- [Lecture 4] Introduction to system calls, System calls for processor manipulation
(27-02-2024) -- [Lecture 5] System calls for file manipulation, File Descriptor Table
(28-02-2024) -- [Lecture 6] Interprocess communication (IPC): Using Files, Pipes()
(03-02-2024) -- [Lecture 7] IPC via Shared Memory, Signals and Signal Handlers
Processes (TB-Chapter 4, R2-Chapter 6, 13, 14 Video: L4,L5,L6)
(06-02-2025) -- [Lecture 8] PC Architecture (x86), Registers, Physical Address Space Reference
(07-02-2025) -- [Lecture 9] Compilation Flow, Executable and Linkable Format (ELF)
(10-02-2025) -- [Lecture 10] Functional Call Implementation using Stacks
Assignments
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.