CS 414: Operating Systems

Fall, 2007

Professor: Marty Humphrey

 

Latest News/Revisions to Web Page (Sunday 12/9/07)

Logistics

  • Instructor:                                        Marty Humphrey
  • Office:                                              Olsson 236C
  • Email:                                                 humphrey at cs.virginia.edu
  • Class meeting time:                            Tuesday and Thursday 11-12:15 in Olsson 005
  • My Office Hours:                               Monday 1-4pm, Tues 10-11am or by appointment
  • Graduate TA Office Hours:                Blake Sheridan (sheridan at cs.virginia.edu), Wed 5-8pm 002a
  • Graduate TA (no office hours):           Ming Mao (mm5bw at cs.virginia.edu)
  • WWW:                                              http://www.cs.virginia.edu/~humphrey/cs414
  • Prerequisites:                                    CS 216 and CS 333 with grades of C- or better
  • Textbook:                                          Operating Systems Concepts, 6th (ISBN 0-471-48905-0) or

7th edition (ISBN 0-471-69466-5), 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 presents 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 (if time permits) some aspects of distributed operating systems.

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 implement the key control structures and mechanisms for basic operating system tasks.

Details

  • It is highly recommended, but not mandatory, that students attend every class.
  • Assignments are due at the beginning of class on the day that the assignment is due. For each weekday that your assignment is late, 10% will be deducted. No assignment will be accepted later than three days after the due date.
  • The course will be conducted according to the UVA honor system. Homeworks and exams are to be completed by the individual. I expect a signed honor pledge on all homework, quizzes, and exams; more importantly, I expect you to adhere to the intent of the pledge. Cooperative efforts at understanding the material and the assignments of the course are encouraged. For the programming projects, the algorithms and programs submitted by a group must be fully developed and written by the group submitting them. Each written homework must be developed and written only by the student submitting it.
  • Unless otherwise specified, students are expected to understand the material in the book. I specifically do not go into great detail into topics that I believe are explained very well in the text.
  • Do NOT wait until the last minute to do the programming assignments. In any software project, you must anticipate and plan for unexpected events (such as a machine crashing at an inopportune time).
  • If you are having difficulty with a particular concept of the class, please let me know. If you aren't understanding something, there's a good chance that others in the class are confused as well.
  • It is required (out of courtesy for your fellow classmates) that cell phones be turned off before entering class. This requirement is based on a resolution passed by the student council. Laptops are permitted in class but I retain the right to ask you to turn it off and put it away, particularly if (a) they’re being used for non-CS414 purposes or (b) they’re distracting other students.
  • The prerequisites for the class are CS 216 and CS 333 with grades of C- or higher.

Coursework

What

When

Weight

Readings (textbook and the Web)

every class

 

Class participation

every class

10 %

Midterm

 

20 %

Written homeworks / programming assignments

5-7

50 %

Final exam

finals week

20 %

 

 

 

 

 

Homeworks / Programming Projects

There are 5-7 homeworks/programming assignments planned for throughout the semester. That is, each assignment will have BOTH (a) the more traditional homework questions (e.g., from the book), which you are required to do by yourself, and (b) a programming component that you might be required to do by yourself or with another student from CS414 (the requirements will be clearly stated on each assignment). Most programming assignments will involve studying/modifying the Windows Research Kernel or Linux.

Schedule (subject to change)

Date

Class #:

Week #/Day #

Topic

Text

Chapter

Assignment

Out

Assignment

Due

Tues 8/28

1: W1-1

 No Class -- Marty at Conference (Seattle)

 

Thurs 8/30

2: W1-2

 Introduction: What is an OS?

 CS 414 mission and logistics (class notes)

1

 

 

Tues 9/4

3: W2-1

 More intro, OS History (class notes)

 

 

 

Thurs 9/6

4: W2-2

 Comp Arch Review (class notes)

2

Assignment #1

 

Thurs 9/6: Location: OLS 120 (6:00pm-7:15)

Friday 9/7: Location: OLS 120 (3:00pm-4:15)

Make-up 1:W1-1

      Comp Sys Structures, OS Structures 

               (class notes)

3

 

 

Tues 9/11

5: W3-1

      More OS Structures (class notes)

 

 

 

Thurs 9/13

6: W3-2

   Wrap Up OS Structures  (class notes)

 

Assignment #2

Assignment #1

Tues 9/18

7: W4-1

 Processes/Threads (class notes)

4,5

 

 

Thurs 9/20

8: W4-2

 More Processes/Threads (class notes)

simple.c, complicated.c, pthreads_example.c

 

 

 

Tues 9/25

9: W5-1

 Threads  (class notes)

 

 

Assignment #2

Thurs 9/27

10:W5-2

 CPU Scheduling (class notes)

6

Assignment #3

 

Tues 10/2

11: W6-1

CPU Scheduling (class notes)

count_real_time_threads.c

 

 

 

Thurs 10/4

12: W6-2

Discussion of Assignment #3 (class notes)

KxQueueReadyThread_CS414_Excerpt.h

get_random_num_SAMPLE_CODE.c

start_20_then_10.bat

 

 

 

Tues 10/9

 

 No Class – Reading Day / Fall Break

 

 

 

Thurs 10/11

13: W7-2

Synchronization intro (and signals)

(OUTDATED: class notes)

(NEW: class notes)

7

 

Assignment #3

Tues 10/16

14: W8-1

Midterm (closed books, closed notes)

(midterm prep)

 

 

 

Thurs 10/18

15: W8-2

More Synchronization (class notes)

Assignment #4

(synchron.)

Canceled!

Rejoice!

 

Tues 10/23

16: W9-1

More Synchron