This course is an introduction to the theory and practice behind modern computer operating systems. Topics will include what an operating system does (and doesn't) do, system calls and interfaces, processes, concurrent programming, resource scheduling and management (of the CPU, memory, etc.), virtual memory, deadlocks, distributed systems and algorithms, networked computing and programming, and security. We will approach the subject from both a theoretical perspective (what are the abstractions and algorithms?) as well as a practical one (what are the mechanisms and how are they built?).
The required text for the course (available from the Penn Bookstore either now or soon) is:
Most of the readings will be from the textbook, but we will also refer to other sources from time to time. In particular, we will study technical manuals, system source code, and research papers. The additional readings will generally be available in online form; check the course web page for URLs or pointers.
An additional book is strongly recommended:
The course web site (with the current version of this text, updated office hours, schedule, etc) can be found online (right here!) at:
Your grade will be based on three in-class exams (two non-cumulative midterms, each worth 20% of your grade, plus a cumulative final, worth 25% of your grade) and two substantial programming projects, due throughout the semester (worth the remaining 15% and 20% of your grade, respectively). The final exam is optional; if you do not take it, the mean of your two project grades will count in place of your final exam grade.
Details on the programming projects will be distributed separately shortly. Note that they will require a working knowledge of the C programming language. If you don't have experience programming in C (such as you'd get in CIS-240), you may feel lost and under-prepared. Note that the first assignment will given out next week, and will be due about a week later.
There will be an online discussion group, to which you were (or will soon be) automatically subscribed, assuming you have properly registered. Announcements for this course will be sent to the course group, and reflected, where appropriate, on the course web page.
Late project submissions will be accepted for 50% credit for up to 24 hours past the deadline. It will not be accepted at all after 24 hours. This is a firm policy applied bureaucratically and without mercy. In other words, you really need to submit project work on time in this course.
Warning: The Operating Systems coursework and projects notoriously demand significant planning and effort to complete. Do not put things off until the last minute, even if you have been successful doing so in other courses. Really.
A significant part of this course involves OS related software projects, due throughout the semester. Collectively, the projects (with milestones) will comprise 35% of your course grade. The first project will involve implementing a basic Unix/Linux command interpreter ("shell").
Information on the projects will be posted in this space.
Note: The schedule and topic list is subject to change! See the course web site for the latest schedule.
Note that the assignments and readings are not complete beyond the first week of the course, reflect both the previous (2nd) and current (3rd) edition of the text. Where sections are different in the two editions, readings for the 3rd edition are given in (parentheses).
Lecture notes will be posted and made available after each class meeting.
Date | Topics | Readings, Homework, etc. (Readings to be done prior to the class session with which they are listed). |
---|---|---|
8/27/15 | Introduction; course logistics; What does an OS do? |
Any appropriate summer novel |
9/1/15 | Processes and System Calls; Unix system calls and process management |
Tanenbaum, Chapter 1 Unix "man" pages for read(2), write(2), fork(2), execve(2), execl(2), wait(2), exit(2) |
9/3/15 | Processes and threads |
Tanenbaum, Sec 2.1, 2.2 |
9/8/15 | Concurrent programming and IPC |
Tanenbaum, Sec 2.3, 2.4 (2.3 and 2.5 in 3/e) |
9/10/15 | Synchronization mechanisms and mutual exclusion |
- |
9/15/15 | Interprocess Communication and Synchronization |
|
9/17/15 | Scheduling; real time processes |
Tanenbaum, Sec. 2.5, 2.6, 2.7 (2.4, 2.6 and 2.7 in 3/e) |
9/22/15 | Resources and Deadlocks |
Tanenbaum, Chapter 3 (Chapter 6 in 3/e) |
9/24/15 | Deadlocks avoidance and starvation |
. |
9/29/15 | TBA |
TBA |
10/1/15 | EXAM I previous example exam (PDF format) |
(Covers material through 9/30/14) |
10/6/15 | Memory Management and Swapping |
Tanenbaum Sec. 4.1, 4.2 (3.1 and 3.2 in 3/e) |
10/13/15 | Virtual memory |
Tanenbaum Sec. 4.3, 4.4, 4.5 (3.3, 3.4, 3.5 and 3.6 in 3/e) |
10/15/15 | Virtual Memory, TLBs, Page Replacement |
Tanenbaum Sec. 4.6, 4.7, 4.8, 4.9, 4.10 (3.7, 3.8, 3.9 in 3/e) |
10/20/15 | Page replacement algorithms; thrashing |
|
10/22/15 | I/O and devices |
Tanenbaum, Chapter 5 |
10/27/15 | Disks, Terminals and Networks |
. |
10/29/15 | Disks and File Systems |
Tanenbaum, Chapter 6 (Chapter 4 in 3/e) |
11/3/15 | File Systems (continued) |
|
11/5/15 | EXAM II Previous example exam (PDF format) | (Covers material from after previous midterm to date) |
11/10/15 | TBA |
. |
11/12/15 | Multiprocessing and distributed systems |
Tanenbaum, Chapter 8 |
11/17/15 | Distributed systems; remote procedure calls |
|
11/19/15 | Remote procedure calls; security |
. |
11/24/15 | Distributed systems |
Tanenbaum, Chapter 9 |
12/1/15 | Security; Case studies |
|
12/3/15 | TBA |
|
12/8/15 | TBA |
|
TBA | Final Exam |
Cumulative for entire course |