Syllabus
Chapter 1: Processes
a. Introduction to operating systems
b. Process abstraction
c. System calls for process management
d. Process execution mechanisms
e. Scheduling policies
f. Inter-process communication
b. Process abstraction
c. System calls for process management
d. Process execution mechanisms
e. Scheduling policies
f. Inter-process communication
Chapter 2: Memory
a. Intro to virtual memory
b. Mechanism of address translation
c. Paging
d. Demand paging
e. Memory allocation and free space
b. Mechanism of address translation
c. Paging
d. Demand paging
e. Memory allocation and free space
Chapter 3: Concurrency
a. Introduction to threads and concurrency
b. Locks
c. Condition Variables
d. Semaphores
e. Concurrency bugs
b. Locks
c. Condition Variables
d. Semaphores
e. Concurrency bugs
Chapter 4: I/O and Filesystems
a. Communication with I/O devices
b. Files and directories
c. File system implementation
d. Hard disk internals
b. Files and directories
c. File system implementation
d. Hard disk internals
Hands-On Labs
1. Process and CPU monitoring: Understanding process and CPU monitoring on a Linux system using /proc and relevant Linux commands
2. Memory and disk monitoring: Understanding memory and disk usage by processes in a Linux system
3. Process management using a shell: Foreground and background processes, using the ps, exec, wait, kill commands
4. Dynamic memory management: mmap and munmap system calls
5. Multi-threaded programming: Using pthreads, locks and synchronization
2. Memory and disk monitoring: Understanding memory and disk usage by processes in a Linux system
3. Process management using a shell: Foreground and background processes, using the ps, exec, wait, kill commands
4. Dynamic memory management: mmap and munmap system calls
5. Multi-threaded programming: Using pthreads, locks and synchronization
Level
Undergraduate
Prerequisites
C/C++, Data Structures (for labs)
Category
Self-paced
Estimated Time
50 hours (theory), 15 hours (hands-on labs)
Meet the instructor
Mythili Vutukuru
Mythili Vutukuru is an Associate Professor at the Department of Computer
Science and Engineering at IIT Bombay. She obtained her Ph.D. and M.S. degrees in Computer Science from the
Massachusetts Institute of Technology in 2010 and 2006 respectively. She obtained a Bachelors in Computer Science
and Engineering from the Indian Institute of Technology, Madras in 2004.
Her main research interests lie in the broad area of networked systems. She likes to work on challenging research problems at the intersection of computer networking and real-world computer systems.
Her main research interests lie in the broad area of networked systems. She likes to work on challenging research problems at the intersection of computer networking and real-world computer systems.