Operating Systems

CS 3204

Fall Semester 2002



                   CRN                                  Meeting Time                        Meeting Location

                  91384                      Tuesday/Thursday 12:30 p.m.                   Holden 114



Course Description:


The concept of a process, a processor, and asynchronous concurrently executing processes synchronized via shared data using semaphores or monitors. Deadlock and the Banker’s Algorithm. Storage allocation and management including virtual memory. Processor allocation and management including multiprocessing. Secondary storage management. System security; data privacy; performance evaluation. One example extant operating system will be examined as a case study. X-grade allowed. Pre: CS 2304 (C language), ECE 2504, CS 2604. (3H,3C).


Preparation for the Course:


The prerequisite courses assure that each student has a thorough working knowledge of C, and has taken and has passed CS 2604: Data Structures and File Management, and either CS1206 (ECE 2575): UNIX or CS 2204 with the appropriate grade.  For CS majors and minors that “appropriate grade” is a “C” or better.  For CpE majors, who are not pursuing a CS minor, that “appropriate grade” is a “C-“ or better. A student must also have successfully completed ECE2504: Intro to Computer Organization.  Remaining in this class without having taken these courses and passing each of them with the stated appropriate grade is an honor code violation. 


CS 3204 is restricted to CS and CPE majors at the undergraduate level and to CSA graduate students.


Instructor:                                                         Graduate Teaching Assistant:


Dr. Richard E. Nance                                                           Mr. Seunghyun Im

Office: 562 McBryde Hall                                                    Office: 

Phone: 231-6144                                                                   Phone:

nance@vt.edu                                                                      sim@vt.edu

Office hours: Wednesdays 10:30-11:30 a.m.                    Office hours: 4:00 – 6:00 p.m. Tuesdays,

                       Tuesdays and Thursdays 8:00-9:00 a.m.   Wednesdays, Thursdays



If you wish to pop in and ask a question outside of office hours without an appointment, please check with my secretary, Ms. Moser.  I will see you if I can.  Please note that a recitation section is held each Wednesday at 6:00 p.m. led by the GTA to answer questions concerning course material


Strategies for Success


This course can be one of the most valuable and enjoyable ones that you take while earning your undergraduate degree.  The course deals with both theoretical and practical issues underlying operating system design and implementation.  Note that the course does require a significant investment of your time, especially  for the programming assignments.  If you are not sure that you are willing to allot the time, please drop the course.  I want everyone that starts the course to complete it with a grade of C or better.  Past experience shows that this goal is reasonable (even if not always achievable). 


You must have a very good understanding of data structures (i.e., how to manipulate linked lists in C; how to implement a list sorted on any key; how to use C’s unions and structures; how to use malloc and free to manage arrays whose sizes are not known until run time).  Take a few hours to review these topics from past courses.



Other hints for success:


1.   Start early on each project, allow more time than you estimate.

2.   Time is your enemy.  See number 1.

3.   The programming assignments in this course might tax the compiler and operating system of the machine you are using.  Therefore you are likely to encounter a compiler, debugger, or operating system bug on your platform that can be a time sink when you are trying to meet a class deadline.

4.   Attend the recitation section each week and be ready to ask questions about the material or to clarify the assignment.  The GTA is not to guide you in developing a correct program that meets all the requirements; that is your challenge.

5.   As explained below, homework papers are collected at the start of class on the designated due date.  Papers turned in during or after the class has begun are late.  On return, we shall go over the problem solutions.


Text (required):


Gary Nutt, Operating Systems: A Modern Perspective, Second Edition, Addison-Wesley Longman, Inc., 2002.


Honor System:


All work is to be done under the provisions of the Virginia Tech Honor System


Never copy more than 3 words from any reference material onto any written work in this class without enclosing the passage within quotes and listing a citation for the source, including the page number.


If I believe that a student has violated the honor code, I am obligated to report the violation.  If you fall behind, have too many deadlines, cannot find time for a job along with courses, please come and discuss it with me -- but do not cheat.




The GTA grades the homework and the programming assignments.  I grade the exams.  If you believe an error was made in the grading of homework or a programming assignment, please see the GTA first.  If he cannot resolve the problem, write down why you believe an error was made, and turn it in to me along with the assignment to request a review.


Pop Quizzes                                                                                                                                                 5%

Homework Assignments (lowest score is dropped)                                                                           15%

Programming Assignments:                                                                                  

#1                                                                                                                                                            7%

#2                                                                                                                                                          10%

#3                                                                                                                                                          10%

#4                                                                                                                                                          13%

Mid-term Exam (Closed book/notes)                                                                                                     15%

Comprehensive Final Exam (Closed book and notes, 2 hours)                                                         25%


Projects will be graded based on a scale of 60 points, with a maximum of 10 points each for internal documentation, program structure, and efficient algorithms. Correct results earn a maximum of 30 points.


Homework assignments are due at the start of class.  If you have an excused absence from a class, give me the homework assignment prior to the class session.  Each homework assignment will list the due date, which is generally one week from the assigned date.


If you know that you must be absent from a class meeting on which a homework assignment is due or an exam is given, you should inform me prior to the meeting. Examples of excused absences include religious holidays, participation in university sports, attending CS- or EE-related conferences, medical treatment or family crisis.  If a homework, paper, or programming project is due that day, give me the assignment prior to the class session.  Absences without prior notification should occur only for a verifiable emergency.  If you miss the Mid-term Exam with an excused absence, then the Final Exam will count for 40% of the final grade.


Programming Assignments:


Unix is the operating system used predominantly for examples in the text and in the class.  The CS department has standardized on Linux Mandrake 8.2, which is provided on the laboratory machines.  Submitted assignments will be evaluated using that implementation.  While a mirror for Mandrake 8.2 is provided through ftp://raven.cslab.vt.edu/pub/Linux/mandrake/, the student is advised to check with laboratory support staff in accessing a source code version.  Tutorials for Mandrake are also available at http://raven.cslab.vt.edu/pub/linux/mandrake/8.2/i586/tutorial/index.html.


C is the required programming language for this course.  C++ can be used but no pre-defined classes, e.g. queue, stack, etc., are permitted.  (Except for typical I/O you are expected to develop your own program components.)


Programming assignments are due at the time specified in the assignment.  No late assignments are accepted.  Please submit: (1) a listing of the program, and (2) a listing of the output from the program.  This should be sent ftp to the “incoming” directory at the submission address (to be specified) as a tar’ed and gzipped file containing: the program source code, a compiled (executable) version of the source code, file(s) containing the output of your program, and a README file. The README file should give your name and SSN.. Your gzipped file should be designated by LastnameFirstMiddleinitialsI##, where the ## is the version number of your submission.  (If you send more than one submission, the highest number is taken to be the final version; e.g. NanceRE04 would be accepted as superseding NanceRE03.)  Note that only the latest version submitted by the deadline is graded.





The instructor has scheduled absences on September 10 and 12.  Class will be held on each of these days and a substitute will have the lecture responsibility.  A review for the Final Examination will be led by the GTA on December 10 (the last class meeting).