ACOL331 Operating Systems
2026-2027 Sem I
This course introduces the design and implementation of operating systems. In particular, we will slowly build the xv6 OS from scratch. Students should feel comfortable with hacking through an OS after having done this course.
Course Information
- Prerequisites: COL106 and COP290.
Note: The course includes programming assignments and thus expects proficiency with systems programming and debugging.
- Credits: 3-0-4
- Lectures: M4 Classroom 7. M 10-11am; T, Th 9-10am.
- Office hours: W 9:30-10am.
- Labs: M3 Computer Labs 3. W 8-10am, Th 3:30-5:30pm.
- IRA: Satyam Jay (anz238224 AT iitdabudhabi.ac.ae)
- Reading material:
- Operating systems: three easy pieces
- xv6 book
- Intel Software developer manuals
- Slides and the OS
- Lectures might link to more reading material.
Grading criteria
- 10% C lab exam (best 1 out of 2)
- 30% lab exams (best 3 out of 4)
- 30% minor exam
- 30% major exam
OS labs
- Lab 1: mouse driver, disk scheduling
- Lab 2: crash consistency, fsck
- Lab 3: system call and scheduling, valgrind
- Lab 4: page replacement
Policies
- Ethics: Please re-read IITD honour code. Academic dishonesty will earn you an F grade and will get a referral to the disciplinary committee. Why should I not cheat?
- Labs: Labs need not be submitted. You can practice them in groups of your liking. Afterwards, we will take an in-person lab exam where you might implement small extensions to the lab/answer questions related to the lab. There will be no makeup lab exams, we will count the scores from your best (n-1) lab exams where n is the total number of lab exams.
- Attendance: Attendance must be over 75%.
- Discussions should be done on Blackboard. Please don’t send individual mails.
Tentative topics
We will build an OS from scratch. We will learn topics as and when we add them to our OS. The topics will tentatively be covered in the following order:
- Booting: Bootloader, ELF format
- Input-output: Programmable interrupt controllers, traps, interrupt descriptor table
- File system: FS layout, buffer cache layer, name layer, crash consistency, devices as files
- Processes: memory segmentation, rings, process table, context switching, scheduling, system calls, exec system call
- Memory virtualization: memory hierarchy, address translation mechanism, demand paging, page replacement, thrashing, fork system call
- Concurrency and parallelism: data races, different types of locks
- Shell: pipes, IO redirection
Disclaimer: Actual course contents may differ.
Schedule
*: Lecture will be longer than 1 hour.
| Week | Mon | Tue | Wed | Thu | Thu |
|---|---|---|---|---|---|
| 1 | |||||
| 2 |
24 Aug
LEC 1: Introduction
Resource management, high-level services, protection and isolation.
|
25 Aug
LEC 2: Introduction
Why study OS? Shell commands
|
26 Aug
No lab
|
27 Aug
LEC 3: C basics
Variables, if, while, call-by-value/ref, pointers. Ch1-6
|
27 Aug
Lab: Shell practice
|
| 3 |
31 Aug
LEC 4: C basics
Arrays, strings, structs, malloc/free. Ch7-11
|
01 Sep
LEC 5: C basics
Heap/stack, function pointers, memory bugs. more, bugs
|
02 Sep
Lab: C practice
|
03 Sep
LEC 6: x86 ISA
General registers, eip, eflags, assembly.
|
03 Sep
Lab: C practice
|
| 4 |
07 Sep
LEC 7: x86 ISA
esp, ebp, gcc calling convention, objdump.
|
08 Sep
LEC 8: x86 ISA
ELF file format, loader, volatile keyword
|
09 Sep
Lab: Mock C Lab Exam
|
10 Sep
LEC 9:
|
10 Sep
C Lab Exam 1
|
| 5 |
14 Sep
LEC 10:
|
15 Sep
LEC 11:
|
16 Sep
C Lab Exam 2
|
17 Sep
LEC 12:
|
17 Sep
Lab:
|
| 6 |
21 Sep
LEC 13:
|
22 Sep
LEC 14:
|
23 Sep
Lab:
|
24 Sep
LEC 15:
|
|
| 7 |
28 Sep
LEC 16:
|
29 Sep
LEC 17:
|
30 Sep
Lab:
|
01 Oct
LEC 18:
|
01 Oct
Lab:
|
| 8 |
05 Oct
LEC 19:
|
06 Oct
LEC 20:
|
07 Oct
Lab:
|
08 Oct
LEC 21:
|
|
| 9 |
12 Oct
LEC 22:
|
13 Oct
LEC 23:
|
14 Oct
Lab:
|
15 Oct
LEC 24:
|
15 Oct
Lab:
|
| 10 |
19 Oct
break
|
20 Oct
break
|
21 Oct
break
|
22 Oct
LEC 25:
|
22 Oct
Lab:
|
| 11 |
26 Oct
mid-semester exam
|
27 Oct
mid-semester exam
|
28 Oct
mid-semester exam
|
29 Oct
mid-semester exam
|
29 Oct
mid-semester exam
|
| 12 |
02 Nov
LEC 26:
|
03 Nov
LEC 27:
|
04 Nov
Lab:
|
05 Nov
LEC 28:
|
|
| 13 |
09 Nov
LEC 29:
|
10 Nov
LEC 30:
|
11 Nov
Lab:
|
12 Nov
LEC 31:
|
12 Nov
Lab:
|
| 14 |
16 Nov
LEC 32:
|
17 Nov
LEC 33:
|
18 Nov
Lab:
|
19 Nov
LEC 34:
|
|
| 15 |
23 Nov
LEC 35:
|
24 Nov
LEC 36:
|
25 Nov
Lab:
|
26 Nov
LEC 37:
|
26 Nov
Lab:
|
| 16 |
30 Nov
Commemoration Day
|
01 Dec
LEC 38:
|
02 Dec
Lab:
|
03 Dec
UAE National Day
|
03 Dec
Lab:
|
| 17 |
07 Dec
LEC 39:
|
08 Dec
LEC 40:
|
09 Dec
Lab:
|
10 Dec
LEC 41:
|
10 Dec
Lab:
|
| 18 |
14 Dec
LEC 42:
|
15 Dec
LEC 43:
|
16 Dec
Lab:
|