CS414 Operating Systems (Fall 2005)

CS414: Operating Systems (Fall 2005)

Course Information


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.


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 interactwith 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.


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 one midterm during the semester and the final exam. The weights of exams and homeworks on the final grade will be

  • Midterm 25%
  • Homeworks, Quizzes, and Class participation 40%
  • Final Exam 35%


    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

    I consider everything I discuss in class 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.


    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 August 31st. 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
    Aug 25 Introduction
    OS Structure
    Process Management
    Semaphores and Monitors
    Threads and Messages
    Oct 6 Exam
    Memory Management
    Nov 21 Thanksgiving Recess
    File Systems
    Dec 16 Final Exam


  • Week of Aug. 29: Chs.1 and 2
  • Week of Sept. 5: Ch.3
  • Week of Sept. 12: Ch.6 (6.1-6.6)
  • Week of Sept. 19: Ch.6 (6.5, 6.6, 6.7)
  • Week of Sept. 26: Ch.3 (3.4) and Ch.4
  • Week of Oct. 3: Ch.5 & Midterm
  • Week of Oct. 10: Ch.5
  • Week of Oct. 17: Ch.19 (19.4 & 19.5) and Ch.7
  • Week of Oct. 24: Ch.8 (8.1-8.3)
  • Week of Oct. 31: Ch.8 (8.1 & 8.6)

  • Lecture Summary

  • Introduction
  • Introduction to Process
  • Processes
  • Process Synchronization
  • Synchronization with Semaphores
  • Synchronization with Monitors
  • Semaphore Implementation
  • Threads and Messages
  • CPU Scheduling
  • Real-Time Scheduling
  • Deadlock
  • Storage Management
  • Dynamic Storage Allocation
  • Dynamic Storage Allocation (slides)
  • Sharing Memory with Segmentation
  • Sharing Memory with Paging
  • Virual Memory
  • Disks and File Systems

  • Homeworks, Quizzes, and Assignments

  • Quiz#1
  • HW#1 - Due Sept 8
  • Assignment#0 (Unix tutorial) - Due Sept 19
  • Makfile for Assignment#0
  • HW#2 - Due Sept 20
  • HW#3 - Due Sept 27
  • Assignment#1 (Individual assignment) - Due Oct 4
  • : Nachos package
  • Assignment#2 - Due Nov 1