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 textbook is required for the lab course (381):
The course web site (with the current version of this text, updated office hours, schedule, etc) can be found online at:
This course is really two courses: CIS-380 (the "lecture" course) and CIS-381 (the "lab" course). For students in most programs, if you enroll in one, you're required to enroll in the other, but they are graded separately. The CIS-381 course web page can be found at http://www.seas.upenn.edu/~cse381/.
For CIS-380, 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 40% of your grade) and approximately three to five short homework assignments (worth the remaining 20% of your grade).
Your lab course grade (CIS-381) will be based entirely on two implementation projects (one individual, in the first half of the semester, and one with a small group, in the second half of the semester). Details on the CIS-381 projects will be distributed separately. Note that there will be tutorial/recitation sessions scheduled weekly throughout the semester for the lab course.
There will be a course mailing list, to which you were (or will soon be) automatically subscribed, assuming you have properly registered. Announcements for both the lecture and lab courses will be sent to the mailing list, and reflected, where appropriate, on the course web page. There is also a course mailing list, with a web archive.
Late homework (for CIS-380) 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.
Warning: The CIS-380/381 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.
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). |
|---|---|---|
| 9/4/08 | Introduction; course logistics; What does an OS do? Notes (PDF format) |
Any appropriate summer novel |
| 9/9/08 | Processes and System Calls; Unix system calls and process management Notes (PDF format) |
Tanenbaum, Chapter 1 Unix "man" pages for read(2), write(2), fork(2), execve(2), execl(2), wait(2), exit(2) Homework #1 assigned |
| 9/11/08 | Processes and threads Notes (PDF format) |
Tanenbaum, Sec 2.1, 2.2 |
| 9/16/08 | Concurrent programming and IPC Notes (PDF format) |
Tanenbaum, Sec 2.3, 2.4 (2.3 and 2.5 in 3/e) Homework #1 due 9/17/08 at 1800 |
| 9/18/08 | Synchronization mechanisms and mutual exclusion Notes (PDF format) |
|
| 9/23/08 | Interprocess Communication and synchronization Notes (PDF format) |
|
| 9/25/08 | Scheduling; real time processes Notes (PDF format) |
Tanenbaum, Sec. 2.5, 2.6, 2.7 (2.4, 2.6 and 2.7 in 3/e) |
| 9/30/08 | Resources and Deadlocks Notes (PDF format) |
Tanenbaum, Chapter 3 (Chapter 6 in 3/e) |
| 10/2/08 | Deadlocks avoidance and starvation Notes (PDF format) |
|
| 10/7/08 | EXAM I previous example exam (PDF format) |
(Covers material from 9/4/08-10/2/08) |
| 10/9/08 | Memory Management and Swapping Notes (PDF format) |
Tanenbaum Sec. 4.1, 4.2 (3.1 and 3.2 in 3/e) Homework #2 assigned |
| 10/14/08 | No class meeting (Fall break) | |
| 10/16/08 | Virtual memory Notes (PDF format) |
Tanenbaum Sec. 4.3, 4.4, 4.5 (3.3, 3.4, 3.5 and 3.6 in 3/e) |
| 10/21/08 | Virtual Memory, TLBs, Page Replacement Notes (PDF format) |
Tanenbaum Sec. 4.6, 4.7, 4.8, 4.9, 4.10 (3.7, 3.8, 3.9 in 3/e) Homework #2 due at 6pm |
| 10/23/08 | Page replacement algorithms; thrashing Notes (PDF format) |
|
| 10/28/08 | I/O and devices Notes (PDF format) |
Tanenbaum, Chapter 5 |
| 10/30/08 | Disks, Terminals and Networks Notes (PDF format) |
|
| 11/4/08 | Disks and File Systems Notes (PDF format) |
Tanenbaum, Chapter 6 (Chapter 4 in 3/e) |
| 11/6/08 | File Systems (continued) Notes (PDF format) |
|
| 11/11/08 | EXAM II Previous example exam (PDF format) | (Covers material from 10/9/08-11/6/08) |
| 11/13/08 | Multiprocessing and distributed systems Notes (PDF format) |
Tanenbaum, Chapter 8 |
| 11/18/08 | Distributed systems; remote procedure calls Notes (PDF format) |
|
| 11/20/08 | Remote procedure calls; security Notes (PDF format) |
Sun RPCGEN Programming guide (PDF) Sun RPCGEN manual (PDF) |
| 11/25/08 | Security Notes (PDF format) |
Tanenbaum, Chapter 9 Homework #3 assigned |
| 11/27/08 | No class meeting (Thanksgiving break) | |
| 12/2/08 | Security; Case studies Notes (PDF format) |
|
| 12/4/08 | Case studies; course review Notes (PDF format) |
Homework #3 due 12/5/08 |
| Date: 12/16/08 Time: 0900-1100 Room: Skir Aud |
FINAL EXAM | (Covers entire course) |