Introduction to Operating Systems

Introduction to Operating Systems. Instructor: Prof. Chester Rebeiro, Department of Computer Science and Engineering, IIT Madras. Operating systems (OS) provide the crucial interface between a computer's hardware and the applications that run on it. It allows us to write programs without bothering much about the hardware. It also ensures that the computer's resources such as its CPU, hard disk, and memory, are appropriately utilized. In this course, we dwell into how the OS manages to do all this in an efficient manner. This is an introductory course, for students with prior knowledge of computer organization. The course is based on an OS called xv6, which in many ways is similar to the Linux operating systems. (from

Lecture 17 - CPU Context Switching

In this lesson, we discuss about: how CPU is time-shared between multiple process, back end view of context switching, context switching overheads.

Go to the Course Home or watch other lectures:

Lecture 01 - Introduction to Operating Systems and its Uses
Lecture 02 - PC Hardware
Lecture 03 - From Programs to Processes, Memory Maps, System Calls, Files, OS Structure
Lecture 04 - Sharing the CPU: How the OS Shares the CPU
Memory Management
Lecture 05 - Introduction to Memory Management in the Operating System
Lecture 06 - Virtual Memory
Lecture 07 - MMU and Mapping
Lecture 08 - Segmentation
Lecture 09 - Memory Management in xv6
Lecture 10 - PC Booting
Lecture 11 - Introduction to Processes: How Operating Systems Manage Processes
Lecture 12 - Create, Execute, and Exit from a Process
Lecture 13 - System Calls for Process Management in xv6
Lecture 14 - Interrupts
Lecture 15 - Interrupt Handling
Lecture 16 - Software Interrupts and System Calls
Lecture 17 - CPU Context Switching
Lecture 18 - CPU Scheduling
Lecture 19 - Priority Based Scheduling Algorithms
Lecture 20 - Multiprocessor Scheduling
Lecture 21 - Scheduling in Linux
Lecture 22 - Completely Fair Scheduling
Lecture 23 - Inter Process Communication
Lecture 24 - Synchronization
Lecture 25 - How to Implement Locking: Software Solutions for Critical Sections
Lecture 26 - Bakery Algorithm for Synchronization
Lecture 27 - How to Implement Locking: Hardware Solutions for Critical Sections
Lecture 28 - Mutexes
Lecture 29 - Semaphores
Deadlocks and Threads
Lecture 30 - Dining Philosophers Problem
Lecture 31 - Deadlocks
Lecture 32 - Dealing with Deadlocks: Deadlock Avoidance, Deadlock Prevention
Lecture 33 - Threads (Lightweight Processes) Part 1
Lecture 34 - Threads (Lightweight Processes) Part 2
Lecture 35 - Operating System Security
Lecture 36 - Information Flow Policies
Lecture 37 - Buffer Overflows
Lecture 38 - Preventing Buffer Overflow Attacks