Computer Science 4630
Operating Systems
Spring 2000
Syllabus

Instructor: Karl Abrahamson
Office: Austin 233
Office hours: MW 3:30- 5:00
TTh 11:00-12:00
Phone number: 328-1879
e-mail: karl@cs.ecu.edu

Overview

A computer's operating system is an extension of the computer's hardware, providing basic services, managing resources, and generally making the computer much easier to use than the bare hardware would be. Operating systems can be studied at different levels.

  1. Kernel level. The most basic features of an operating system are provided in the kernel. These typically including multitasking (distributing the processor resource among multiple tasks, processes or threads), facilitating communication among threads and processes, memory management (distributing the memory resource among tasks or processes) and provision for basic security features. Issues include mechanisms and policies for managing basic resources, and how the system makes use of the computer hardware to accomplish its goals.

  2. Near kernel level. Closely tied to the kernel are a collection of services that the operating system provides. In some cases, these services are part of the kernel itself. They can include management of the file system, handling of input and output devices and network connections. Issues include file system organization and implementation, how an operating system can manage a large and ever-changing menagerie of devices, and how to provide an elegant and simple interface to all of this to application programs.

  3. System programming level. Application programs can be written at a variety of levels, depending on how closely they interact with the basic features provided by the operating system. The programs that make extensive or low level use of system features are generally called system programs, to distinguish them from software that makes only limited or very high level use of such resources. Issues include understanding an operating system's application program interface and how to deal with programs written for a multithreaded setting.

  4. System administration level. Configuring and maintaining an operating system is done by a system administrator, who needs to be familiar with the user-level features. Issues include understanding how to use system utilities, knowing where information is stored, and understanding how to diagnose and fix system problems.

  5. User level. The less sophisticated user needs an interface to the operating system for performing basic tasks. This interface is offered by an operating system shell, which can be either text-based or graphically based.

Of course, different operating systems look different at all of those levels. Each level tends to be more specific than the previous one. Kernel level concepts, for example, are fairly universal, even if the kernels of existing operating systems differ in how they implement those concepts in substantial ways. File systems look somewhat different across different operating systems, but there are also many similarities. The application program interface is different for each operating system, although with the advent of the Portable Operating System Interface (POSIX) standards, system programs can be written that will run under any POSIX-compliant operating system. The system administration level tends to be quite specific to each operating system.

In this course, we will explore, to some degree, all of the above levels. We will cover basic kernel concepts, and will make use of some of them at the system programming level by writing some simple system programs. We will not cover a great deal of system administration; it is not the intent of this course to turn you into a qualified system administrator for any particular operating system or environment.

Grading

Grading will be on the basis of five quizzes (10% each), a yet-to-be-determined number of programming assignments (25% total) and a comprehensive final exam (25%). The lowest quiz score will be dropped, and replaced by the average of the other quiz scores. If you miss a quiz, you will receive a 0 for that quiz.

Tentative grade cutoffs are 90% for an A, 80% for a B, 70% for a C and 60% for a D. These cutoffs will not be raised. For example, if you would get a B according to these cutoffs, then you will receive no worse than a B.