CMSC 412: OPERATING SYSTEMS
Catalog Description
A hands-on
introduction to operating systems, including topics in:
multiprogramming, communication and synchronization, memory management,
IO subsystems, and resource scheduling polices. The laboratory
component consists of constructing a small kernel, including functions
for device IO, multi-tasking, memory management, dynamic linking
and loading, socket-driven window management.
Objective
The goal of this course is to introduce the fundamental concepts
of operating systems, and to provide some experience in implementation.
Students find this course difficult both because of the large amount
of material covered and because of the difficulty of the projects,
but students find it rewarding as well.
Prerequisites
CMSC 311 and CMSC 330.
Corequisite
CMSC 411.
Topics
- Introduction to Operating Systems (1 week)
- Concurrent Processes (2 weeks)
- Kernel implementation techniques (1 week)
- CPU scheduling (3 weeks)
- Memory Management (4 weeks)
- File and I/O Systems (3 weeks)
Course Text
- L. Bic and A. Shaw, The Logical Design of Operating Systems, Second Edition,
Prentice Hall, 1988.
- B.W. Kernighan and D.M. Ritchie, The C programming language,
Prentice-Hall Inc., Englewood Cliffs, 1978.
- M. J. Young, Systems Programming in Turbo C, Sybex, 1988.
- Turbo C and PS/2 manuals, available in the WAM labs.
Typical Grading and Workload
- 60% - Quizzes and final exam
- 40% - Project
Students implement a small operating system for the IBM PS/2 computer.
The project is written in C and assembly using the
Turbo C compiler and assembler.
The project is to be done individually.
The project will be assigned in five parts, each of which incorporates
most of the code written in previous parts:
keyboard and screen driver;
nonpreemptive multiprogramming kernel;
timesharing with preemptive kernel;
experiments in CPU scheduling performance;
simple I/O system.