CMPT 300: Operating Systems

Course Outline

Instructor: M. O'Neill

Objective/Description

Students taking this course will gain a comprehensive grounding in the area of operating systems. Students will gain an understanding of the theoretical and practical issues and problems in operating system design. The course concentrates on the principles behind the design of all operating systems, but students will also see how these principles have been applied in real operating systems including Linux, Mach, Solaris, and Windows NT.

Programming assignments and group projects are part of this course, and may require the use of departmental computing labs (i.e., students cannot expect to undertake their programming tasks using the Microsoft Windows platform). Knowledge of C and C++ is also assumed. As in any upper-level computing course, students will be expected to learn about some aspects of topic areas through reading assignments and self-directed research.

Topics

  • History, Evolution, and Philosophies
  • The User's View of Operating System Services
  • Tasking and Processes
  • Process Coordination and Synchronization
  • Scheduling and Dispatch
  • Physical and Virtual Memory Organization
  • Device Management
  • File Systems and Naming
  • Security and Protection

Grading

Grading for the course will be based on programming assignments and group projects, a midterm, and a final exam. The exact weighting of these components will be determined in the first week of classes. In all written work, clarity of thought and quality of presentation will be among the the evaluation criteria.

Students must attain an overall passing grade on the weighted average of exams in the course in order to obtain a clear pass (C or better).

Textbooks

Required

Abraham Silberschatz and Peter Baer Galvin
Operating System Concepts, fifth edition. Addison-Wesley. 1994.
(You may use a second-hand copy of William Stallings' book (described below) instead of this text.)

Recommended

Harley Hahn
Harley Hahn's Student Guide to Unix, 2nd edition. McGraw Hill. 1996.
(If you've never touched a Unix system, you might find this book's coverage of Unix basics helpful.)
Keith Haviland, Dina Gray and Ben Salama
Unix System Programming: A Programmer's Guide to Software Development, 2nd edition. Addison-Wesley. 1999.
(If you've never programmed a Unix system, you might find this book's coverage of Unix system programming useful.)

References

William Stallings
Operating Systems: Internals and Design Principles, third edition. Prentice Hall: 1998.
(You may use a second-hand copy of this book to augment or substitute for the main course text.)
Andres S. Tanenbaum
Modern Operating Systems. Prentice Hall: 1992.
Charles Crowley
Operating Systems: A Design Oriented Approach. Irwin: 1997.
Garry J. Nutt
Operating Systems: A Modern Perspective. Addison-Wesley. 1997.
Uresh Valhalia
Unix Internals: The New Frontiers. Prentice Hall: 1996.
Marshall K. McKusick, Keith Bostic, Michael J. Karels, and John S. Quarterman
The Design and Implementation of the 4.4 BSD Operating System. Addison-Wesley: 1996.
W. Richard Stevens
Advanced Programming in the UNIX Environment. Addison-Wesley, 1993.
UNIX Network Programming, Volume 1: Networking APIs: Sockets and XTI, 2nd Edition. Prentice Hall: 1998.
UNIX Network Programming, Volume 2: Interprocess Communications, 2nd Edition. Prentice Hall: 1999.

Prerequisites/Corequisites

CMPT 201 and MACM 101 (or CMPT 205). A minimum grade of C is required in all prerequisite courses.

Meeting Times

Monday, Wednesday, and Friday, 8:30 pm - 9:20 pm.

Final Exam

Thursday, August 5, 1999. 8:30 am - 11:30 am.

Distributed: February 23, 1999.


Academic Honesty plays a key role in our efforts to maintain a high standard of academic excellence and integrity. Students are advised that ALL acts of intellectual dishonesty are subject to disciplinary action by the School; serious infractions are dealt with in accordance with the Code of Academic Honesty (Section T10.02)

Students are encouraged to read the School's Statement on Intellectual Honesty.