Computer Science 450 Operating Systems Spring 2008–09

Web link: http://www.lawrence.edu/fast/evansj/cmsc450.html
Catalog description: Viewable at http://www.lawrence.edu/academics/catalog/catalogs/0809/Course%20Catalog%2008-09.pdf (2.5 MB)
Instructor:
James S. Evans
Science Hall 131
Extension 6571
Home: 734-6304 (not after 10:00 PM, please)
Office hours: You may either make a specific appointment, or just stop by the office any time that the door is open (that will be most of the time).
Class meetings: 8:30–9:40 M W F, Briggs Hall 419
Text: Operating Systems, 3rd ed., by Gary Nutt (University of Colorado at Boulder), published by Addison-Wesley, ISBN 0-201-77344-9 (2004).
(Errors: click here)
Supporting web page: http://www.cs.colorado.edu/~nutt/osamp.html
Coverage: The course may include some material selected from other sources. Topics may be introduced in class in a somewhat different order and style than the treatment in the text. The intent is complementation and supplementation, not conflict. Assignments may require that you combine knowledge and skills gained from the text, class presentations, and other reference sources.
Rationale for this course: The lay person’s view of an operating system seldom penetrates beneath the glossy surface of the user interface. Some awareness of the internals of computer software systems and their interaction with the underlying hardware will contribute to maturity of understanding among students pursuing a computer science emphasis in their undergraduate years.
With experience from this course, and/or from the companion Hardware Organization course (CMSC 430) and Computer Architecture course (CMSC 440), you will be better able to comprehend the technical basis for what you may read in the media about, for instance, the challenge to Windows operating systems posed by Linux and the open source movement.
Class meeting format: Every member of the class is expected to keep up with the reading assignments in the text in order to participate actively at class meetings. Class periods will be used to focus on highlights and difficult concepts, not on exhaustive coverage of the material from the book. Slides made available by the author of the text will sometimes be used. Members of the class will help decide on the balance to be struck this year among traditional discussion, student presentations, and the author’s slides.
Assessments: Frequent problem assignments, two in-class exams, the final examination, and an optional individual project will form the basis for evaluation.
     Assignments 45%
Hour exams 30%
Final exam 25%
Optional project     displace 5–15%
There is room for individual expression of emphasis among problems, exams, and personal efforts. Persons differ in styles of learning, and you may arrange an individual conference very early in the term to determine how you want these various components to be weighted.
The cumulative distribution of grades for this course in previous years from this instructor has been as follows: A, 54%; B, 24%; C, 17%; D, 4%; F, 4%. These percentages are merely history, however, and in no way represent quotas or promises for this year.
Assignments: There will be ten or so assignments, coming along after every two or three class meetings.
Assignments are due at 1:00 PM on the stated day. Late work is never fun to evaluate. Each student will begin with a “contingency” account containing 10 “contingency points.” When an assignment is late, this account reduces at the rate of 2 points per calendar day (or fraction thereof). If an assignment can be completed nicely and handed in earlier than 5:00 PM preceding the stated due date, then additional contingency points can be accrued at a rate of 1 per calendar day. The contingency account uses signed integer arithmetic. At the end of the term, the balance may be used to resolve ultimate grading decisions, but there is no predetermined relationship of contingency points to the standard grading scale.
The text contains many problems. Some seem to be relatively short. Others seem rather challenging. Development of proficiency with such problems is important, through both written exposition and oral expression (in class, or outside of class when studying with others).
Optional individual or group project: Some colleges and universities offer a “laboratory” to accompany a course about operating systems, with assignments or “projects” involving UNIX system programming. Some courses study a simple made-up operating system like Minix rather than real ones. Since writing even a tiny operating system is a really big challenge, prewritten software to simulate certain concepts has been used elsewhere.
Individuals or groups may submit proposals by the end of Week 3 for term projects that could displace 5–15% of the weighting of other components making up the course grade. (A project would not produce “bonus points” or the like.)
Honor code: Each piece of work that you submit in this course should bear the Lawrence University honor pledge, your signature, and the date of completion on the final page.
Please seek help from others whenever you can learn effectively in the process, but always acknowledge the source, nature, and extent of assistance or collaboration. The final product should be distinctively your own.
Assistance: CMSC 450 is an advanced-level opportunity intended for mature students who can seek out assistance well in advance of the fabled “point of desperation.” Please bring any ambiguities in the assigned work or any lack of clarity in class presentations to the instructor’s attention immediately.
Instructor’s absence(s): In the past the instructor has undertaken non-teaching responsibilities on behalf of Lawrence, and some meetings were held off-campus and involved travel out of town. Although no such obligations are known at this time, there may be a personal trip to New England during the “reading period” break in order to visit two “ancient aunts” and check on some family property holdings. If planes don’t fly back into Appleton on that Sunday, you will be expected to carry on with class activities anyway on Monday.
Tentative schedule (2008-09): The pace will be brisk. Procrastination can be fatal. Keep up! Although the book has 23 chapters, the schedule shown below reflects a slower pace that does not finish the book by the end of the term. Some chapters can probably be handled in just one class period.
Week Day Date Readings, assignments, and events
1 Mon  30 Mar  Chapter 1
Wed  01 Apr  Chapter 2
Fri  03 Apr  Chapter 3
Sat  04 Apr  Assignment 1 due at 1:00 PM
2 Mon  06 Apr  Chapter 4
Wed  08 Apr  Chapter 5
Thu  09 Apr  Assignment 2 due at 1:00 PM
Fri  10 Apr  Chapter 5
3 Mon  13 Apr Chapter 5
Tue  14 Apr  Assignment 3 due at 1:00 PM
Wed  15 Apr  Hour exam (Ch 1–5)
Fri  17 Apr  Chapters 6 and 7
4 Mon  20 Apr  Chapter 7
Wed  22 Apr  Chapter 8
Thu  23 Apr  Assignment 4 due at 1:00 PM
Fri  24 Apr  Chapter 8
5 Mon  27 Apr  Chapter 9
Tue  28 Apr  Assignment 5 due at 1:00 PM
Wed  29 Apr  Chapter 9
Fri  01 May  Chapter 10
6 Sun  03 May  Assignment 6 due at 1:00 PM
Mon  04 May  Chapter 10
Wed  06 May  Chapter 11
Fri  08 May  no class (reading period)
7 Mon  11 May  Chapter 11
Tue  12 May  Assignment 7 due at 1:00 PM
Wed  13 May  Hour exam (Ch 6–10)
Fri  15 May  Chapter 11
8 Mon  18 May  Chapter 11
Wed  20 May  Chapter 12
Thu  21 May  Assignment 8 due at 1:00 PM
Fri  22 May  Chapter 13
9 Mon  25 May  no class (Memorial Day)
Tue  26 May  Assignment 9 due at 1:00 PM
Wed  27 May  Chapter 14
Fri  29 May  Chapter 15
Sat  30 May  Assignment 10 due at 1:00 PM
10 Mon  01 Jun  Chapters 15 and 16
Wed  03 Jun  Chapter 16
Fri  05 Jun  Chapter 17
Sat  06 Jun  Assignment 11 due at 1:00 PM
Sat  06 Jun  Final deadline for all written work is 1:00 PM
11 Thu  11 Jun  Final examination at 1:30 PM
Printed references: Texts and monographs on operating systems are written from several different perspectives for different audiences. Here is a sampling of those primarily oriented to the undergraduate level.
Some of these printed references are available in the Lawrence University library, a few are available in the instructor’s office, and others are newly published. Note that certain items may be rather dated, yet may still be useful for background.
General  Design approach Operating Systems: A Design-Oriented Approach by Charles Crowley. McGraw-Hill/Irwin, 1997. Out of print. Source for project ideas?
Principles of Modern Operating Systems by José M. Garrido and Richard Schlesinger. Jones and Bartlet Publishers, 2008. Shorter, more elementary.
Operating Systems: Internals and Design Principles by William Stallings, 6th ed. Upper Saddle River, NJ: Prentice Hall, 2009. ISBN 0-13-600632-9. [older edition: QA76.76.O63 S734 1998] More theoretical.
Modern Operating Systems by Andrew S. Tanenbaum, 3rd ed. Upper Saddle River, NJ: Prentice Hall, 2008. ISBN 0-13-600663-9. More advanced.
Survey approach An Introduction to Operating Systems by Harvey M. Deitel, 2nd ed. Reading, MA: Addison-Wesley, 1990. Older, but still useful.
Operating Systems by Harvey M. Deitel, Paul J. Deitel, and David R. Choffnes, 3rd ed. Prentice Hall, 2004. ISBN: 0-13-182827-4. Advanced undergraduate and graduate level.
Understanding Operating Systems by Ida M. Flynn and Ann McIver McHoes, 3rd ed. Pacific Grove, CA: Brooks/Cole, 2001. [An earlier edition is in the library collection: QA76.76.O63 F598 1997]
Operating Systems by Gary Nutt (University of Colorado at Boulder), 3rd ed. Addison-Wesley, ISBN 0-201-77344-9 (2004).
Operating System Concepts by Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne, 8th ed. Wiley, ISBN 0-470-12872-0 (2008).
User-level approach Operating Systems: A Systematic View by William S. Davis and T. M. Rajkumar, 6th ed. Boston: Addison Wesley, 2005. ISBN 0-321-26751-6. Less theoretical, more applied.
Concurrent emphasis Concurrent Systems: Operating Systems, Database and Distributed Systems—An Integrated Approach by Jean Bacon, 2nd ed. Reading, MA: Addison Wesley, 1998. [QA76.58.B33 1988]
Concurrent Programming: The Java Programming Language by Stephen J. Hartley. New York: Oxford University Press, 1998. [QA76.73.J38 H375 1988]
Specific  Linux  Kernel Projects for Linux by Gary Nutt. Boston, MA: Addison Wesley Longman, Inc. 2001. Source for project ideas?
LINUX & UNIX Programming Tools: A Primer for Software Developers by Syed Mansoor Sarwar and Khaled H. Al-Saqabi. Addison-Wesley, 2003. ISBN 0-201-77345-7.
MINIX  Operating Systems: Design and Implementation by Andrew S. Tanenbaum and Albert S. Woodhull, 3rd ed. Upper Saddle River, NJ: Prentice Hall, 1997. ISBN 0-13-142938-8. [older edition: QA76.76.O63 T36 1997]
OSP  OSP: An Environment for Operating System Projects by Michael Kifer and Scott A. Smolka. Reading, MA: Addison-Wesley, 1991. [QA76.76.O63 K542 1991]
UNIX  The UNIX Time-Sharing System, Bell System Technical Journal 57 (6) part 2 (1978).
UNIX System Programming by Keith Haviland, Dina Gray, and Ben Salama, 2nd ed. Addison-Wesley, 1998. Now out of print.
Windows  Operating System Projects Using Windows NT by Gary Nutt. Reading, MA: Addison-Wesley, 1999. Source for project ideas?
Electronic references: To an ever-increasing extent, the effort to master a new subject requires the use of electronic as well as print resources.
Some of these electronic references may assist with comprehension of the material in the text, perhaps in conjunction with the assigned problems. Others may be useful for background. Still others may provoke ideas for projects or deeper study.
Manuals  Linux GNU Manuals
UNIX AIX (for pSeries hardware from IBM)
HP-UX (for PA-RISC or Itanium hardware)
IRIX (for MIPS hardware from Silicon Graphics)
Solaris (for UltraSPARC hardware)
Windows Any suggestions where to find comparable information?
Specifications  POSIX  The Open Group Base Specifications Issue 6 is the single common revision to IEEE Std 1003.1-1996, IEEE Std 1003.2-1992, and the Base Specifications of The Open Group Single UNIX Specification, Version 2.
OS and virtual machine freeware Bochs  Open source IA-32 emulator, written in C++, which is capable of running several x86 operating systems from DOS to Windows to Linux.
Freebyte’s guide  Links to commercial and freeware operating systems and emulators.
QEMU  Generic and open source processor emulator for Linux which achieves a good emulation speed by using dynamic translation.
Linux kernel  Primary site for the Linux kernel source, but it has much more than just kernels.
Others  Any additional suggestions for inclusion here?
Pedagogical operating systems  MINIX  Information about MINIX, an open source operating system for educational purposes, by the coauthor of a related book.
Nachos  An instructional operating system, which has been used at Duke and Washington universities.
Others  Any additional suggestions for inclusion here?
Learning tools  BACI  An Introduction to BACI (Ben-Ari Concurrent Interpreter) by Bill Bynum and Tracy Camp. A way to explore semaphores and monitors. Versions are available for Linux, UNIX, and the MS-DOS command prompt window.
HyperLearning Center  Formerly called the Center for the New Engineer, this site at George Mason University offers tutorial modules, Java-based workbenches, and other learning aids for operating systems and certain other topics in computing.
MOSS  Modern Operating Systems Simulators for UNIX/Linux and Windows, four separate simulators designed by Ray Ontko and Alexander Reeder to accompany Modern Operating Systems, 2nd ed., by Tanenbaum.
Steven Robbins  Located at the University of Texas at San Antonio, he writes another simulator every year or so. Eight simulators are currently available online.
Others  Any additional suggestions for inclusion here?
Book support sites  Deitel et al.  Operating Systems, 3rd ed.
Flynn and McIver-McHoes  Understanding Operating Systems, 3rd ed.
Nutt  Operating Systems, 3rd ed. (new book purchase or paid registration required).
Silberschatz et al.  Operating System Concepts with Java, 6th ed.
Operating System Concepts, 7th ed.
Stallings  Operating Systems: Internals and Design Principles, 6th ed.
Bibliographies  General  The Collection of Computer Science Bibliographies, brought to you by Alf-Christian Achilles, offers one way to search the technical literature. (The site is in English.)