Computer Science 450 Operating Systems Spring 2010–11

Web link: http://www.lawrence.edu/fast/evansj/cmsc450.html
Catalog description: Viewable at http://www.lawrence.edu/academics/coursedisplay.php?subjcode=CMSC (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/
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, 55%; B, 24%; C, 14%; D, 3%; F, 3%. 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 an “ancient aunt” 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 (2010-11): 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 Wed  23 Mar  Chapter 1
Fri  25 Mar  Chapter 2
Sat  26 Mar  Assignment 1 due at 1:00 PM
2 Mon  28 Apr  Chapter 3
Wed  29 Mar  Chapter 4
Thu  30 Mar  Assignment 2 due at 1:00 PM
Fri  01 Apr  Chapters 4 and 5
3 Mon  04 Apr Chapter 5
Tue  05 Apr  Assignment 3 due at 1:00 PM
Wed  06 Apr  Chapter 6
Fri  08 Apr  Hour exam (Ch 1–5)
4 Mon  11 Apr  Chapter 7
Wed  13 Apr  Chapter 7
Thu  14 Apr  Assignment 4 due at 1:00 PM
Fri  15 Apr  Chapter 8
5 Mon  18 Apr  Chapter 8
Wed  20 Apr  Chapter 9
Thu  21 Apr  Assignment 5 due at 1:00 PM
Fri  22 May  Chapter 9
6 Mon  25 Apr  Chapter 10
Tue  26 Apr  Assignment 6 due at 1:00 PM
Wed  27 Apr  Chapter 10
Fri  29 Apr  no class (reading period)
7 Mon  02 May  Chapter 11
Tue  03 May  Assignment 7 due at 1:00 PM
Wed  04 May  Chapter 11; pick up hour exam (Ch 6–10)
Fri  06 May  Chapter 12
8 Mon  09 May  Chapter 12; hand in hour exam (Ch 6–10)
Wed  11 May  Chapter 13
Thu  12 May  Assignment 8 due at 1:00 PM
Fri  13 May  Chapter 13
9 Mon  16 May  Chapter 14
Tue  17 May  Assignment 9 due at 1:00 PM
Wed  18 May  Chapter 14
Fri  20 May  Chapter 15
Sat  21 May  Assignment 10 due at 1:00 PM
10 Mon  23 May  Chapters 15 and 16
Wed  25 May  Chapter 16
Fri  27 May  Chapter 17
Sat  28 May  Assignment 11 due at 1:00 PM
Sat  28 May  Final deadline for all written work is 1:00 PM
11 Wed  01 Jun  Final examination at 3:00–5: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
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 2004 edition.
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 has written several simulators for operating system components. Eight simulators are currently available online.
Others  Any additional suggestions for inclusion here?
Book support sites 
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.)