COMP 530 -- Introduction to Operating Systems
Fall 2012
MW 11:00-12:15, Brooks 007
Instructor:
Kevin Jeffay
Office hours by appointment
FB316,
jeffay at cs.unc.edu
TA:
David Idol
Office hours: MW 12:30-2:00 PM (or by appointment)
SN153,
mxrider at cs.unc.edu
Copies of In-Class Worksheets
Worksheet 1
on processes & scheduling (for class on September 5)
Worksheet 2
on process coordination & scheduling (for class on September 12)
Worksheet 3
on semaphores (for class on September 17)
Worksheet 4
on monitors (for class on September 26)
Worksheet 5
on message passsing (for class on October 8)
Worksheet 6
on memory management (for class on October 15 & 17)
Worksheet 7
on memory management (part 2!) (for class on October 22 & 24)
Worksheet 8
on memory management (part 3!) (for class on October 29 & 31)
Worksheet 9
on secondary storage management (for class on November 12)
Worksheet 10
on secondary storage performance II (for class on November 12 & 19)
Worksheet 11
on deadlock (for class on November 26 & December 3)
Copies of Programming Assignments
Homework 1 --
Linux Refresher
(Slides)
(Wed 8/22) Due 9/5
Homework 2 --
Building a Simple Linux Shell
(Wed 9/5) Due 9/19
Homework 3 --
Implementing Producer/Consumer Systems With Threads
(Wed 9/19) Due 10/1
Extended!! Now Due Mon 10/8!
Homework 4 --
Implementing Producer/Consumer Systems With Pipes
(Slides)
(10/15) Due 10/29
Homework 5 --
A Distributed Shell
(Slides,
Video,
Sample Socket Code)
(11/14) Due 12/5
Class Schedule & Lecture Notes
Aug. 22 -- Administrivia
Copies of slides
Aug. 27 -- History of OSs & Basic OS Concepts
Textbook readings:
Chapter 1 -- Introduction
Chapter 2 -- Operating Systems Structures
Copies of slides
Aug. 29 -- Processes
Textbook readings:
Chapter 3 -- Processes
Chapter 4 -- Threads
Copies of slides
Videos:
Part 1: Processes, contexts, and context switching (20:04)
Part 2: Process creation with fork/join (17:21)
Part 3: Threads (14:48)
Part 4: System calls & dual mode operation (15:24)
Sep. 5 -- Processor Scheduling
Textbook readings:
Chapter 4 -- Threads
Chapter 5 -- CPU Scheduling
Copies of slides
Videos:
Part 1: Queues & long-term scheduling (32:44)
Part 2: Short & medium term scheduling & context switch (18:53)
Part 3: Context switch implementation details (19:20)
Sep. 10 -- Scheduling Policies
Textbook readings:
Chapter 5 -- CPU Scheduling
Chapter 19 -- Real-Time Systems
Chapter 21.5 -- Linux Scheduling
Copies of slides
Videos:
Part 1: FCFS, SJF, & Priority scheduling (24:24)
Part 2: Multi-Level feedback queues & real-time scheduling (29:16)
Sep. 12 -- Process Coordination
Textbook readings:
Chapter 6 -- Process Synchronization
Copies of slides
Videos:
Part 1: Commuication & synchronization and the critical section problem (27:47)
Part 2: Mutual exclusion algorithms (22:42)
Sep. 17 & 19 -- Semaphores
Textbook readings:
Chapter 6 -- Process Synchronization
Copies of slides
Videos:
Part 1: Introduction to semaphores & condition syncrhonization (25:24)
Part 2: Implementing binary semaphores using test-and-set (17:30)
Part 3: Implementing general semaphores using binary semaphores (20:28)
Part 4: Implementing general semaphores using an OS kernel (18:18)
Sep. 24 & 26 -- Monitors
Textbook readings:
Chapter 6 -- Process Synchronization
Copies of slides
Videos:
Part 1: Higher-level synchronization primitives: The bounded buffer example using monitors (16:39)
Part 2: The semantics of Signal and Wait (17:45)
Part 3: Implementing monitors (15:25)
Part 4: Mesa monitors and synchronization using Wait & Notify (19:39)
Part 5: Readers/Writers synchronization (9:09)
Oct. 1 & 8 -- Message Passing
Textbook readings:
Chapter 21.9 -- Linux Inter-Process Synchronization
Copies of slides
Videos:
Part 1: Message passing intro (12:00)
Part 2: Synchronous v. asynchronous message passing (17:03)
Part 3: Buffered asynchronous message passing (15:26)
Part 4: Remote procedure call (10:59)
Oct. 15 -- Memory Management Basics
Textbook readings:
Chapter 8 -- Memory Management
Copies of slides
Videos:
Part 1: Address spaces, simple partitioning, and dynamic relocation (22:47)
Part 2: Fragmentation and overlays (19:39)
Oct. 17 -- Virtual Memory
Textbook readings:
Chapter 9 -- Virtual Memory
Copies of slides
Videos:
Part 1: Virtual memory concept & paging (20:10)
Part 2: Virtual address translation (20:45)
Part 3: The translation lookaside buffer (11:28)
Part 4: Page faults and virtual memory performance (20:25)
Oct. 22 & 24 -- Page Replacement Algorithms
Textbook readings:
Chapter 9 -- Virtual Memory
Copies of slides
Videos:
Part 1: Demand paging and FIFO page replacement (20:44)
Part 2: LRU page replacement (10:33)
Part 3: LRU implementations (18:44)
Part 4: The Second Chance algorithm (11:54)
Part 5: Global page replacement (29:29)
Oct. 29 & 31 -- Load Control and Virtual Memory Design Issues
Textbook readings:
Chapter 9 -- Virtual Memory
Copies of slides
Videos:
Part 1: Load control & thrashing (17:04)
Part 2: Multi-level paging (17:05)
Part 3: Inverted page tables 11:12)
Nov. 12 -- Secondary Storage Management
Textbook readings:
Chapter 10 -- File-System Interface
Chapter 11 -- File-System Implementation
Chapter 12 -- Mass-Storage Structure
Copies of slides
Videos:
Part 1: Disk architecture & componenets (16:02)
Part 2: Disk geometry (19:14)
Part 3: File allocation methods (27:137)
Nov. 14 & 19 -- Secondary Storage Performance
Textbook readings:
Chapter 10 -- File-System Interface
Chapter 11 -- File-System Implementation
Chapter 12 -- Mass-Storage Structure
Copies of slides
Videos:
Part 1: Disk head scheduling (12:48)
Part 2: Disk partitions & block remapping (8:47)
Part 3: Disk striping & RAID (19:18)
Nov. 26 & Dec 3 -- Deadlock
Textbook readings:
Chapter 7 -- Deadlocks
Copies of slides
Videos:
Part 1: Intro & definitions (9:41)
Part 2: Resource allocation graphs (12:11)
Part 3: Deadlock prevention and avoidance (10:31)
Part 4: Deadlock avoidance II (18:33)
Part 5: Banker's algorithm & deadlock recovery (7:49)
- Last revised: Tue Aug 28 17:14:23 EDT 2012 by jeffay at cs.unc.edu