|
CS333 - Introduction to Operating Systems
Spring 2007
|
|
When: Tue/Thu 1600-1750 Where: Neuberger Hall 454 Instructor: Jonathan Walpole Instructor Office Hours - by appointment Teaching Assistant: Lanfranco Muzi TA Office Hours - ? |
|
|
Description |
|
This course will introduce the core concepts of operating systems, such as processes and threads, scheduling, synchronization, memory management, file systems, input and output device management and security. The course will consist of assigned reading, weekly lectures, a midterm and final exam, and a sequence of programming assignments. The goal of the readings and lectures is to introduce the core concepts. The goal of the programming assignments is to give students some exposure to operating system code. Students are expected to read the assigned materials prior to each class, and to participate in in-class discussions. |
|
Prerequisites |
| Students should have previous familiarity with programming in a high-level object-oriented language (such as C++ or Java); assembly language programming; CPU organization, instruction sets, registers; program development in the Unix environment (edit, compile, link, load, execute, makefile, using the shell); the Unix system call interface; basic data structures (lists, trees, graphs); object-oriented concepts (class, object, method). CS 200 and CS 201 (Computer Systems Programming I & II) are prerequisites for this class. CS 311 (Computational Structures) is also listed as a prerequisite, but the material in 311 is not closely related to this class. |
|
Text Book |
|
The main text book for the course will be:
        "Modern Operating Systems, 2nd edition," by Andrew S. Tannenbaum.
In addition, the following supplemental reference material will
be required for the project assignments:
This packet documents the BLITZ software we'll be using in this course. It may be purchased at CleanCopy, located on Broadway. This material is also available online here and you can print it yourself, instead of purchasing it. |
|
Grading |
|
Your final grade will be calculated as follows:
|
|
Project |
|
The programming assignments for this class are based on the
BLITZ
system.
BLITZ
is a collection of software, written by
Harry Porter,
designed to
streamline the process
of learning about, and experimenting with, operating system kernel
code.
BLITZ
includes a complete operating system, assembler, linker, loader
and debugger, together with software to emulate an underlying CPU
and various devices. The emulated CPU and devices are representative
of real-world systems, but without some of the low-level complexity
that complicates the process of learning about the key underlying
concepts. By using BLITZ students are able to study, in detail, the
low-level operating system code that interacts with the hardware,
as well as design, code and test their own modifications to the
operating system.
|
|
Quizzes |
| I will conduct regular in-class quizzes, made up of questions on the material covered up to that point in the class. Students are expected to participate in these quizzes and other in-class discussion. |
|
Mailing List |
|
A "MailMan" e-mailing list will be maintained for this class. The list, called cs333@cs.pdx.edu, is for communicating information relating to the course, and can be used by students as well as the TA and instructor. All students should subscribe to this list. Go to the following web page and follow the instructions: https://mailhost.cecs.pdx.edu/cgi-bin/mailman/listinfo/cs333 |
|
Schedule & Syllabus |
|
Class 1
4-03-07 |
Course Overview and Introduction to Operating Systems
Course outline. Overview of course project and expectations. Introduction to hardware support for operating systems: privileged mode execution, saving and restoring CPU state, traps and interrupts, timers, memory protection. Operating system techniques for protecting user and hardware resources. Overview of the key operating system abstractions and the use of system calls to manipulate them. Slides: [ .ppt .pdf ] Reading: pages 1 - 70 Assign Project 1 - Introduction to BLITZ |
|
Class 2
4-05-07 |
The Process Concept
Complete the overview of the key operating system abstractions and the use of system calls to manipulate them. Program execution, the process concept, process-related state, the process table, saving and restoring process state, the role of the scheduler. Slides: [ .ppt .pdf ] Reading: pages 71 - 100 |
|
Class 3
4-10-07 |
Threads and Concurrency
Threads, process context switch vs thread switch, true concurrency vs pseudo concurrency, operating systems as concurrent programs, concurrency through multi-threading, concurrency through interrupt handling, concurrent access to shared memory, race conditions, mutual exclusion, synchronization primitives based on atomic instructions. Slides: [ .ppt .pdf ] Reading: pages 100 - 110 Project 1 due at start of class. Assign Project 2: Threads & Synchronization |
|
Class 4
4-12-07 |
Synchronization Primitives
Atomic instructions, locks, spinlocks, mutex semaphores, counting semaphores, and their use in solutions to Producer Consumer synchronization. Slides: [ .ppt .pdf ] Reading: pages 110 - 124 |
|
Class 5
4-17-07 |
Classic Synchronization Problems
Classic synchronization problems: Producer Consumer, Dining Philosophers, Readers and Writers, Sleeping Barber. Slides: [ .ppt .pdf ] Reading: pages 124 - 132 |
|
Class 6
4-19-07 |
Monitors and Message Passing
Monitors, condition variables, message passing, and their use in solutions to classic synchronization problems: Producer Consumer, Dining Philosophers, Readers and Writers, Sleeping Barber. Slides: [ .ppt .pdf ] Reading: pages 115 - 124 |
|
Class 7
4-24-07 |
Deadlock
Deadlock, livelock, deadlock detection, avoidance, and prevention. Slides: [ .ppt .pdf ] Reading: pages 159 - 188 Project 2 due at start of class. Assign Project 3: Synchronization Problems |
|
Class 8
4-26-07 |
Scheduling
Separation of policy from mechanism, scheduling mechanisms, preemptive vs non-preemptive scheduling, example scheduling policies, FIFO, round-robin, shortest job first, priority scheduling, Unix-style feedback scheduling, proportional share scheduling, lottery scheduling. Slides: [ .ppt .pdf ] Reading: pages 132 - 158 |
|
Class 9
5-01-07 |
Memory Management
Memory addresses and binding, static and dynamic addresses translation, address translation using base and limit registers, memory management algorithms using linked lists and bitmaps, external and internal fragmentation, paged virtual memory. Slides: [ .ppt .pdf ] Reading: pages 189 - 202 |
|
Class 10
5-03-07 |
Midterm Exam
In class, closed-book exam based on material covered so far. Reading: pages 1 - 214, 242 - 268 |
|
Class 11
5-08-07 |
Virtual Memory 1
Physical address spaces, virtual address spaces, page table design, single-level and multi-level page tables, hardware support for dynamic address translation using a TLB, hardware and software managed TLB refill. Slides: [ .ppt .pdf ] Reading: pages 202 - 214, 242 - 263 |
|
Class 12
5-10-07 |
Virtual Memory 2
Inverted page tables, the memory hierarchy, TLB miss faults, segmentation faults, protection faults, page faults, hardware support for memory protection, segmentation. Slides: [ .ppt .pdf ] Reading: pages 202 - 214, 242 - 263 Project 3 due at start of class. Assign Project 4: Kernel Resource Managers |
|
Class 13
5-15-07 |
Virtual Memory 3
Implementation issues, page sharing, copy-on-write, page fault handling, segmentation, segmentation with paging. Slides: [ .ppt .pdf ] Reading: pages 202 - 214, 242 - 263 |
|
Class 14
5-17-07 |
Paging Algorithms
Demand paging, swapping, placement and replacement algorithms, memory hierarchy revisited, overview of cache architecture, performance modeling for memory management systems. Slides: [ .ppt .pdf ] Reading: pages 214 - 242 |
|
Class 15
5-22-07 |
Input/Output
Devices, memory mapped devices, DMA, device drivers, interrupt handling, scheduled vs non-scheduled I/O processing, block vs character devices. Slides: [ .ppt .pdf ] Reading: pages 269 - 300, 327 - 378 |
|
Class 16
5-24-07 |
Secondary Storage Management
Disks, sectors, tracks, blocks, disk head scheduling algorithms, the file abstraction, directories, links. Slides: [ .ppt .pdf ] Reading: pages 300 - 327 Project 4 due at start of class. Assign Project 5: User Level Processes |
|
Class 17
5-29-07 |
File Systems 1
File system architecture, file system data structures and system calls. Slides: [ .ppt .pdf ] Reading: pages 379 - 424 |
|
Class 18
5-31-07 |
File Systems 2
File system architecture and design criteria. Slides: [ .ppt .pdf ] Reading: pages 424 - 452 |
|
Class 19
6-05-07 |
Security
Protection domains and mechanisms, access control lists, capabilities, user authentication, encryption, common internal and external attacks. Slides: [ .ppt .pdf ] Reading: pages 583 - 670 |
|
Class 20
6-07-07 |
Class cancelled
Project 5 due in my mailbox by 4pm 6/07/07 (normal time for start of class). |
|
Final Exam
|
Final Exam
Take-home exam covering the entire class. Exam paper and instructions will be emailed to class list. Reading: pages 1 - 900 |
|
Back to Jonathan Walpole's home page |