Department of Computing Science
CMPUT 379: Operating System Concepts
January 2005


Lecture
Instructor
B2 - MWF 9 AM CSC B-10
Paul Lu, Assistant Professor, Athabasca Hall 3-40, 492-7760
E-mail: paullu <at> cs.ualberta.ca
Except for emergencies, please use email instead of phone calls.
Office Contact Times: Monday, Wednesday, 5:00-5:30 PM (or by appointment)
Instructor's Home Page: http://www.cs.ualberta.ca/~paullu

Important Web Pages

Course's Home Page (i.e., this document): http://www.cs.ualberta.ca/~paullu/C379
Departmental Page: http://www.cs.ualberta.ca/courses/Cmput379.php
Newsgroup: ualberta.courses.cmput.379
!! New !! (Jan. 19/05)Web-based Newsgroup: CNS's Beta Interface to newsgroup

On-Line Lecture Notes (Section B2)

Description

To provide an overview of the organization of operating systems for general-purpose computers. Students will be exposed to several new aspects of programming including: process scheduling, process synchronization, multi-process computation, deadlock avoidance, file system organization, and security. The concepts taught will be illustrated with examples taken from a variety of operating systems, but particularly from Unix.

Prerequisite

CMPUT 204, one of 229/285, and 291 (i.e., C-programming, analysis of algorithms, interrupts and DMA, and file access methods) Prior knowledge of C programming under Unix is absolutely required (i.e., CMPUT 201).

Texts and Readings

  1. Either one (not both) of the following textbooks by Silbershatz et al. or Tanenbaum:
  2. W. Stevens, Advanced Programming in the Unix Environment, Addison Wesley, 1993. (HIGHLY RECOMMENDED). You can download the source code to the example programs in Gzipp'ed, tar file format.
  3. The newsgroup is part of the reading assignment for the course. Please keep off-topic content in other newsgroups.
NOTE: There is a special price-reduced bundle of the Tanenbaum and Stevens books in the bookstore.

Course Outline

  1. Introduction and Overview
  2. Processes
  3. Synchronization
  4. Interprocess Communication
  5. Scheduling
  6. Deadlock
  7. Memory Management
  8. Virtual Memory
  9. File Management
  10. Device Management
  11. Security
  12. Case studies

Marking Scheme and Schedule

Section B2's On-Line Marks Posting (Updated April 12)

Report all typos to the instructor.

All handed-in material must have (1) your name, (2) student number, (3) Unix id, (4) lecture section, (5) instructor's name, (6) lab section, and (7) TA's name
clearly labelled. For electronic files, be sure to include all of this information at the start of every file.

Marks will be deducted if any of these items are missing.

During the term, your marks will be accumulated out of 100%, as indicated in the table below. At the end of the term, you will be assigned a letter grade. The mapping from term mark (out of 100%) and final letter grade (corresponding to the 4-point scale) will be consistent with university guidelines, but there is no a priori distribution or formula.

Three (3) Programming Assignments 42% in total Due Dates
Programming assignment #1
12% Wednesday, February 2, 2005 (released Jan. 17)
Programming assignment #2
15% Wednesday, March 2, 2005 (released Feb. 7)
Programming assignment #3
15% Wednesday, March 30, 2005 (released March 9)
One midterm examination 20% Wednesday, February 16, 2005 (in class, 50 minutes)
Final examination 38% Date and time to be confirmed later.

Policy about course outlines can be found in Section 23.4(2) of the University Calendar. (GFC 29 SEP 2003)

The University of Alberta is committed to the highest standards of academic integrity and honesty. Students are expected to be familiar with these standards regarding academic honesty and to uphold the policies of the University in this respect. Students are particularly urged to familiarize themselves with the provisions of the Code of Student Behaviour and avoid any behaviour which could potentially result in suspicions of cheating, plagiarism, misrepresentation of facts and/or participation in an offence. Academic dishonesty is a serious offence and can result in suspension or expulsion from the University. (GFC 29 SEP 2003)

NOTE: All assignments must be completed individually. Some high-level discussion of concepts between students is allowed. Do not work in groups. Do not share or discuss specific code in any way with other students; seek help from your TAs or instructor on these matters. Do not post code fragments longer than about 5 lines of code to the newsgroup. Note that we may use automated tools, such as MOSS, to detect potential cases of plagiarism. Note the definition of plagiarism and cheating in the Code of Student Behaviour

VERY IMPORTANT: Your programming assignments, as submitted, must work on the department's laboratory machines in CSC 225 (Linux, uj01 to uj19 ) and with the gcc compiler. All testing will be done on these machines using gcc. We also recommend that you use the gdb debugger. A program that does not work in CSC 225 with gcc, even if it works on a different Unix-like machine (e.g., other versions Linux or BSD) or compiler, will be considered incorrect. It is your responsibility to double check your tar files on the lab workstations before submitting them. Any mistakes in the above procedures, Makefiles, missing files, improper pathnames, and ``last minute changes'' to the files that prevent proper compilation will result in a mark of zero for correctness (approximately 60% of the total marks for each assignment). If you find an error in your submission, you can use the Late Policy (see below) to correct the mistake.

LATE POLICY: All programming assignments must be submitted electronically before 9 P.M. on the due date. (Note that even 1 second past 9 P.M. will be considered late.) Though not advised, it is possible to submit assignments late, with a penalty. The penalty for being late 1 day (i.e., up to 24 hours) is 10% of the maximum possible mark. Similarly, the late penalty for 2 days (i.e., more than 24 and up to 48 hours) is 20% of the maximum possible mark. No assignments will be accepted after 2 days past the deadline, except under extraordinary conditions and only with the approval of the instructor in advance.

Teaching Assistants

  1. Mike Closson (closson@cs.ualberta.ca)
  2. Meng Ding (ading@cs.ualberta.ca)
  3. Frederick Vizeacoumar (vizea@cs.ualberta.ca)

Labs

All Labs are in CSC 225. Labs start the week of January 17.

Other Useful References

  1. W. Stallings, Operating Systems: Internals and Design Principles , 5th Edition, Prentice Hall, 2005.
  2. M.J. Bach, The Design of the Unix Operating System, Prentice Hall, 1986.
  3. You can download the source code to the example programs in the Stevens book, in Gzipp'ed, tar file format. An alternate page with source code for this book is available. (URL from Patrick Earl)
  4. GDB/gdb: The GNU Debugger Home Page
  5. GDB/gdb: Reference Card
  6. Secure Shell/Copy (ssh/scp) Tutorial by Kimmo Suominen
  7. Beej's Guide to Network Programming by Brian ("Beej") Hall
  8. Jim Frost's IP Sockets Tutorial
  9. Java to C++ Transition Tutorial From Brown University