Introduction to Operating Systems¶
- C Programming Coding Conventions
- Example Topic
- Resources
- P1L1
- 1 - Introduction
- 2 - Why Should I Take this Course?
- 3 - Course Overview
- 4 - Theory and Practice
- 5 - Course Materials
- 6 - Course Policies
- 7 - Visual Metaphor
- 8 - Your Learning Expectations
- P1L2
- 1 - Lesson Preview
- 2 - Visual Metaphor
- 3 - What is an Operating System?
- 4 - Operating System Definition
- 5 - Operating System Components Quiz
- 6 - Operating System Components Quiz Solution
- 7 - Abstraction or Arbitration Quiz
- 8 - Abstraction or Arbitration Quiz Solution
- 9 - Operating System Examples
- 10 - OS Elements
- 11 - OS Elements Example
- 12 - OS Design Principles
- 13 - OS Protection Boundary
- 14 - System Call Flowchart
- 15 - Crossing the OS Boundary
- 16 - OS Services
- 17 - System Calls Quiz
- 18 - System Calls Quiz Solution
- 19 - Monolithic OS
- 20 - Modular OS
- 21 - Microkernel
- 22 - Linux and Mac OS Architectures
- 23 - Lesson Summary
- 24 - Lesson Review
- P2L1 - Process and Process Management
- 1 - Lesson Preview
- 2 - Visual Metaphor
- 3 - What is a Process?
- 4 - What Does a Process Look Like?
- 5 - Process Address Space
- 6 - Address Space and Memory Management
- 7 - Virtual Addresses Quiz
- 8 - Virtual Addresses Quiz Solution
- 9 - Process Execution State
- 10 - Process Control Block
- 11 - How is a PCB Used?
- 12 - Context Switch
- 13 - Hot Cache Quiz
- 14 - Hot Cache Quiz Solution
- 15 - Process Life Cycle: States
- 16 - Process State Quiz
- 17 - Process State Quiz Solution
- 18 - Process Life Cycle: Creation
- 19 - Parent Process Quiz
- 20 - Parent Process Quiz Solution
- 21 - Role of the CPU Scheduler
- 22 - Length of Process
- 23 - What about I/O
- 24 - Scheduler Responsibility Quiz
- 25 - Scheduler Responsibility Quiz Solution
- 26 - Inter Process Communication
- 27 - Shared Memory Quiz
- 28 - Shared Memory Quiz Solution
- 29 - Lesson Summary
- 30 - Lesson Review
- P2L2: Threads and Concurrency
- 1 - Lesson Preview
- 2 - Visual Metaphor
- 3
- 4 - Benefits of Multithreading
- 5 - Benefits of Multithreading: Single CPU
- 6 - Benefits of Multithreading: Apps and OS
- 7
- 8
- 9 - Basic Thread Mechanisms
- 10 - Thread Creation
- 11 - Thread Creation Example
- 12 - Mutexes
- 13 - Mutual Exclusion
- 14 - Mutex Example
- 15 - Mutex Quiz
- 16 - Mutex Quiz Solution
- 17 - Producer and Consumer Example
- 18 - Condition Variables
- 19 - Condition Variable API
- 20 - Condition Variable Quiz
- 21 - Condition Variable Quiz Solution
- 22 - Reader-Write Problem
- 23 - Readers and Writer Example Part 1
- 24 - Readers and Writer Example Part 2
- 25 - Readers and Writer Example Part 3
- 26 - Critical Section Structure
- 27 - Critical Section Structure with Proxy
- 28 - Common Pitfalls
- 29 - Spurious Wake Ups
- 30 - Deadlocks Introduction
- 31 - Deadlocks
- 32 - Deadlocks Summary
- 33 - Critical Section Quiz
- 34 - Critical Section Quiz Solution
- 35
- 36 - Multithreading Models
- 37 - Scope of Multithreading
- 38 - Multithreading Patterns
- 39 - Boss - Workers Pattern
- 40 - How Many Workers?
- 41 - How Many Workers?
- 42 - Pipeline Pattern
- 43 - Layered Pattern
- 44 - Multithreading Patterns Quiz
- 45 - Multithreading Patterns Quiz Solution
- 46 - Lesson Summary
- 47 - Lesson Review
- P2L3
- 1 - Lesson Preview
- 2 - PThread Creation
- 3 - Compiling PThreads
- 4 - PThread Creation Example 1
- 5 - PThread Creation Quiz 1
- 6 - PThread Creation Quiz 1 Solution
- 7 - PThread Creation Example 2
- 8 - PThread Creation Quiz 2
- 9 - PThread Creation Quiz 2 Solution
- 10 - PThread Creation Example 3
- 11 - PThread Creation Quiz 3
- 12 - PThread Creation Quiz 3 Solution
- 13 - PThread Mutexes
- 14 - PThread Condition Variables
- 15 - Producer and Consumer Example Part 1
- 16 - Producer and Consumer Example Part 2
- 17 - Producer and Consumer Example Part 3
- 18 - Lesson Summary
- 19 - Lesson Review
- P2L4
- 1 - Lesson Preview
- 2
- 3 - Thread Data Structures: Single CPU
- 4 - Thread Data Structures: At Scale
- 5 - Hard and Light Process State
- 6 - Rationale for Data Structures
- 7 - Thread Structures Quiz
- 8 - Thread Structures Quiz Solution
- 9
- 10
- 11 - Basic Thread Management Interaction
- 12 - PThread Concurrency Quiz
- 13 - PThread Concurrency Quiz Solution
- 14 - Thread Management Visibilty and Design
- 15 - Issues on Multiple CPUs
- 16 - Synchronization-Related Issues
- 17 - Number of Threads Quiz
- 18 - Number of Threads Quiz Solution
- 19 - Interrupts and Signals Intro
- 20 - Visual Metaphor
- 21 - Interrupt Handling
- 22 - Signal Handling
- 23 - Why Disable Interrupts or Signals
- 24 - More on Signal Masks
- 25 - Interrupts on Multicore Systems
- 26 - Types of Signals
- 27 - Signals Quiz
- 28 - Signals Quiz Solution
- 29 - Interrupts as Threads
- 30
- 31 - Performance of Threads as Interrupts
- 32 - Threads and Signal Handling
- 33 - Threads and Signal Handling: Case 1
- 34 - Threads and Signal Handling: Case 2
- 35 - Threads and Signal Handling: Case 3
- 36 - Threads and Signal Handling: Case 4
- 37 - Tasks in Linux
- 38 - Lesson Summary
- 39 - Lesson Review
- P2L5
- 1 - Lesson Preview
- 2 - Which Threading Model is Better?
- 3 - Are Threads Useful?
- 4 - Visual Metaphor
- 5 - Performance Metrics Intro
- 6 - Performance Metrics
- 7 - Performance Metrics Summary
- 8 - Really… Are Threads Useful?
- Multi Process vs Multi Threads
- 10 - Multi Process Web Server
- 11 - Multi Threaded Web Server
- 12 - Event-Driven Model
- 13 - Concurrency in the Event Driven Model
- 14 - Event-Driven Model: Why
- 15 - Event-Driven Model: How
- 16 - Helper Threads and Processes
- 17 - Models and Memory Quiz
- 18 - Models and Memory Quiz Solution
- 19 - Flash Web Server
- 20 - Apache Web Server
- 21 - Experimental Methodology
- 22 - Experimental Results
- 23 - Summary of Performance Results
- 24 - Performance Observation Quiz
- 25 - Performance Observation Quiz Solution
- 26 - Advice on Designing Experiments
- 27 - Advice on Running Experiments
- 28 - Experimental Design Quiz
- 29 - Experimental Design Quiz Solution
- 30 - Lesson Summary
- 31 - Lesson Review
- P3L1
- 1 - Lesson Preview
- 2 - Visual Metaphor
- 3 - Scheduling Overview
- 4 - Run To Completion Scheduling
- 5 - SJF Performance Quiz
- 6 - SJF Performance Quiz Solution
- 7 - Preemptive Scheduling: SJF + Preempt
- 8 - Preemptive Scheduling: Priority
- 9 - Preemptive Scheduling Quiz
- 10 - Preemptive Scheduling Quiz Solution
- 11 - Priority Inversion
- 12 - Round Robin Scheduling
- 13 - Timesharing and Timeslices
- 14 - How Long Should a Timeslice Be
- 15 - CPU Bound Timeslice Length
- 16 - I O Bound Timeslice Length
- 17 - Summarizing Timeslice Length
- 18 - Timeslice Quiz
- 19 - Timeslice Quiz Solution
- 20 - Runqueue Data Structure
- 21 - Linux O(1) Scheduler
- 22 - Linux CFS Scheduler
- 23 - Linux Schedulers Quiz
- 24 - Linux Schedulers Quiz Solution
- 25 - Scheduling on Multiprocessors
- 26 - Hyperthreading
- 27 - Scheduling for Hyperthreading Platforms
- 28 - CPU Bound or Memory Bound
- 29 - Scheduling with Hardware Counters
- 30 - CPI Experiment Quiz
- 31 - CPI Experiment Results
- 32 - Lesson Summary
- 33 - Lesson Review
- P3L2
- 1 - Lesson Preview
- 2 - Visual Metaphor
- 3 - Memory Management: Goals
- 4 - Memory Management: Hardware Support
- 5 - Page Tables
- 6 - Page Table Entry
- 7 - Page Table Size
- 8 - Multi Level Page Tables
- 9 - Multi Level Page Table Quiz
- 10 - Multi Level Page Table Quiz Solution
- 11 - Speeding Up Translation TLB
- 12 - Inverted Page Tables
- 13 - Segmentation
- 14 - Page Size
- 15 - Page Table Size Quiz
- 16 - Page Table Size Quiz Solution
- 17 - Memory Allocation
- 18 - Memory Allocation Challenges
- 19 - Linux Kernel Allocators
- 20 - Demand Paging
- 21 - Page Replacement
- 22 - Least Recently Used (LRU) Quiz
- 23 - Least Recently Used (LRU) Quiz Solution
- 24 - Copy On Write
- 25 - Failure Management Checkpointing
- 26 - Checkpointing Quiz
- 27 - Checkpointing Quiz Solution
- 28 - Lesson Summary
- 29 - Lesson Review
- P3L3
- 1 - Lesson Preview
- 2 - Visual Metaphor
- 3 - Inter Process Communication
- 4 - Message Based IPC
- 5 - Forms of Message Passing
- 6 - Shared Memory IPC
- 7 - IPC Comparison Quiz
- 8 - IPC Comparison Quiz Solution
- 9
- 10 - SysV Shared Memory
- 11 - SysV Shared Memory API
- 12 - POSIX Shared Memory API
- 13 - Shared Memory and Sync
- 14 - PThreads Sync for IPC
- 15 - Sync for Other IPC
- 16 - Message Queue Quiz
- 17 - Message Queue Quiz Solution
- 18 - IPC Command Line Tools
- 19 - Shared Mem Design Considerations
- 20 - How Many Segments?
- 21 - Design Considerations
- 22 - Lesson Summary
- 23 - Lesson Review
- 1 - Lesson Preview
- 2 - Visual Metaphor
- 3 - More About Synchronization
- 4 - Spinlocks
- 5 - Semaphores
- 6 - POSIX Semaphores
- 7 - Mutex Via Semaphore Quiz
- 8 - Mutex Via Semaphore Quiz Solution
- 9 - Reader Writer Locks
- 10 - Using Reader Writer Locks
- 11 - Monitors
- 12 - More Synchronization Constructs
- 13 - Sync Building Block Spinlock
- 14 - Spinlock Quiz 1
- 15 - Spinlock Quiz 1 Solution
- 16 - Spinlock Quiz 2
- 17 - Spinlock Quiz 2 Solution
- 18 - Need for Hardware Support
- 19 - Atomic Instructions
- 20 - Shared Memory Multiprocessors
- 21 - Cache Coherence
- 22 - Cache Coherence and Atomics
- 23 - Spinlock Performance Metrics
- 24 - Conflicting Metrics Quiz
- 25 - Conflicting Metrics Quiz Solution
- 26 - Test and Set Spinlock
- 27 - Test and Test and Set Spinlock
- 28 - Test and Test and Set Spinlock Quiz
- 29 - Test and Test and Set Spinlock Quiz Solution
- 30 - Spinlock “Delay” Alternatives
- 31 - Picking a Delay
- 32 - Queueing Lock
- 33 - Queueing Lock Implementation - lang_en
- 33 - Queueing Lock Implementation
- 34 - Queueing Lock Array Quiz
- 35 - Queueing Lock Array Quiz Solution
- 36 - Spinlock Performance Comparisons
- 37 - Lesson Summary
- 38 - Lesson Review
- 1 - Lesson Preview
- 2 - Visual Metaphor
- 3 - IO Devices
- 4 - IO Devices Quiz
- 5 - IO Devices Quiz Solution
- 6 - IO Device Features
- 7 - CPU Device Interconnect
- 8 - Device Drivers
- 9 - Types of Devices
- 10 - IO Devices as Files Quiz
- 11 - IO Devices as Files Quiz Solution
- 12 - Pseudo Devices Quiz
- 13 - Pseudo Devices Quiz Solution
- 14 - Looking at Dev Quiz
- 15 - Looking at DevQuizSolution
- 16 - CPU Device Interactions
- 17 - Device Access PIO
- 18 - Device Access DMA
- 19
- 20
- 21 - Typical Device Access
- 22 - OS Bypass
- 23
- 24 - Block Device Stack
- 25 - Block Device Quiz
- 26 - Block Device Quiz Solution
- 27 - Virtual File System
- 28 - Virtual File System Abstractions
- 29 - VFS on Disk
- 30 - ext2 Second Extended Filesystem
- 31 - inodes
- 32 - inodes with Indirect Pointers
- 33 - inode Quiz
- 34 - inode Quiz Solution
- 35 - Disk Access Optimizations
- 36 - Lesson Summary
- 37 - Lesson Review
- 1 - Lesson Preview
- 2 - What is Virtualization
- 3 - Defining Virtualization
- 4 - Virtualization Tech Quiz
- 5 - Virtualization Tech Quiz Solution
- 6 - Benefits of Virtualization
- 7 - Benefits of Virtualization Quiz 1
- 8 - Benefits of Virtualization Quiz 1 Solution
- 9 - Benefits of Virtualization Quiz 2
- 10 - Benefits of Virtualization Quiz 2 Solution
- 11 - Virtualization Models Bare Metal
- 12 - Virtualization Models Hosted
- 13 - Bare Metal or Hosted Quiz
- 14 - Bare Metal or Hosted Quiz Solution
- 15 - Virtualization Requirements Quiz
- 16 - Virtualization Requirements Quiz Solution
- 17 - Hardware Protection Levels
- 18 - Processor Virtualization
- 19 - x86 Virtualization in the Past
- 20 - Problematic Instructions Quiz
- 21 - Problematic Instructions Quiz Solution
- 22 - Binary Translation
- 23 - Paravirtualization
- 24 - BT and PV Quiz
- 25 - BT and PV Quiz Solution
- 26 - Memory Virtualization Full
- 27 - Memory Virtualization Paravirtualized
- 28 - Device Virtualization
- 29 - Passthrough Model
- 30 - Hypervisor Direct Model
- 31 - Split Device Driver Model
- 32 - Hardware Virtualization
- 33 - Hardware Virtualization Quiz
- 34 - Hardware Virtualization Quiz Solution
- 35 - x86 VT Revolution
- 36 - Lesson Summary
- 37 - Lesson Review
- 1 - Lesson Preview
- 2 - Why RPC?
- 3 - Benefits of RPC
- 4 - RPC Requirements
- 5 - Structure of RPC
- 6 - Steps in RPC
- 7 - Interface Definition Language
- 8 - Specifying an IDL
- 9 - Marshalling
- 10 - Unmarshalling
- 11 - Binding and Registry
- 12 - Visual Metaphor
- 13 - Pointers in RPCs
- 14 - Handling Partial Failures
- 15 - RPC Failure Quiz
- 16 - RPC Failure Quiz Solution
- 17 - RPC Design Choice Summary
- 18 - What is SunRPC?
- 19 - SunRPC Overview
- 20 - SunRPC XDR Example
- 21 - Compiling XDR
- 22 - Summarizing XDR Compilation
- 23
- 24
- 25 - SunRPC Registry
- 26 - SunRPC Binding
- 27 - XDR Data Types
- 28 - XDR Data Types Quiz
- 29 - XDR Data Types Quiz Solution
- 30 - XDR Routines
- 31 - Encoding
- 32 - XDR Encoding
- 33 - XDR Encoding Quiz
- 34 - XDR Encoding Quiz Solution
- 35 - Java RMI
- 36 - Lesson Summary
- 37 - Lesson Review
- 1 - Lesson Preview
- 2 - Visual Metaphor
- 3 - Distributed File Systems
- 4 - DFS Models
- 5 - Remote File Service: Extremes
- 6 - Remote File Service A Compromise
- 7
- 8 - Caching State in a DFS
- 9 - File Caching Quiz
- 10 - File Caching Quiz Solution
- 11 - File Sharing Semantics on a DFS
- 12 - DFS Data Structure Quiz
- 13 - DFS Data Structure Quiz Solution
- 14 - File vs Directory Service
- 15 - Replication and Partitioning
- 16
- 17
- 18 - Networking File System (NFS) Design
- 19 - NFS File Handle Quiz
- 20 - NFS File Handle Quiz Solution
- 21 - NFS Versions
- 22 - NFS Cache Consistency Quiz
- 23 - NFS Cache Consistency Quiz Solution
- 24 - Sprite Distributed File System
- 25 - Sprite DFS Access Pattern Analysis
- 26 - Sprite DFS From Analysis to Design
- 27 - File Access Operations in Sprite
- 28 - Lesson Summary
- 29 - Lesson Review
- 1 - Lesson Preview
- 2 - Visual Metaphor
- 3 - Reviewing DFSs
- 4 - Peer Distributed Applications
- 5 - Distributed Shared Memory (DSM)
- 6 - Hardware vs Software DSM
- 7 - Implementing DSM Quiz
- 8 - Implementing DSM Quiz Solution
- 9 - DSM Design: Sharing Granularity
- 10 - DSM Design: Access Algorithm
- 11 - DSM Design: Migration vs Replication
- 12 - DSM Performance Quiz
- 13 - DSM Performance Quiz Solution
- 14 - DMS Design: Consistency Management
- 15 - DSM Architecture
- 16 - Summarizing DSM Architecture
- 17 - Indexing Distributed State
- 18 - Implementing DSM
- 19 - What is a Consistency Model
- 20 - Strict Consistency
- 21 - Sequential Consistency
- 22 - Causal Consistency
- 23 - Weak Consistency
- 24 - Consistency Models Quiz 1
- 25 - Consistency Models Quiz 1 Solution
- 26 - Consistency Models Quiz 2
- 27 - Consistency Models Quiz 2 Solution
- 28 - Consistency Models Quiz 3
- 29 - Consistency Models Quiz 3 Solution
- 30 - Consistency Models Quiz 4
- 31 - Consistency Models Quiz 4 Solution
- 32 - Consistency Models Quiz 5
- 33 - Consistency Models Quiz 5 Solution
- 34 - Lesson Summary
- 35 - Lesson Review
- 1 - Lesson Preview
- 2 - Data Center Quiz
- 3 - Data Center Quiz Solution
- 4 - Internet Services
- 5 - Internet Service Architectures
- 6 - “Homogeneous” Architectures
- 7 - “Heterogeneous” Architectures
- 8 - Homogeneous Design Quiz
- 9 - Homogeneous Design Quiz Solution
- 10 - Heterogeneous Design Quiz
- 11 - Heterogeneous Design Quiz Solution
- 12 - Scale Out Limitations Quiz
- 13 - Scale Out Limitations Quiz Solution
- 14 - Cloud Computing Poster Child: Animoto
- 15 - Cloud Computing Requirements
- 16 - Cloud Computing Overview
- 17 - Why Does Cloud Computing Work
- 18 - Cloud Computing Vision
- 19 - Cloud Computing Definitions Quiz
- 20 - Cloud Computing Definitions Quiz Solution
- 21 - Cloud Deployment Models
- 22 - Cloud Service Models
- 23 - Requirements for the Cloud
- 24 - Cloud Failure Probability Quiz
- 25 - Cloud Failure Probability Quiz Solution
- 26 - Cloud Enabling Technologies
- 27 - The Cloud as a Big Data Engine
- 28 - Example Big Data Stacks
- 29 - Lesson Summary
- 30 - Lesson Review
- Threads Birrell
- Beyond MultiProcessing
- Implementing Lightweight Threads
- Network Programming
- Office Hours
Quizes¶
External Resources¶
Gatech Piazza¶
Canvas¶
Bonnie¶
Calendar¶
Video Times for the Udacity Lectures¶
P1L1: 00:09:20
P1L2: 00:40:46
P2L1: 00:47:03
P2L2: 02:05:15
P2L3: 00:34:32
P2L4: 01:23:03
P2L5: 01:24:28
P3L1: 01:42:56
P3L2: 01:16:34
P3L3: 00:36:49
P3L4: 01:15:17
P3L5: 01:03:20
P3L6: 01:05:57
P4L1: 01:14:24
P4L2: 00:58:37
P4L3: 01:13:43
P4L4: 00:58:33
Practice Tests¶
cs6200
1234