CS414 Operating Systems (Spring 2008)

CS414: Operating Systems (Spring 2008)

Tu & Th 12:30 pm, Olsson 011


Course Information


Text

Operating System Concepts (Seventh Edition), by Silverschatz, Galvin, and Gagne; Addison Wesley, 2005.

A lot of material, including the slides and exercise questions, are available on the web: OS-Books.


Objectives

This course covers the principles and practice of operating systems. We will develop a basic understanding of key concepts in OS, and how the computer architecture and programming languages interact with OS to manage concurrent activities. To achieve that, we will discuss some of the major components of OS - process, synchronization, scheduling, deadlocks, memory management, virtual memory, and file system, with a few advanced topics (if time permits). The course will also develop skills to understand the control structures and mechanisms for resource management and concurrency control using an instructional OS.


Grading

The course grade will be based on class participation, quizzes, exams, and homeworks. You may expect to have several quizzes in class. There will be two in-class exams during the semester and the final exam. The weights of exams and homeworks on the final grade will be

  • In-class Exams 40%
  • Homeworks, Quizzes, and Class participation 30%
  • Final Exam 30%


    Homeworks

    The homeworks will include some programming assignments. They will involve the use and modification of an instructional operating system from the University of California, Berkeley, named NACHOS. This system is described in Nachos appendix in Nachos. It runs on Unix/Linux workstations, and students in the course should get an account on the Sun workstations from ITC. Send the request to accounts@virginia.edu, if you do not have one. You can download the Nachos package from Nachos package. For programming assignments, principles of good design, clean coding, and clear documentation will count heavily. The fact that a program works for all test cases is a necessary but not sufficient condition for a good grade. This applies to cases where you must write code by hand (e.g., tests, quizzes, written assignments). Because the programming assignments are substantial, they cannot be done the day before they are due, or even in several days before they are due. You must manage your time and start early, putting in some time on the assignment every day.

    Homeworks are due the date specified. Any assignment handed in late will be marked off 20% per day. No homeworks will be accepted after 3 days from the due date. Clearly exceptions can be made to this rule when an emergency occurs. If possible, all such requests should be made in advance. Note that you will have to do the work anyway since it will be essential to the next step of the development. In short, start assignments early.


    Tests and Quizzes

    Everything discussed in class will be considered to be fair game. Not all the concepts I describe are covered in the text. It is your responsiblity to make sure that you stay up-to-date on what we discuss during class.


    Groups

    You are required to form a group, consisting of 3 students, for discussion/collaboration for your homeworks and quizzes. Send an e-mail to the TA regarding your group request by January 29th. It should contain the full names and e-mail addresses of the group members.


    Honor System

    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. You should feel free to discuss general concepts with your fellow students. If you don't understand the concepts, you can always come and talk to me or the TA. However, any explicit work on an assignment or exam should be your own. If you are in doubt about some help you have received on a particular assignment, just make a note of it on the material you turn in. Violation of the honor pledge, when made, is grounds for course failure or worse. All exams and quizzes are closed-book.


    Date Topic / Exam
    Jan 17 Introduction
    OS Structure
    Process Management
    Threads
    Synchronization
    Semaphores and Monitors
    Feb 26 Exam
    Semaphore Implementation
    March 3 Spring Break
    Scheduling
    Deadlocks
    Memory Management
    April 22 Exam
    File Systems
    Security
    May 8 Final Exam


    Reading

  • Week of Jan. 17: Chs.1 and 2
  • Week of Jan. 21: Chs.2 and 3
  • Week of Jan. 28: Ch.3
  • Week of Feb. 4: Ch.6 (6.1 & 6.2) and Ch.4
  • Week of Feb. 11: Ch.6
  • Week of Feb. 18: Ch.6
  • Week of Feb. 25: Test #1 and Ch.6 (6.4 and 6.5.2)
  • Week of March 3: Spring Break
  • Week of March 10: Ch.3 (3.4-3.6) and Ch.5
  • Week of March 17: Ch.5 & Ch.19 (19.5)
  • Week of March 24: Ch.7
  • Week of March 31: Ch.8
  • Week of April 7: Ch.8
  • Week of April 14: Ch.9
  • Week of April 21: Test #2 and Ch.10 & Ch.11
  • Week of April 28: Ch.9 & Review

  • Lecture Summary

  • Introduction
  • Introduction to Processes
  • Processes
  • Threads
  • Process Synchronization
  • Synchronization with Semaphores
  • Synchronization with Monitors
  • Semaphore Implementation
  • Message Communication
  • CPU Scheduling
  • Real-time Scheduling
  • Real-time systems (slides)
  • Deadlock
  • Introduction to Storage Allocation
  • Dynamic Storage Allocation
  • Dynamic Storage Allocation (slides)
  • Segmentation
  • Paging
  • Virtual Memory and Working Sets
  • File system #1
  • File system #2

  • Homeworks and Assignments

  • HW#1 - Due Jan. 31
  • Answer key to HW#1
  • HW#2 - Due Feb. 19
  • Answer key to HW#2
  • HW#3 - Due Feb. 28
  • Answer key to HW#3
  • Nachos#1 - Due March 11
  • Nachos#1 - Make tutorial
  • Exercise for Test #1
  • Keys to some questions in the exercise
  • Nachos#2 - Due April 1
  • Nachos#2 Hints
  • Nachos#2 synch.h
  • Nachos#2 synch.cc
  • Nachos#2 threadtest.cc
  • HW#4 - Due March 27
  • HW#5 - Due April 17
  • HW#5 in WORD file
  • Nachos#3 - Due April 27