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)

Book For OS Programming (P1): Programming in C by A.D. Marshall [html]

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:

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.