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

  1. Introduction to Operating Systems (1 week)
  2. Concurrent Processes (2 weeks)
  3. Kernel implementation techniques (1 week)
  4. CPU scheduling (3 weeks)
  5. Memory Management (4 weeks)
  6. File and I/O Systems (3 weeks)

Course Text

Typical Grading and Workload

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.