It may seem odd to put history in a technical book, but the history of both UNIX and Windows provides important clues about why they look the way they do today and why they have the system management quirks they do. This is of particular importance for the various UNIX incarnations.
At an abstract level, modern operating systems share several design concepts. Due to the size and complexity of modern operating systems, each consists of a layered design. A core part of the operating system forms the base of the design and directly interacts with the computer hardware. The core layer is usually loaded into memory when the computer boots and stays there throughout. A middle layer (or layers), made up of a suite of libraries and services, form an abstraction of the computer hardware and provide a connection to the core layer. Items in the middle layer may be loaded as needed. Riding on top of these middle layers comes the user shell (or Graphical User Interface - GUI) and the application programs themselves. The layers are protected from each other and connected to each other through specific Application Programming Interfaces (API's). This provides modularity, allowing individual components in a layer to be changed without effecting items in another layer. It also provides a framework for reliability and security through careful control of the interactions between layers.
Modern monolithic kernels extend their designs by allowing additional components, known as loadable modules, to be added to the kernel after it starts running. These loadable modules are used to provide additional features such as the code needed to control less commonly used devices, or 3 rd party software to control new devices. Since a loadable module functions as part of the kernel, care needs to be taken to assure that any module loaded into the kernel is secure. Systems requiring high security will need to disable the capability of loading modules and use a purely monolithic kernel to avoid the possibility of changes to the core functions of the operating system. Linux and Solaris are two examples of monolithic kernel designs that include loadable modules.
Note that the dynamically loaded libraries (DLLs) found in Windows differ significantly from the loadable kernel modules found in some UNIX variants. Loadable modules are specific to a given kernel and one generally cannot have multiple versions available at the same time. DLLs do allow for multiple versions often resulting in mismatched DLLs. These instances of incorrect versions for a DLL and a given operating system kernel or application program, is a common source of problems on Windows systems.
The application architecture is often stated more completely as a combination of the general hardware architecture and the operating system. You will frequently see application architectures described as Linux x86 or Solaris SPARC. Still more detailed specifications such as Linux x86 libc5 or Linux alpha 2.2.17 add the kernel version or libraries needed by the application to the description of the operating system and hardware architecture. The main purpose of these application architecture specifications is help match application binaries to the operating systems and hardware on which they will run.
One of the reasons for the numerous interconnections between branches in the history of UNIX has been the availability of the UNIX source code, either freely or under license, and the ethos of borrowing ideas and sharing modifications and fixes. From the start, UNIX was built by programmers for programmers, and the ability to hack on the operating system itself, fix bugs, add features and share those changes with others has been a core value of the world of UNIX.
UNIX System V evolved from the earlier UNIX System III. This version of UNIX had great influence over the later development of UNIX due the publication by AT&T of the System V Interface Definition (SVID), a complete description of what UNIX was and how it was to behave. With compatibility as their goal, nearly every major UNIX flavor picked up some or all of the features specified in the SVID. Sadly, the publication and acceptance of the SVID did not bring about the unified compatibility it might have. Most of the commercial UNIXes are System V-like (to varying degrees) depending on how closely the vendor followed the published specifications. The result is an annoying list of minor differences where these operating systems might have been more fully compatible Common System V style UNIXes include Solaris, HP-UX, IRIX and AIX. Sun's operating environment, in particular, made a very major switch in 1987 from being SunOS, a BSD-styled UNIX operating system to the System V style UNIX known as Solaris.
From a system administrator's viewpoint, a System V derived UNIX differs from a BSD derived UNIX in a couple of areas. Some command option flags and output are different. The run control files on a System V styled system are numerous, with each one starting just one service. They are stored in a separate directory and links from the files into directories named for the various run levels are used to specify which services to start at given level and the order to start them in. This is covered in greater detail in chapter 4, System Boot and Shutdown Procedures. Finally, System V derived UNIXes use a system of sub-directories and number-letter sequences to name disk and tape devices rather then the flat arrangement found on BSD derived systems.
Linux owes its birth in part to additional restrictions AT&T placed on the use of UNIX source code for teaching. These restrictions led to the development of MINIX, an implementation of UNIX written by Andy Tanenbaum for teaching purposes. MINIX provided the inspiration for Linus Torvalds to write his own implementation of UNIX. The Linux kernel developed by Linus was combined with a suite of UNIX programs, mostly written by the GNU project, into a Linux distribution. When someone talks about Linux, they are most often referring to a distribution, a combination of the Linux kernel and the associated GNU utility programs. Linux distributions are sometimes referred to as GNU/Linux to signify the marriage between the Linux kernel, and the GNU compilers, libraries, and tools. In this book when we refer to Linux, we are referring to a complete distribution, including both the Linux kernel and the GNU tools.
Figure 2-3 in the text shows a simplified history of the popular Windows operating system. While the shift from PC-DOS to Windows was a major event in this history, the more important event for system administrators is the split between Windows 9x and Windows NT. Rather then continuing to extend the PC-DOS based Windows 9x series, Windows NT and it's progeny, Windows 2000 and Windows XP, were built on an all new micro-kernel designed by a team led by David Cutler who had previously led the VMS design group at Digital Equipment Corporation. It should come as no surprise that many of the features one sees in Windows NT such as the user privilege system and access control lists for file access control look very similar to the features one finds in VMS. The Windows 9x series are considered “consumer” operating systems. Their lack of the key features of a modern operating system limit their ability to be effectively managed in a multiuser environment. In the remainder of this book, we will focus on the “comercial” versions of Windows, NT, 2000 & XP.
Windows NT adds Windows versions of several key features associated with UNIX and other modern, multi-user operating systems and not present in the PC-DOS based versions of Windows. These include full memory protection for the kernel and user programs, and facilities for networking and inter-process communications. Windows also adds a number of system services including a scripting engine shared by all applications. The main thing lacking in Windows NT at its initial release was the user interface enhancements and wide range of supported hardware found in the Windows 9x releases. The later history of Windows has been one of unification. With the release of Windows XP, the user interface enhancements and wide range of hardware support have been fully incorporated into the Windows NT based kernel and operating system. This integrated design is not without its problems for the system administrator. Some Windows design choices make the task of securing Windows more difficult. Shared resources such as the visual basic scripting engine, a part of the operating system that is available to every program, have been exploited in a wide number of ways to allow viruses, and other malware to spread widely on the Windows platform. Similarly, shared libraries and services on servers based on the Windows platform have had a poor history with regard to immunity to bugs that have resulted in network visible vulnerabilities. Web site defacements and break-ins are often the result of these vulnerabilities.
Macintosh occupies an import place in history as it served as the inspiration and model for graphical user interfaces that would follow, including Windows and the various X windows based desktops found on UNIX. However, the early versions of Mac OS like the Windows 9x series suffered from their lack of support for the key features of a modern operating system.
After Apple's acquisition of NeXT, the history of MacOS merges into the history of UNIX. The NeXT operating system, NeXTSTEP, is based on the work on Mach, a micro-kernel operating system written at Carnige-Mellon University. Apple developed MacOS X using the modern NeXTSTEP as its base. MacOS X has both the Macintosh user interface and the OpenBSD UNIX interface riding on top of the Mach kernel. From a system administrator's viewpoint, MacOS X appears much like NeXTSTEP. The specialized NeXT utilities such as netinfo are there for basic user, host and network configuration management. The familiar UNIX utilities are very much like they are on a OpenBSD UNIX system. However, there are two important exceptions. The Macintosh user interface is based on Apple's proprietary windowing system, not X windows as found on other UNIX systems. While X windows servers are available for MacOS X, the native window system is proprietary. The second notable difference is the filesystem. The default filesystem of Mac OS X is the Macintosh HFS+ filesystem. HFS+ does not provide all of the filesystem features expected by UNIX, in particular MacOS has differences in where it stores metadata (file permissions and ownerships), filename case sensitivity, and case preservation. These differences create some unexpected situations that can result in security problems.
Operating System Concepts, Terminology and History Chapter 2
Chapter Objectives <ul><li>Define a few of the terms which we use in the book. </li></ul><ul><li>Understand a few basic concepts the are the foundation of Operating System design. </li></ul><ul><li>Explore Operating System history. </li></ul>
Operating System Concepts <ul><li> For purposes of this book, we'll consider an operating system to be the supporting software structure on which application programs run. </li></ul><ul><ul><li>This support structure includes the facilities to manage the computer system's resources and any utility programs needed to maintain and configure the operating system. </li></ul></ul><ul><ul><ul><li>The heart of system administration is configuring an operating system to create an environment suitable for the applications that the users require. </li></ul></ul></ul>
Operating System Concepts <ul><li>One can classify operating systems into two broad groups, early and modern, based on an analysis of three key features: </li></ul><ul><ul><li>Ability to share CPU resources between multiple programs. </li></ul></ul><ul><ul><li>Methods employed to control access to system storage. </li></ul></ul><ul><ul><li>Methods employed to protect system and application memory from corruption. </li></ul></ul>
Operating System Concepts <ul><li>Early operating systems provided poor support for these three features. </li></ul><ul><ul><li>Running multiple programs, while possible, was done via a cooperative system which depended on each application program to release the CPU periodically to allow its peer processes to run. </li></ul></ul><ul><ul><li>Protection of system storage was limited. Critical system files and user files were not protected from damage by user-level applications. </li></ul></ul>
Operating System Concepts <ul><li>Finally, early operating systems did not provide memory protection for individual processes or the operating system kernel, thus allowing application “bugs” to result in damage to the parts of the operating system and applications loaded into memory. </li></ul><ul><li>The poor reliability of early operating systems is (in part) due to the lack of support for these features. </li></ul>
Operating System Concepts <ul><li>Modern operating systems are those which provide good support for these three features. </li></ul><ul><ul><li>All of the UNIX variants, Linux, Mac OS X and Windows NT, 2000 and XP provide support for these features. </li></ul></ul><ul><li>As a result, these modern operating systems are more robust and reliable. </li></ul>
Operating System Concepts <ul><li>UNIX systems refer to the Operating System’s core component as the kernel. </li></ul><ul><ul><li>A UNIX kernel handles the interaction with the system hardware. </li></ul></ul><ul><ul><li>The UNIX kernel is specific to a particular computer or group of computers that share a common hardware design. </li></ul></ul><ul><ul><li>UNIX kernels are built around one of two designs: </li></ul></ul><ul><ul><ul><li>a single, monolithic kernel or </li></ul></ul></ul><ul><ul><ul><li>a micro-kernel. </li></ul></ul></ul>
Operating System Concepts <ul><ul><ul><li>The monolithic design is older and uses a single binary image to provide the resource management and hardware interface functions of the core layer. Some examples of the monolithic design are Linux and Solaris. </li></ul></ul></ul><ul><ul><ul><li>A micro-kernel design uses a very small task management component and a suite of modules for all other resource management functions. Windows NT, Windows 2000, Windows XP and Mac OS X are examples of micro-kernel designs. </li></ul></ul></ul>
Operating System Concepts <ul><li> The recent incarnations of Windows; NT, 2000, and XP share a similar layered construction approach with UNIX. </li></ul><ul><ul><li>These recent versions of Windows are based on a micro-kernel design using a small kernel layer and hardware abstraction layer at their base. </li></ul></ul><ul><ul><li>The middle layer is made up of dynamically loaded libraries and services. </li></ul></ul><ul><ul><li>The applications layer contains the familiar applications such as text processors, spreadsheet, web browsers, etc. </li></ul></ul>
Operating System Concepts <ul><li> Hardware designs are often called hardware architectures. </li></ul><ul><ul><li>Fine distinctions between hardware architectures matter most at the core level of the operating system. </li></ul></ul><ul><ul><ul><li>Differences such as “Pentium III versus Intel 486” or “SPARC 4m versus SPARC 4c” are important in the selection of a kernel or operating system distribution. </li></ul></ul></ul><ul><ul><ul><ul><li>On many vendor’s hardware this simple description is sufficient to make a choice of operating system. </li></ul></ul></ul></ul>
Operating System Concepts <ul><li> On PC hardware, the hardware architecture is often only part of the information needed to select an operating system. </li></ul><ul><ul><li>The variety of PC hardware (models of video, I/O, and network cards) all require specific software drivers. </li></ul></ul><ul><ul><li>The availability of drivers for a specific device and a specific operating system is critical. </li></ul></ul><ul><ul><li>All components in the PC, including each interface card and the motherboard, need to be supported by the operating system vendor </li></ul></ul>
Operating System Concepts <ul><li>At the application layer level, the hardware architecture distinctions become less fine. </li></ul><ul><ul><li>At this layer general categories such as "Intel x86" or "SPARC" are sufficient to describe whether a particular program binary will run on a particular machine. </li></ul></ul><ul><ul><li>This general hardware description is sometimes called the application architecture. </li></ul></ul>
History Lessons <ul><li>The development of the various flavors of UNIX, Windows and Mac OS give us clues to their administration and design. </li></ul>
History Lessons <ul><li>The simplified UNIX history tree is a mess. </li></ul><ul><ul><li>A more complete and detailed history tree is even more confusing. </li></ul></ul><ul><ul><li>A complete tree is about 12 pages long! (see http://perso.wanadoo.fr/levenez/unix/). </li></ul></ul>
History Lessons <ul><li>From the late 1970s to early 1980s, UNIX evolved into two related but distinct camps. </li></ul><ul><ul><li>One camp centered about a commercial UNIX developed by American Telephone and Telegraph (AT&T) . </li></ul></ul><ul><ul><ul><li>The AT&T versions were named System III and later System V. </li></ul></ul></ul>
History Lessons <ul><ul><li>The other popular UNIX variant, Berkeley Standard Distribution or BSD UNIX, was funded by the Department of Defense's Advanced Research Projects Administration. </li></ul></ul><ul><ul><ul><li>Networking was added to BSD UNIX making it an important force in the early development of the Internet. </li></ul></ul></ul><ul><ul><ul><li>BSD UNIX formed the basis for the early SunOS, IRIX, NeXTSTEP and later versions of BSD. </li></ul></ul></ul><ul><ul><ul><li>The most common current BSD-styled UNIXes are the BSD triplets, OpenBSD, FreeBSD, NetBSD. </li></ul></ul></ul>
History Lessons <ul><li>Differences between flavors of UNIX become more apparent the more sophisticated the user becomes. </li></ul><ul><ul><li>At the most basic level, all UNIX variants share a common set of user level commands that function in a nearly identical manner with the exception of some option flags. </li></ul></ul><ul><ul><li>More sophisticated users will note the different option flags. </li></ul></ul><ul><ul><li>Programmers will note that the BSD and System V families of UNIX have significant differences in libraries and system calls. </li></ul></ul><ul><li>The differences between UNIX variants will be most apparent to the system administrator. </li></ul>
History Lessons <ul><li>From the perspective of a system administrator, a BSD derived UNIX has several noteworthy differences from its System V cousins. </li></ul><ul><ul><li>The option flags and output format for several programs, are different from their System V counterparts. </li></ul></ul><ul><ul><li>BSD UNIXes use a small collection of run control files (e.g. /etc/rc, /etc/rc.local) which each start multiple service daemons. </li></ul></ul><ul><ul><li>The BSD UNIX device naming convention for disk and tape drives usually uses a flat directory scheme with a letter, number, letter pattern (e.g. /dev/rz0a) to specify the device driver, device number and partition or density. </li></ul></ul>
History Lessons <ul><li>So where does Linux fit into all this? </li></ul><ul><ul><li>Linux is sort of a mutt as far as its orientation with regard to the BSD and System V styles of UNIXes. </li></ul></ul><ul><ul><ul><li>Many of the commands share the BSD style option flags and output </li></ul></ul></ul><ul><ul><ul><li>Run-control files and other aspects of system administration vary between distributions. </li></ul></ul></ul>
History Lessons <ul><li>Where did Windows come from? </li></ul><ul><li>At nearly the same time the two major UNIX varieties were establishing themselves and the commercial UNIX derivatives were being born, the personal computer was being created. </li></ul><ul><li>Bill Gates and Microsoft delivered the first PC operating system, the command line oriented Disk Operating System (DOS). </li></ul>
History Lessons <ul><li>In an effort to compete with the Apple graphical user interface (GUI), the Windows Operating System was developed. </li></ul><ul><ul><li>Early versions of Windows lacked the maturity of the Apple GUI. </li></ul></ul><ul><ul><li>The Windows development split into two streams: a “home” or personal version of Windows, and a “business” or commercial version. </li></ul></ul><ul><ul><li>Recently, Microsoft has been trying to merge the two versions into a single offering. </li></ul></ul>
History Lessons <ul><li>Apple and Mac OS X </li></ul><ul><ul><li>Driving along a third parallel set of tracks, Apple developed Mac OS for their Macintosh computer during roughly the same time frame as Windows. </li></ul></ul><ul><ul><ul><li>Inspired by the work Xerox had done on graphical user interfaces, Apple developed the Macintosh, the first commercially successful personal computer with a graphical user interface. </li></ul></ul></ul>
History Lessons <ul><li>Apple and Mac OS X </li></ul><ul><ul><ul><li>NeXT Computers took the look and feel of MacOS and married it to a UNIX-like micro-kernel architecture to form the NeXTStep Operating System. </li></ul></ul></ul><ul><ul><ul><li>When Apple acquired NeXT, the developers had an opportunity to update and expand the Apple GUI interface, resulting in MacOS X. </li></ul></ul></ul>
Summary <ul><li>Basic terminology and history gives the system administrator the background to take on the tasks she faces. </li></ul><ul><ul><li>Understanding some basic terminology aids in the choice of software, operating systems and hardware and forms a common language for broad descriptions of these items and their relation to each other. </li></ul></ul><ul><ul><li>The history of the development of UNIX, Windows and Mac OS provides insights into the organization, tools and problems one faces on a particular type of system. An understanding and knowledge of this history allows a system administrator to more rapidly come up to speed when faced with a new system. </li></ul></ul>