Operating Systems

CS 42
Fall 1996

Instructor:
Dr. Thomas P. Kelliher
Hoyt 160
Office phone: 946-7290
Home phone: 946-3544 (urgent business)
E-mail: Send mail to kelliher AT DOMAIN abacus.westminster.edu
URL: http://keystone.westminster.edu/~kelliher
Office hours: MW 2:00-3:00pm. TR 1:00--2:30pm. Other times by appointment.

Class:
Hoyt 166
MWF 12:40--1:40pm

Objectives:
Our objective is to learn how modern operating systems are designed, through study of their fundamental pieces and through actual operating system modification and design. For example, here are some features of recent operating systems:
  • Symmetric multi-processing (SMP)
  • Threads
  • Micro kernel design
  • Object oriented systems
  • Distributed systems
  • Demand paging
  • Virtual memory

A second objective is to understand concurrent processes/threads and how to control that concurrency.

Very few of us will ever write a real operating system, so why bother studying this material? The operating systems controlling ordinary user's desktop workstations are becoming increasingly sophisticated (witness the various implementations of Unix, OS/2, Windows NT, and Windows 95). For one, as computing professionals, it is imperative that we understand the components of such sophisticated OSs so that we can diagnose and repair operational and performance problems with these systems.

Another reason comes from the preface of Patterson & Hennessy's book on computer organization: ``We believe that learning in computer science and engineering should reflect the current state of the field, as well as introduce the principles that are shaping computing. We also feel that readers in every specialty of computing need to appreciate the organizational paradigms that determine the capabilities, performance, and, ultimately, the success of computer systems.''

I expect you to be proficient in C++ and Unix. See the Feb. 9--16 lecture outlines on the CS23 home page
(http://keystone.westminster.edu/~kelliher/cs23/cs23.html) for help. If you need further assistance, see me early in the semester.

Textbooks:
  1. A. Silberschatz and P. B. Galvin, Operating Systems Concepts, 4th edition, Addison Wesley, 1994. Required.
  2. P. W. Abrahams and B. R. Larson, Unix for the Impatient, 2nd edition, Addison Wesley, 1996.

Suggested
Materials:
A few 3.5" floppy diskettes. Preferably, these should be high density diskettes. You can use these to back-up your work. Ultimately, you are responsible for your files; within Unix, once a file has been removed, it is impossible to un-remove it.

Grading:

Grade Distribution

A = [90--100]
B = [80--90)
etc.

I use +/- grading sparingly.

Course Point Distribution

The following is tentative.

  1. Assignments --- A few written assignments during the course of the semester. Assignments will account for 200 points. Assignments turned in after this time are late. Assignments which are less than 24 hours late receive a 20 percent penalty deduction. Assignments which are more than 24 hours late will not be accepted.

  2. Programming project --- Three/Four (to be decided later) part two person team project worth 350 points. Details will be given later.

  3. Midterms --- There will be two in-class midterms on October 4 and November 8. If you cannot take one of these midterms, please let me know as soon as possible. Assuming that you have a good reason, a make-up will be scheduled. This make-up should be scheduled to be taken within 48 hours of the ordinary midterm. Each midterm will be worth 100 points.

  4. Final --- The cumulative final will be worth 250 points.

I will consider extra credit opportunities. Most likely, this will require the in-class presentation of a research paper from the literature.

Course Handouts:

Most course handouts will be made available once in class. After that, they may be obtained from my personal home page on the World Wide Web (see the URL above). I also expect to distribute homework and exam solutions through my home page.

Attendance:
Attendance of lectures is anticipated and expected. I keep a record of attendance. Please note that a substantial amount of the class material is not in the textbook.

Integrity:
Academic dishonesty will not be tolerated. In particular, this applies to programming assignments. Unless otherwise stated, all programming assignments are to be the individual work (both in development and implementation) of the student turning in the work. Refer to the Handbook for Students and the Cheating Policy of the Department of Mathematics and Computer Science. Relevant points include:
  1. Program/module plagiarism will be suspected if a programming assignment results in two or more non-trivial program/module solutions so similar that one can be converted to another by a mechanical transformation.

  2. Cheating will be suspected if a student who was to complete an assignment cannot adequately explain the intricacy of their solution nor the techniques used to generate that solution.

A first offense will result in a grade of zero points for the assignment, Any subsequent offenses may result in a charge of academic dishonesty being filed with the Dean of the College, along with a grade of zero.

That said, I realize that Computer Science is best learned in a collaborative environment. You should work together and enhance each others' understanding of the material. However, you are ultimately responsible for your own learning. By depending too strongly on someone else for help with an assignment, you most definitely jeopardize your ability to perform well on a midterm or final. The name of anyone with whom you collaborate on an assignment must be listed on the assignment.

Tentative Initial Schedule:

It is your responsibility to read the assigned material before class. What we do in class will not necessarily be what is in the reading.

Sep. 4: Introduction. Chapter one.
Sep. 6: Architecture review. 2.1--2.4.
Sep. 9: Architecture review, continued. 2.5--2.7.
Sep. 11: Operating system overview. 3.1--3.4.
Sep. 13: Operating system overview, continued 3.5--3.9.
Sep. 16: Processes. 4.1--4.3.
Sep. 18: Interactions between processes. 4.4--4.7.
Sep. 20: Nachos project introduction.
Sep. 23: CPU scheduling. 5.1--5.7.
Sep. 25: Process synchronization. 6.1--6.3.
Sep. 27: Nachos project.
Sep. 30: Synchronization tools and problems. 6.4--6.6.
Oct. 2: More synchronization tools. 6.7--6.10.
Oct. 4: Midterm 1.



Thomas P. Kelliher
Tue Sep 3 14:14:43 EDT 1996
Tom Kelliher