might have to design or build parts of them yourself:
threading systems, distributed applications, synchronization,
security
might want to use them to full advantage, e.g. tuning
and customizing, selecting an appropriate product
might find operating systems interesting
general foundation, e.g. Ph.D. qualifying exam
What is (not) covered in this course?
A system administrator manages a machine and configures
an operating system, matching requirements to capabilities.
This course may or may not help you become a better system
administrator -- if you already are a good system administrator,
it may make you a better system administrator, but it will not
cover the nuts and bolts
An operating system designer develops a set of requirements
and transforms a set of requirements into a design
An operating system developer transforms a design into
an operating system, or maintains an operating system by adding
device drivers or fixes
An application developer should know what to expect
of an operating system, and may have to implement some OS-like
features
this course is designed to present information needed by
operating system designers and application and operating system
developers
Theory
deadlock can be very complicated:
deadlock prevention
deadlock detection
deadlock avoidance
deadlock resolution
many interesting solutions have been proposed
but in most cases, only deadlock prevention is useful and practical
appropriate theory enhances understanding and aids in designing
impractical theory ("theoretical" theory) is interesting, but
not as useful, can illustrate why the practical choices are more
effective
this course: theory and practice
Implementation
Minix: a real operating system designed for the study of operating
systems (eventually re-implemented and much expanded by Linux Thorvalds)
Minix runs on PC architectures, should be small enough to be
entirely understandable within one course
Minix is well documented in our textbook
AVR butterfly is a tiny embedded system
AVR butterfly has simple (understandable!) I/O devices, no
"standard" operating system (though tinyOS is available for the AVR
microcontrollers)
AVR butterfly programmed in C (and even C++) and assembly
Variety of Operating Systems
embedded system, e.g. for a sensor controller, must execute
tasks in a certain sequence and at certain times
embedded system, e.g. for a car, may have to react to commands
from the user and to sensor inputs, e.g. to control airbags
server, e.g. for a web page, may have to assign resources
so the services are performed at a minimum cost in hardware, and
must provide security
user workstation, must provide security and assign resources
so user gets quick response, and also must be very flexible (general
purpose)
compute engine may have to manage multiple tightly coupled
processors with shared memory so as many computations as possible
complete as soon as possible
distributed operating system has to do all of the above, but
also provide redundancy and robustness in case of failure of one
or more subsystems
grid computing system has to deal with widespread fluctuation
in processor availability and capability, and may have to protect
against computers that perform malicious operations
Your instructor's OS background
mostly user, some design work
Multics, 1978
Unix, 1979, 1985-2004 (including SunOS, Solaris)
some DEC real-time system, 1980-1982
Data General operating system, 1982
MS-DOS and windows, 1982-2004
VAX VMS, 1982-1985
Apple II operating system and P-machine, 1982-1985
Medos-2, 1982-1985
custom-built computer, 1982-1985
Apple Lisa and Macintosh, 1980s
operating system concepts for experimental research
machine (simulated but never built), 1985-1991
Xinu, 1986?
operating system for the MasPar 1024-node machine, 1989-1991
control software for a network switch, 1992-1994
Mach, 1993-1997
Foxnet network stack with some operating system functions, 1993-1997