University of Pennsylvania / CIS Department
Fall 2015
CIS-380 -- Operating Systems

Time and Place

Time: Tuesdays and Thursdays, 1330-1500
Place: Levine 101

Course Staff

Lecture (CIS-380):

Lab / Teaching Assistants:

Description

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?).

Textbook, Readings, Web Site

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:

Course-work, Grading, Policies

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.

Homework / Software Projects (last updated 8/27/15)

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.

Preliminary Schedule (last updated 8/27/15)

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