Computer Science 4630
Operating Systems
Spring 2001
Syllabus
Instructor: | Karl Abrahamson
|
Office: | Austin 233
|
Office hours: | MW 12:00- 2:00
|
| TTh 5:00-5:30
|
Phone number: | 328-1879
|
e-mail: | karl@cs.ecu.edu
|
Text: | Applied Operating System Concepts (first
edition), by A. Silbershatz, P. Galvin and G. Gagne
|
Note. There appears to have been a mixup at the bookstore, which
has the text Operating System Concepts (fifth edition) by
Silbershatz and Galvin. This is really the previous version of
the course text. The title and edition changed because the authors
switched to a different publisher. The biggest difference between
the two versions is the the newer one gives examples written in Java.
Since we will not be writing Java for this course, the difference
between the two versions is not significant, and you will be able to
follow what we are doing from either version.
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.
- 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.
- 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, but often
they are separate. 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.
- 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.
- 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.
- 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 from one
another 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.
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%).
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.