1. What is Advanced Operating Systems
Part of
the 22C:116 Lecture Notes for Fall 2002
|
Looking at the course title, Advanced Operating Systems, we can infer something about the content of the course:
Appropriate prerequisites include courses with names such as Introduction to System Software and Introductory Operating Systems. The content of such courses is not well standardized, but you should know a fair amount about at least one operating system, and you should have at least a theoretical understanding of process management and interrupt-driven input/output.
Continuing this word-by-word breakdown, we can learn something about the subject of the course from the phrase operating systems.
The object is clearly the computer. The operating system operates the computer.
The indirect subject is clear. The operating system operates on behalf of its human user or on behalf of its human user community.
The direct subject is less clear. Generally, the human users interact with applications programs of one kind or another, and the operating system, in turn, provides services to and operates on those applications.
Posing the question "what is an operating system?" to a class typically generates the following kinds of responses:
Other modern operating systems, notably MS-Windows and Mac OS were not developed with platform independence as a design goal, although Mac OS, in its evolution, has migrated from the 68000 processor used in early Macintosh computers to the Power PC architecture of modern systems, and with MacOS X, it is built on top of the extremely portable Mach kernel, a kernel originally developed to support a reimplementation of Unix.
While Microsoft's Windows family of operating systems was originally intended only for use on the Intel X86 family of architectures, Windows NT was ported to a variety of non-Intel platforms in its early days, before Microsoft made a deliberate to focus exclusively on the Intel platform. made a deliberate decision to cease supporting other platforms. (thereby leading to the near termination of research into computer architectures that are not Intel compatable).
There is no theoretical need for abstraction! In theory, any program can be written on a bare machine, but for any machine with more than a few kilobytes of program and data memory, this is extremely inconvenient, so programmers develop standard libraries of abstractions that, taken together, constitute an operating system.
This resource management model was at the forefront of most thinking about operating systems in the 1970's, when most computer systems were shared between many users who were in competition for the scarce resources of the systems.
As a result, with the advent of personal computers, there was even talk about the irrelevance of operating systems, since with only one user, it was easy to imagine that there were no resource contention problems that needed to be solved.
As it turns out, personal computers are not isolated. We exchange disks, we attach them to each other with networks, and we use some of them to run server software. Because of this, resource contention problems, particularly security, are even more severe today than they were in the 1970's when large centralized computer systems were dominant. Many of the huge security loopholes in the personal computer operating systems of today are the result of the first 20 years of the personal computer era, when many of the system designers believed that resource management was a non-issue.
A good operating system will provide general purpose mechanisms that can be used to enforce a variety of policies; most systems in use today, from Unix to Windows were designed for environments where security was not a big issue, so to the extent they support security, their mechanisms are generally special purpose, limiting the range of policies that may be enforced.
Much of the operating systems research in the 1970's focused on creating general purpose mechanisms for enforcing security policies, but the incorporation of these mechanisms into today's commercial operating systems is, at best, irregular.
The resources of this virtual machine are more closely related to the needs of applications programmers than the resources of the bare hardware. In speaking of a virtual machine, we treat the abstractions provided by the system as if they were hardware facilities. We may even consider the combination of programming language implementation, standard library, operating system and hardware as a virtual machine.
To most users, the operating system remains a mysterious piece of expensive and often quirky software. Most users simply define the operating system as "the software that comes with the computer." More sophisticated users define the operating system as "the software that establishes the look and feel of the system", focusing on the user interface, and particularly on the organization of the display screen.
I visited the John Deere corporate data processing center in the fall of 2001. Here's a very rough idea of the kind of system they run, giving an idea of the kind of environment in which modern operating systems are expected to run.
Each mainframe has dedicated fiber-optic connections to a 4-terabyte fully redundant RAID disk system on the floor below. Fully redudnant means that the actual capacity of the disk system is over 8 terabytes.
In operation, this system serves basically two purposes. First, some fraction of the Windows NT machines were used as E-mail servers, both gateway machines and machines that could respond by E-mail to specially formatted E-mail from remote application software to deliver information services to off-web users.
Second, some fraction o the machines served as dial-up hosts for remote sites that dial directly into the corporate system. Apparently, these were mostly at dealerships that don't yet use the internet.
Third, most of the Windows NT and Unix power is providing web service, to both public corporate web sites, private corporate sites accessed over the public internet, and private corporate sites accessed over the corporate intranet. Most new applications seem to be web-based, with various server-side applications (both Unix and Windows NT based) providing the required access to corporate resources. Many of these services, in turn, submit jobs on the mainframes to do the actual operatons on corporate databases. The mainframes are, in effect, back-end database machines, although they also run a number of purely mainframe-based applications.
So, the fun puzzle is, how do you design operating systems to run in this kind of environment! This is very different from the world of the purely personal computer with a single CPU and one end user, yet the operating systems they use, Windows NT, a version of Unix, and a version of IBM's old VM system, are all systems that have also been used in single user settings (curiously, VM was even supported by one short-lived model in the PC family, the PC-XT/370).
This is a hard class. The prerequisites for studying this subject include the following: