The purpose of CMPT 332 is to provide a
basic understanding of operating systems principles: the parts of an
operating system, how they are structured, the important policies
governing their operation, and the implementation issues. Although
examples will be drawn from several operating systems throughout the
course, it is not the purpose of this course to provide training in any
particular operating system.
The class will follow the textbook in content, but not necessarily
organization. Students will be responsible for reading the text and
learning the material in it. Lecture time will be used primarily for:
- highlighting specific material in the text,
- covering supplementary material as required, and
- answering student questions.
Prerequisites
CMPT 280, and CMPT 215 or EE 331.
Instructor
Dwight Makaroff
makaroff@cs.usask.ca
966-8656
Office Location: Thorvaldson 281.3
Schedule
MWF 9:30-10:20 Thorvaldson 205A
Course Material
Textbooks:
Title: Modern Operating Systems
Author: Andrew S. Tanenbaum
Publisher: Pearson/Prentice Hall
Edition/Year: 3rd Edition/2008
ISBN: 0-13-6006633-2
Additional information: This book covers more material than we can do in
one course. We will cover the first 5 chapters with some discussion on
later chapters if time permits.
Title: Operating Systems: Internals and Design Principles
Author: William Stallings
Publisher: Pearson/Prentice Hall
Edition/Year: 7th Edition/2012
ISBN: 0-13-230998-1
Additional information: optional, but not necessary for anyone. This
provides a different point of view.
Title: Operating System Concepts
Author: Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne
Publisher: John Wiley and Sons
Edition/Year: 8th Edition/2009
ISBN: 978-0-470-12872-5
Additional information: Yet a third option.
Title: The C Programming Language
Author: Brian Kernighan and Dennis Ritchie
Publisher: Prentice Hall
Edition/Year: 2nd/1988
ISBN: 0-13-110362-8
Additional Information: You will need a C reference book. This is the best.
Type: Recommended resource
Grade Allocation
Requirements: There will be 4 equally-weighted assignments (due
approximately every 3-4 weeks), a mid-term exam (held in-class), and a
final examination during the regular examination period. Exact dates will
be announced as the course progresses. The approximate weightings for
the assignments and examinations are as follows:
Component
|
|
| Assignments |
28% |
| Midterm Exam |
17% (Tentatively Oct 31, 2012) |
| Participation |
5% |
| Final Exam |
50% |
Tutorials
There are 2 tutorial slots. Tutorials will be held every week.
Location and Time: Monday 3:30, Wednesday, 2:30: Thorvaldson S320
(seating limit 33). You may attend either tutorial, depending on space
only.
Teaching Assistants: Mahsa Naseri (man034) and Shaiful Chowdhury
(sbc882)
Learning Objectives
After completing this course, students should be able to do the following tasks:
- Demonstrate and illustrate how application software accesses
computer hardware through the abstractions provided by the operating
system and how the operating system shares hardware resources
between processes, tasks, threads, and users.
- Utilize system library functions robustly in the implementation of
applications that access operating system facilities.
- Correctly abstract operations through the use of Application
Programmer Interfaces and Virtual Function Interfaces.
- Design, implement and document system-level software in a small-
team environment.
- Demonstrate the operation of well-known theoretical algorithms with
respect to deadlock, process and disk scheduling, and memory
management.
- Illustrate the separation of policy and mechanism with examples from
operating system design and implementation.
- Design algorithms to provide concurrent access to shared resources
and implement these algorithms in the following environments in the C
programming language: UNIX processes, various UNIX and Windows
threads packages.
- Explain time, space and complexity tradeoffs in operating system
implementation issues, demonstrating their application with approximate
solutions for various resource sharing problems.
- Modify existing system-level source code to add new functionality.
- Compare and evaluate options for filesystem implementation and use
as well as alternative mechanisms for concurrency control between
processes.
Lessons
Introduction and OverviewIntroductionObjectives: Review and set up the scope of the course.
Topics: Overview, history of Operating Systems. Introduction to the
computing environment for this course. Possible review of C and UNIX/
Linux.
Readings: Chapter 1.1-1.4 (pp. 1-37) - Tanenbaum
Lesson 2
Process Description, Concurrency Control and Inter-Process
Communication
Topics: Subtopics:processes, threads, and address spaces; I/O devices;
synchronization; mutual exclusion; semaphores; monitors; Inter-process
communication; deadlock; examples.
Duration: 4.5 weeks.
Readings: Chapter 2.1, 2.2, 2.3, 5.1, 5.2, 6
Lesson 3
Process Scheduling
Topics: types of scheduling; uniprocessor scheduling; multiprocessor
scheduling; examples.
Duration: 2 weeks
Readings: Chapter 2.4
Lesson 4
Memory Management
Topics: address binding; virtual memory; address translation;
management policies for demand paged virtual memory; examples.
Duration: 3 weeks
Readings: Chapter 3
Lesson 5
I/O and File Systems
Topics: organizing the I/O function; disk architectures, RAID; disk
caching; file organization; secondary storage management; protection
and security; examples.
Duration: 2 weeks
Readings: Parts of Chapter 4 and Sections 5.3 and 5.4
Lesson 6
Distributed Systems and Virtualization
Topics: client-server paradigm; Remote Procedure Call; clusters; process
migration; distributed file systems, virtual machines.
Duration: 2 weeks (If time permits)
Readings: Course Notes and Sections 8.3 and 8.4
Policies
Facilities: Students will be using the Linux/Windows computers in the Spinks Lab to do most of their work, and are expected to be familiar with the use of these facilities.
Other: A few miscellaneous points:
- This course will be administered with BlackBoard. Those unfamiliar
with the use of BlackBoard are strongly encouraged to make use of
the resources available to learn BlackBoard. BlackBoard has a
Discussion Forum and it will be used to disseminate answers to
questions regarding assignments, lecture material, etc. Many
important things may happen there that will not be repeated in
class, so daily reading of the bulletin board is required.
- The course will make regular use of Internet facilities. Page
Locations will be given during lectures and on BlackBoard.
- Assignment descriptions will be made available in electronic form
only. Submissions will be in electronic form only.
- Part of the evaluation in the course will include participation,
including participation in the electronic component of the course
through BlackBoard. Your involvement in this area of the course will
be electronically tracked on a periodic basis.
Additional information:
Assignments are to be done in groups of at most two students.
Plagiarism is strongly forbidden (as in all courses). We will be checking
assignments/projects for plagiarism using nifty cheating detection
software and penalties will be enforced. Refer to the University policy on
academic honesty.