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.
- 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. 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 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.