CS 656: Operating Systems

Spring, 2008

Professor: Marty Humphrey

 

Latest News/Revisions to Web Page (Fri 5/2/08)

 Logistics

Silberschatz, Galvin, and Gagne

Description

An operating system facilitates the execution of user and system programs on the bare hardware of a machine. One view of an operating system is that it essentially manages resources such as physical memory, disks, and CPU(s) by providing the necessary capabilities to the user. By managing resources, the operating system allows (in most cases) multiple user programs to be executed concurrently, without corrupting each other.

This course covers the design and implementation of operating systems, stressing the interaction of the operating system with computer architecture, compilers, networks, and user programs. Covered topics include processes, CPU scheduling, process synchronization, deadlocks, memory management, virtual memory, file systems (interface and implementation), protection, security, and some aspects of distributed operating systems.

The general structure of this class is to cover the topics typically found in an undergraduate OS class at about 3 times the pace of an undergrad class. The rest time (the remaining 2/3, that is) will be used discussing research papers on the given topic – note that these papers will be some combination of “older” papers and “new” papers.

Specific course objectives:

1.     Develop an understanding of the tasks and components of an operating system and how they influence the operation of user-level programs, how the computer architecture and programming languages interact with the OS to manage concurrent activities, and how the OS manages resources and provides protection and security.

2.    Learn the principles of correct concurrent programming and how various types of synchronization primitives operate.

3.    Develop an understanding of the fundamental concepts of computer security.

4.    Be able to analyze how contemporary operating systems implement these concepts, be able to evaluate the advantages and disadvantages of their varying implementations, and be able to discuss these issues in a knowledgeable fashion.

5.    Be able to analyze and discuss the pros/cons of particular OS implementation and evaluation strategies.

6.    Be able to critically read systems-oriented research papers.

Details

Coursework

What

When

Weight

Readings (papers, textbook, etc.)

every class

 

Class participation

every class

10 %

Written synopses / programming assignment

Synopses: every class;

Prog. Assign in 1st half of class

25 %

Class project

2nd half of class; presentation in last 2 weeks of class

35 %

Final exam

Fri, May 9, 2pm-5pm

30 %

 

 

 

 

 

 

 

Synopses (effective for the March 24 papers)

Each student must submit a synopsis of the papers for the day at least 4 hours prior to the beginning of class (so this usually means by 10am that day). The single email should contain at most 1 page (ASCII – no attachments) for each paper of the day (e.g., if we cover 2 papers that day, then the student should submit 1 email containing two synopses, where each synopsis is at most 1 page). The format of a synopsis must be:

·         Paragraph 1: 1-2 sentence problem statement (what problem is being addressed in the paper?) and 1-2 summary of the paper (e.g., “the authors address the problem by designing and implementing…”)

·         Paragraph 2: pros of the paper (what’s compelling/effective about the paper), and then cons of the paper (what are the most significant flaw(s) of the paper?)

The student will receive a single grade for the day’s synopsis/synopses. The grading is as follows:

·         CP (“check-plus” – 100 points): all 4 parts are excellent, assertions/claims with evidence, synopsis shows excellent understanding and insight

·         C (“check” – 75 points):

·         CM (“check-minus” – 50 points): at most 2 of the 4 parts are satisfied

·         Not submitted 4 hours prior to class time: 0 points

Old grading: All synopses submitted prior to the particular class receive CP otherwise 0

Programming Assignment (1st half of Class)

There is one programming assignments planned for the first half of class, which everyone in the class will do (individually). It will be on basic measurement and interpretation of typical OS functionality, such as opening a file, creating a process, etc.

Class Project (2nd half of Class)

The class project is very important (35% of your grade). It can be your own design/implementation, or you can pursue one of the topics that I provide. You will meet regularly with me to ensure your plan and that you are hitting your milestones. This will be completed by you or with one other person (NO 3-PERSON GROUPS ALLOWED!). You will write a short conference- or workshop-style paper, and you will give a presentation at the class mini-conference in the last two weeks of class. More details will be provided in class.

Schedule for project meetings:

 

Thurs Mar 27

Fri Mar 28

9:00 – 9:30

 

Claire and Dan

9:30 – 10:00

 

 

10:00 – 10:30

Joel and Andrew

 

10:30 – 11:00

 

Jiakang and Jiayuan

11:00 – 11:30

 

Mike and Will

11:30 – noon

 

Qiang

Noon – 12:30

 

JD and Zhigeng

12:30 – 1:00

 

Yafeng and Jian

1:00 – 1:30

 

 

1:30 – 2:00

Colleen and Eric

Paul and Ming

2:00 – 2:30

 

 

2:30 – 3:00

Blake, Steven, Chris

 

3:00 – 3:30

 

 

3:30 – 4:00

Ke and Lukasz

 

4:00 – 4:30

Blake and Tim

 

4:30 – 5:00

Jason and Hengchang

 

Schedule

Date

Class #:

Week #/Day #

Topic

Text

Chapter

Assignment

Out

Assignment

Due

Wed 1/16

1: W1-1

Intro (class notes)

 

 

Mon 1/21

No class – Martin Luther King day

 

 

Wed 1/23

2: W2-1

Edsger W. Dijkstra 
The Structure of the "THE" Multiprogramming System (incl. appendix)
Communications of the ACM 11(5), May 1968.

Per Brinch Hansen
The Nucleus of a Multiprogramming System
Communications of the ACM 13(4), April 1970
(class notes)

1,2

Question for write-up: What are the main philosophical differences in design of the THE system, the Nucleus system, and HYDRA?

 

Mon 1/28

3: W3-1

W. Wulf, E. Cohen, W. Corwin, A. Jones, R. Levin, C. Pierson, and F. Pollack
HYDRA: The Kernel of a Multiprocessor Operating System
Communications of the ACM 17(6), June 1974, pp. 337-344.
(class notes)

 

 

Wed 1/30

4: W3-2

David D. Redell, Yogen K. Dalal, Thomas R. Horsley, Hugh C. Lauer, William C. Lynch, Paul R. McJones, Hal G. Murray, and Stephen C. Purcell
Pilot: An Operating System for a Personal Computer
Communications of the ACM 23(2), Feb 1980.

Hugh C. Lauer
Observations on the development of an operating system
ACM Symposium on Operating Systems Principles, 1981.
(class notes)

No additional question

 

Mon 2/4

5: W4-1

No Class -- Marty out of town

 

 

Wed 2/6

6: W4-2

Dawson Engler and Franz Kaashoek.
Exterminate All Operating Systems Abstractions.
Proceedings of the Fifth Workshop on Hot Topics in Operating Systems (HotOS-V), 1995.

Dawson Engler, Franz Kaashoek, J. O’Toole, Jr. 
Exokernel: an operating system architecture for application-level resource management.
Fifteenth ACM Symposium on Operating Systems Principles, 1995.
(class notes)

What are the similarities and differences in philosophy of Exokernel vs. Nucleus?

Fri 2/8: 4:15pm-5:30 (OLS 005)

Make-up 5: W4-1

Edouard Bugnion, Scott Devine, and Mendel Rosenblum.

Disco: Running Commodity Operating Systems on Scalable Multiprocessors.

Proceedings of The 16th ACM Symposium on Operating Systems Principles, October 1997 (class notes)

What are the similarities and differences of Exokernel and Disco?