\documentclass[a4paper, notitlepage]{report}
\usepackage[latin1]{inputenc}    % Accept european-encoded (latin1) characters.
\usepackage{a4wide}              % Wide paper -- W.Hennings: this is bad practice
\usepackage{url}
\urlstyle{sf}
% For Swedish reports
\usepackage[english]{babel}
%\frenchspacing

% For encapsulated postscript figures
%
% Use:
%
% \includegraphics{width=10cm, height=10cm}{fig.eps}
%
% where width and height are optional
\usepackage{graphicx}   % For eps figures
\usepackage{epsfig}     % Alternative package


% To get figures, tables, etc. where you want them.
%
% Use:
%
% \begin{figure}[H]
% ...
%
%\usepackage{here}

\setcounter{tocdepth}{4}
\setcounter{secnumdepth}{4}
% Nicer headers and footers
%
% \fancyhead[L/C/R]{} to change headers
% \fancyfoot[L/C/R]{} to change footers
\usepackage{fancyhdr} 
\fancyhead[L]{Linux Versus AIX, HP-UX, Tru64 UNIX, Solaris}
\fancyhead[R]{by César da Silva}
%W.Hennings: following line is bad practice and gives error message under MikTeX:
%\footrulewidth 0.5pt % Insert a line above the footer

\pagestyle{fancy}

%
% Exchange text in encapsulated postscript figures with LaTeX text
%
% Before the image, insert arbitrary many
% (Don't worry, it _will_ look good when you convert to postscript)
%
% \psfrag{original text}{substituted text}
%
\usepackage{psfrag}   

%
% For nicer captions
%
% Valid options (between []) are:
%
% Indentation: hang, center, centerlast, nooneline
% Size: scriptsize, small, normalsize, large, Large
% Style: up, it, sl, sc, md, bf, rm, sf, tt
%
%\usepackage[hang,small,bf]{caption}

%
% Want to change font?
%
% Uncomment your choice, if all uncommented, Computer Modern Roman is
% used. Note that some of these don't seem to work properly
%
%\usepackage{pspalatino}
%\usepackage{palatino}
\usepackage{times}
%\usepackage{charter}
%\usepackage{utopia}
%\usepackage{pifont}
%\usepackage{chancery}
%\usepackage{bookman}
%\usepackage{avant}
%\usepackage{helvet}
%\usepackage{zapfchan}
%\usepackage{courier}
%\usepackage{newcent}

%
% Some optional packages:
%

%
% Index section
%
% Put a \index{keyword} at the word in the text, a \printindex where
% you want the index printed, and run "makeindex <reportname>.idx
% after LaTeX-compiling (and compile a second time)
%
\usepackage{makeidx} %Index-section
\makeindex

%
% Fancier enumeration
% You get a new \begin{enumerate}[XXX] where you can specify XXX to be
% text {i,I,a,A,1}, for example \begin{enumerate}[Uppg. a)] to get a
% Uppg. a)/b)/c) list.
%
\usepackage{enumerate}


\begin{document}

\title{Linux \\ VS.\\ AIX, HP--UX, Tru64 UNIX, Solaris}
\author{ By \\ \\ {\Large César da silva} \\ (\emph{na98csa@student.hig.se}) \\
\\
Instructor: Andreas Larsson \\
\\
UNIVERSITY OF GÄVLE}

\maketitle



\begin{abstract}
There has been a lot of talk in the press that Linux is not ready for the enterprise server market where the demand for high availability, performance and security are the main issues. This report will look at what the latest Linux kernel doesn't have in comparison to the main Unix actors within the enterprise server market and finally conclude if Linux is ready for the enterprise server market or what features Linux have to implement to compete with the other Unix clones to get into the enterprise server market. This is a comparative report who got its information mainly from the original UNIX supplier's homepage, books, articles and from people doing technical support. The information is put together, sorted out, and compared to see which features Linux is lacking in comparison to other Unix's and and if it has more functions then the other operating systems, and finally got to the conclusion that Linux is not yet ready for the enterprise market. To penetrate the enterprise server market it has to implement support for more amount of memory, more high--availability functions and more security functions. It could not be verified if Linux has more features than any of the compared operating systems due to the lack of information. \\ \\

This is a second paragraph just to see how the indentation for the abstract environment works.
It is not at all clear what the indentation should be.

Keywords: {\bf Linux, operating system, AIX, HP-UX, True64 UNIX, Solaris, enterprise}
\end{abstract}

\pagenumbering{Roman}
\newpage
\clearpage
\begin{center}
\vspace*{12pt}
\vfill
\section*{Thanks}
Thanks to my wife for her patience, the Linux kernel developers (especially those mentioned in the appendix), Jan Strage, Ian P. Springer, and Joel Eriksson for their help.
\end{center}
\vfill
\newpage
\clearpage
\tableofcontents % Always compile twice if you have changed much
\newpage
\clearpage
\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
\section{OPEN PUBLICATION LICENSE}

\subsection{REQUIREMENTS ON BOTH UNMODIFIED AND MODIFIED VERSIONS}

The Open Publication works may be reproduced and distributed in whole or in part, in any medium physical or electronic, provided that the terms of this license are adhered to, and that this license or an incorporation of it by reference (with any options elected by the author(s) and/or publisher) is displayed in the reproduction.

Proper form for an incorporation by reference is as follows:

\quote{Copyright \copyright \ 2001 by César da Silva.  This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at \url{http://www.opencontent.org/openpub/}).}

The reference must be immediately followed with any options elected by the author(s) and/or publisher of the document (see section VI).

Commercial redistribution of Open Publication-licensed material is permitted.

Any publication in standard (paper) book form shall require the citation of the original publisher and author. The publisher and author's names shall appear on all outer surfaces of the book. On all outer surfaces of the book the original publishers name shall be as large as the title of the work and cited as possessive with respect to the title.

\subsection{COPYRIGHT}

The copyright to each Open Publication is owned by its author(s) or designee.

\subsection{SCOPE OF LICENSE}

The following license terms apply to all Open Publication works, unless otherwise explicitly stated in the document.

Mere aggregation of Open Publication works or a portion of an Open Publication work with other works or programs on the same media shall not cause this license to apply to those other works. The aggregate work shall contain a notice specifying the inclusion of the Open Publication material and appropriate copyright notice.
\begin{description}
\item{SEVERABILITY.} If any part of this license is found to be unenforceable in any jurisdiction, the remaining portions of the license remain in force.

\item{NO WARRANTY.} Open Publication works are licensed and provided "as is" without warranty of any kind, express or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose or a warranty of non-infringement.
\end{description}
\subsection{REQUIREMENTS ON MODIFIED WORKS}

All modified versions of documents covered by this license, including translations, anthologies, compilations and partial documents, must meet the following requirements:
\begin{enumerate}
\item The modified version must be labeled as such.
\item The person making the modifications must be identified and the modifications dated.
\item Acknowledgement of the original author and publisher if applicable must be retained according to normal academic citation practices.
\item The location of the original unmodified document must be identified.
\item The original author's (or authors') name(s) may not be used to assert or imply endorsement of the resulting document without the original author's (or authors') permission.
\end{enumerate}
\subsection{GOOD-PRACTICE RECOMMENDATIONS }

In addition to the requirements of this license, it is requested from and strongly recommended of redistributors that:
\begin{enumerate}
\item If you are distributing Open Publication works on hardcopy or CD-ROM, you provide email notification to the authors of your intent to redistribute at least thirty days before your manuscript or media freeze, to give the authors time to provide updated documents. This notification should describe modifications, if any, made to the document.

\item All substantive modifications (including deletions) be either clearly marked up in the document or else described in an attachment to the document.
\end{enumerate}
Finally, while it is not mandatory under this license, it is considered good form to offer a free copy of any hardcopy and CD-ROM expression of an Open Publication-licensed work to its author(s).

\subsection{LICENSE OPTIONS}

The author(s) and/or publisher of an Open Publication-licensed document may elect certain options by appending language to the reference to or copy of the license. These options are considered part of the license instance and must be included with the license (or its incorporation by reference) in derived works.

A. To prohibit distribution of substantively modified versions without the explicit permission of the author(s). "Substantive modification" is defined as a change to the semantic content of the document, and excludes mere changes in format or typographical corrections.

To accomplish this, add the phrase `Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder.' to the license reference or copy.

B. To prohibit any publication of this work or derivative works in whole or in part in standard (paper) book form for commercial purposes is prohibited unless prior permission is obtained from the copyright holder.

To accomplish this, add the phrase 'Distribution of the work or derivative of the work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder.' to the license reference or copy.
\newpage

\section{CHANGES}
Here are the changes made to the documentation after the thesis had been handed in.
\begin{itemize}
\item Corrected the reference point of ACL on HP-UX from 30 to 44 (see page \pageref{change1}).

\item Added the following supported file systems to HP-UX: CDFS, HFS, LOFS, ISO9660, Rockridge, and High Sierra (see page \pageref{change2}).

\item Added reference and marks in table for HP-UX NFS v2 \& v3 support (see page \pageref{change3}).

\item Added support for LVM for HP-UX (see page \pageref{change4}).

\item Splitted up Bibliography in sections (see the bibliography on page \pageref{biblio}.

\item Added BSD Process Accounting to kernel specific features table and a explanation (see page \pageref{procacc} and \pageref{change5}).

\item Changed ``Result analys'' to: \begin{quote}``Linux has support for a more kinds of file systems and architectures than any other operating system in this thesis. But it lacks high-availability and security features (like Live upgrade, dynamic memory/processor resilience, HSM, ACL, IPSec...).''\end{quote} See page \pageref{resultanalys}.

\item Added text to ``Conclusions'':\begin{quote}``For Linux to get into the enterprise server market it has to include support for more memory, high-availability and security features, to make it more competitive against the other operating systems. The features Linux lacks of right now are:\begin{itemize}
\item Dynamic processor/memory resilience.
\item Dynamic page sizing.
\item Live upgrade.
\item ACL
\item Hierarchical storage management.
\item  CacheFS
\item IPSec''
\end{itemize}\end{quote}
See page \pageref{conclusions}.

\item Removed item ``Compare the different operating systems network features.'' from the section Conclusions (see page \pageref{conclusions}).

\item Added REALIZATION chapter with the following text:\begin{quote}``Most of the work has been done by reading various different documentation,asking technical support, and identifying if the mentioned functions were implemented in the kernel. The functions was then inserted into a table to finally get to a result.''\end{quote} See page \pageref{realization}.

\item Added section IMPLEMENTATION to the REALIZATION chapter with the following text:\begin{quote}``The implementation of the missing functions are beyond the scope of this thesis. They are left to the developers of the Linux kernel.''\end{quote}. See page \pageref{implementation}

\item Changed the text \begin{quote}``Many combinations are possible but I have only seen a few referred to.''\end{quote} on page \pageref{change10} to \begin{quote}``Many other combinations are possible.''\end{quote}

\item Added \begin{quote}``There are more kernel options in the Linux kernel then those mentioned in this thesis, but due to the lack of missing information if those functions are available or not on the other operating systems and if they are implemented in the kernel, they are not mentioned in this thesis. 

This is also true for some functions that the other operating systems have, but that couldn't be confirmed if they existed in the Linux kernel.

This would lead to a incorrect and unfair analys of the functions in the kernels.''\end{quote} to section ``DELIMINATION OF THE PROBLEM AREA''. See page \pageref{delimination}.

\item Added a picture to the NUMA section to show what SMP and NUMA is.
\end{itemize}
\newpage
\pagenumbering{arabic}
\chapter{INTRODUCTION} 
Linux is a free clone of the operating system Unix, created by Linus Torvald, originally developed as a hobby project. It was first developed for 32-bit x86-based PCs\footnote{386 or higher.}. These days it also runs on various other computer architectures. Here is a list of the supported architectures that Linux runs on\cite{24}:
\begin{itemize}
\item Compaq Alpha AXP 
\item Sun 
\item SPARC 
\item UltraSPARC 
\item Motorola 68000 
\item PowerPC 
\item ARM 
\item Hitachi SuperH 
\item IBM S/390 
\item MIPS 
\item HP PA-RISC 
\item Intel IA-64 
\item DEC VAX 
\item AMD x86-64\footnote{Port is currently in progress.}
\end{itemize}

The popularity of Linux among home users is increasing rapidly, and contributed to a wider acceptance of UNIX among home users\cite{3}. Linux is also beginning to get into the embedded/PDA market \cite{2}. Linux is having more difficulty in being established on the enterprise server market, where it is mostly used for Internet related tasks\cite{3}.
This document is going to encounter what features the Linux kernel is lacking in comparation to other Unix kernel.

\section{PROBLEM DEFINITION}
The major obstacle Linux is having is in getting into the enterprise server market. Whenever Linux gets into a corporation it's only used for Internet related assignments, and not in the "heart" of the corporation.\cite{4} 
Historically, large corporations have steered clear of free software due to the unfounded assumption that anything free can't be worthwhile and  also because Linux has a reputation of being unstable, lack of performance, support, and to not provide for the high degree of security that the enterprises requires about redundancy and high availability in comparison to other UNIX operating systems and Microsoft Windows NT/200 operating systems. This myth are somewhat dispelled in reference.\cite{5}

\section{AIM} 
This report will look at what the other Unix systems used on the enterprise server market, have support for in the kernel that Linux doesn't have. The UNIX operating systems that are going to be measure up against Linux latest kernel are:

\begin{center}
\begin{itemize}
\item AIX\footnote{AIX is copyrighted by IBM.}
\item True64 UNIX\footnote{Tru64 UNIX is copyrighted by Compaq.}
\item Solaris\footnote{Solaris is copyrighted by Sun Microsystems.}
\item HP-UX\footnote{HP-UX is copyrighted by Hewlett Packard.}
\end{itemize}
\end{center}

The latest official, not modified version of every operating system is utilized. Ultimately resolve what features Linux needs to implement in the kernel, in comparison to the Unix operating system referred to above, so that it can be established and used in the enterprise market or in the government agencies.

The report might be used as a guide to the enterprises or governments that are planning on adapting Linux or to give a indication to the Linux kernel developers on what features Linux would have to implement in the kernel in comparison to the above mentioned operating system to get an better acceptance and be more widely used in the enterprise/government market. 

\section{QUESTIONS AT ISSUE}
\begin{itemize} 
\item What features doesn't Linux have in the kernel that other Unix kernels have? 
\item Does any of the other Unix operating system have more features than Linux?
\end{itemize}

\section{EXPECTED RESULT} 
The expected result is that Linux is ready for the enterprise market, because it probably has all the features that all the other UNIX system already have. 


\chapter{THEORETICAL BACKGROUND}

\section{KERNEL/OPERATING SYSTEM}
A kernel is merely a computer program that acts as a mediator through which the user interacts with the computer and its components and peripheral devices (processor, processes, files, disks, terminals, printers, plotters, etc.). A UNIX operating system consists of a kernel and some system programs. There are also some application programs for doing work. The kernel is the heart of the operating system\footnote{In fact, it is often mistakenly considered to be the operating system itself, but it is not. An operating system provides many more services than a plain kernel.}.  It keeps track of files on the disk, starts programs and runs them concurrently, assigns memory and other resources to various processes, receives packets from and sends packets to the network, and so on. The kernel does very little by itself, but it provides tools with which all services can be built. It also prevents anyone from accessing the hardware directly, forcing everyone to use the tools it provides. This way the kernel provides some protection for users from each other. The tools provided by the kernel are used via system calls. When loaded, the module code resides in the kernel's address space and executes entirely within the context of the kernel. \cite{15}

Everything that the kernel support does not have to be in memory all the time. Now days most of the kernels are modular. It means that some system functions are loaded into memory when needed.A kernel module is simply an object file containing routines and/or data to load into a running kernel.  \cite{15}

The system programs use the tools provided by the kernel to implement the various services required from an operating system. System programs, and all other programs, run `on top of the kernel', in what is called the user mode. The difference between system and application programs is one of intent: applications are intended for getting useful things done (or for playing, if it happens to be a game), whereas system programs are needed to get the system working. A word processor is an application; telnet is a system program. The difference is often somewhat blurry. \cite{15}

An operating system can also contain compilers and their corresponding libraries (GCC and the C library in particular under Linux), although not all programming languages need be part of the operating system. Documentation, and sometimes even games, can also be part of it. Traditionally, the operating system has been defined by the contents of the installation disks; with Linux it is not as clear since it is spread all over the FTP sites of the world or bundled with different distributions. \cite{15}

\begin{figure}[h]
\begin{center}
%\epsfig{file=os.eps, height=4cm, width=4cm}
**Missing**
\end{center}
\caption{Block diagram of an operating system.}
\label{fig:OperatingSystem}
\end{figure}

                             

\section{HISTORY OF UNIX}
Dennis Ritchie and Ken Thompson at Bell Laboratories developed UNIX on a PDP-7 in the late 1960s; it was first called UNIX in 1970. After 1975, UNIX developed along two separate branches leading to Berkeley (BSD) UNIX and System V UNIX. Nowadays, System V UNIX is available on most computers but different to popular belief, there is no such thing as a "standard" UNIX version. Although the basic commands are available in most UNIX implementations, hardware vendors like to add non-standard options and an identical item commands to tailor their UNIX to their machines. Standardization is, however, being undertaken by the Open Software Foundation (OSF) and, separately, by Unix International; the first precede, OSF/1, is running on the new DEC an Alpha computer. \cite{6}

Since the mid-1980s approximately, UNIX has evolved into the operating system of choice for most machines (probably because it is cheap for a hardware vendor to adopt it), which means that users in a multi-vendor computer environment no longer have to learn a new operating system whenever they get a new computer (now they only have to familiarize themselves with the system-specific extensions).\cite{6}

UNIX does have some strong points: it is fairly portable, flexible (i.e., easy to change, adapt and extend) and contains several powerful utilities. Also, it supports multiple users and multi-tasking. Nevertheless, UNIX is still very much an operating system for computer programmers; in skilled hands, it is very powerful, but to the novice end-user it is sometimes a nightmare (system-specific extensions, inconsistent syntax). Fortunately, on the modern graphics workstations more and more tools become available which make life easier.\cite{6}

\section{UNIX PRODUCT OVERVIEW}
\begin{description}
\item[AIX]\footnote{AIX is copyrighted by IBM.} was the first major second-generation UNIX product to ship after Sun and HP established its UNIX beachheads in the 1980s.\cite{6} AIX 5L is the first version of AIX to support platforms other than IBM's Power-based hardware. This version runs also on systems based on Intel's upcoming 64-bit Itanium (IA-64) processor, putting IBM in a strong position to take an early lead on IA-64 with a production-grade UNIX system available on the day of shipment. It now also has the capability to run Linux programs, which are compiled with their "AIX Toolbox for Linux" package.\cite{7}

\item[HP-UX]\footnote{HP-UX is copyrighted by Hewlett Packard.} -- HP has long been a leading supplier of commercial UNIX solutions, succeeding in part by emphasizing business-oriented factors such as quality, investment protection, consulting abilities, and support. In the 80s, HP was one of the first major vendors to predict the market potential of an improve and robust UNIX operating system. HP seeks to position HP-UX as the preferred enterprise UNIX for next-generation commodity servers based on IA-64. Due in part to its focus on the needs of business users, HP has a history of introducing advanced UNIX functions conservatively in HP-UX, optimizing instead for criteria such as stability and investment protection. But with HP-UX 11i announced in July 2000, HP clearly showed its intensions about pushing HP-UX technically, including a burst of competitive tactical features in the newest release. \cite{8}

\item[SOLARIS 8]\footnote{Solaris is copyrighted by Sun Microsystems.} -- Sun originally made UNIX fashionable. After establishing itself as a leading supplier of high-performance workstations during the 1980s and early 1990s, Sun shifted its strategic goal to becoming a first-tier vendor of enterprise servers.\cite{6}
Sun announced the Solaris 8 release on January 26, 2000. Sun also announced the free access to the Solaris source and end-user binary. The Solaris 8 Operating Environment is available for both the SPARC(tm) and Intel platforms.\cite{9}

\item[TRU64 UNIX]\footnote{Tru64 UNIX is copyrighted by Compaq.} derives from a long and sometimes contentious relationship between UNIX culture and Digital Equipment Corporation, which Compaq purchased in early 1998. Unix was born and bred on Digital hardware in the 1970s. AT\&T and universities mostly drove UNIX development, but Digital always maintained a UNIX group to develop and support drivers as well as to test new designs on UNIX. Digital eventually released ULTRIX, which was UNIX improved by clearer documentation, enhancements specific to Digital hardware, and support services. As the industry began to use UNIX more, Digital along with other vendors, funded efforts such as the X Window System, the Open Software Foundation (OSF) initiative. Tru64 UNIX became the first in the industry to move to 64 bits, and also played an early role in the creation of Linux by donating resources and equipment so that Linux had a native Alpha port by 1994.\cite{6}
The latest Tru64 UNIX v5.1 was released in the fall of 2000. Today, Compaq's Alpha UNIX business is focused on five strategic markets: Business Intelligence, High Performance Technical Computing, Telco and Internet Applications, and Enterprise Applications.\cite{10}

\item[LINUX] -- Linus Torvalds, a Finnish student, first developed Linux\footnote{Linux is a trademark by Linus Torvalds.} in 1991. He developed a minimal Unix kernel and posted a message to an Internet newsgroup, asking if anyone would be interested in helping him to develop it. First tens, then hundreds of individuals began dedicating their free time to developing Linux. Now the number of volunteers has grown into the thousands. Individuals volunteer their time to perform such tasks as kernel debugging, quality control, and writing documentation.

A Linux distribution includes the kernel and user utilities from the GNU system, developed by the Free Software Foundation since 1982, which makes it a complete operating system. This tools have been in development for about a decade before the Linux development started. The utilities/tools allows Linux distributions to have a complete set of tools that can be expected of an UNIX operating system. 

There are various distributions that are free to download from the Internet or that you can buy for a small amount of money.
The result is a commercial operating system that rivals, or even exceeds, commercial releases of Unix available today. Its stability and breadth of features has captured the attention of network administrators who have deployed Linux for file, print and Web servers. 
Linux is one of the most popular UNIX clones among home users, which has contributed to a wider acceptance and knowledge of UNIX among end users, where it's usage is increasing rapidly. Linux is also starting to get its foot into the embedded and corporation market.\cite{24}

The latest stable release branch is version 2.4, which was released on the 4:th of January 2001, which includes many improved enhancements related to the previous versions, the most notable improvement is support for the multitude of printers, digital cameras, scanners, keyboards, mice, network cards, modems, Zip drives and other devices that plug into the universal serial bus (USB) port, SMP, and 3-D accelerated cards. The new kernel is already included in various Linux distributions (SuSe, Linux Mandrake, Red Hat\ldots.\cite{12}
\end{description}

\section{PREVIOUS RESEARCH}
There is no known research of this kind about Linux. The latest kernel version 2.4.x branch, was released on the 4:th of January 2001\cite{12}. If any similar research before has been done, it would be with an older branch of the kernel, which means that the research is not up to date and hence not the same as this report.
There is a research by D.H. Brown Associates, Inc that compares AIX 4.3.3, HP-UX 11i, Solaris 8, Tru64 UNIX 5.1 and UNIXWARE 7.1.1 to each other, Linux is never compared in this studies.\cite{13}

\section{IMPORTANT THEORIES}\label{importanttheories}

\subsection{KERNEL SPECIFIC FEATURES}
\begin{description}
\item[KERNEL THREADS] \label{kernel-threads}-- A thread (as defined by Maurice Bach's ``The Design of the UNIX Operating System'') is an independent flow of control within a process, composed of a context (including register set and a program counter) and a sequence of instructions to execute. The traditional flow of control within a program has been a process with a single context of registers, following a single path through the code. This is referred to as the ``process-base'' or ``single-threaded model''. For an application in a single-threaded model to handle multiple tasks, it would have to break those tasks up into multiple processes, coordinate with signal handlers to provide some concurrency, or simply deal with those tasks serially (one after the other).\cite{32}
In this case it is the kernel itself and not a user-space process that is threaded. This allows for independent tasks in the kernel to be run synchronously instead of being forced to use asynchronous multiplexing between activities.\cite{15}


\item[HOT SWAP] \label{hotswap}-- Allows changing peripheral while the computer is running. This means that there is no need to stop the system while hardware maintenance is done (i.e. changing a faulty hard disk).\cite{22}


\item[SYSV INTERPROCESS COMMUNICATION (IPC)] \label{ipc} is a set of programming interface that allow a programmer to create and manage individual program process that can run concurrently in an operating system. This allows a program to handle many user requests at the same time. Since a single user request may result in multiple processes running in the operating system on the user's behalf, the processes need to communicate with other. The IPC interfaces make this possible. Each IPC method has its own advantages and limitations so it is not unusual for a single program to use all of the IPC methods. IPC methods include: \cite{15}

\begin{itemize}
\item pipe and named pipe 
\item message queueing 
\item semaphore 
\item shared memory 
\item sockets 
\end{itemize}


\item[DYNAMIC PROCESSOR RESILIENCE] \label{dynprocres} -- The operating system isolates faulty CPUs. In the event of a non-fatal error that allows the system to continue processing, the system discontinues the usage of the failed CPU. If the system crashes because of the faulty CPU, the system will restart and isolate the faulty CPU.

\item[DYNAMIC MEMORY RESILIENCE]\label{dynmemres} allow the operating system to isolate faulty memory areas that suffer from single-bit errors, so that the software wont use any of unreliable memory are.\cite{13}

\item[DYNAMIC PAGE SIZING]\label{dynpagesize} -- UNIX operating systems normally uses fixed--size pages to perform I/O operations. But some application may benefit from variable page sizes. For example, programs that uses many small files (such as e-mail servers) may operate more efficiently with small pages, while I/O--intensive programs using large blocks transfers may run better with larger page sizes.\cite{13}

\item[ALTERNATE I/O PATHING]\label{altiopath} allows the operating system to re-route the I/O of devices, such as disk or network adapters, to a backup device, in case of failure.\cite{13}

\item[LIVE UPGRADE]\label{liveupg} allows installation of operating system image to occur simultaneously while the system is being use.

\item[BSD Process Accounting] \label{procacc}allow for a user-space program to record detailed information about any particular process, how much memory and CPU cycles it utilized, the owner, when it began and ended, etc.
\end{description}
\subsection{DISTRIBUTED SYSTEMS}
The normal usage of distributed systems is to archive high-performance systems, load-balancing\footnote{The main system distributes the system load between the different CPUs belonging to the system.} and high-availability\footnote{Systems that no matter what, have to run 24 hour a day and 7 days a week.} systems or any combination of them.\cite{15}

\begin{description}
\item[SYMMETRIC MULTI-PROCESSING MODEL (SMP)] \label{smp} -- In a symmetric multiprocessing model (often abbreviated as SMP) all the processors share identical copy of the same operating system, memory, I/O resources, and the copies of the operating system communicate with one another as needed. 
Since all processors in an SMP server must be able to access all system resources simultaneously, operating systems are deeply involved in the quality of an SMP implementation. Indeed, enabling a kernel to effectively manage large numbers of processors has traditionally presented an extraordinary and tedious challenge for operating-system developers.\cite{15}

There is no generally appropriate way to anticipate how well an application will scale on an SMP system under real--world conditions, but the TCP-C (Transaction Processing Performance Council) benchmark is the most widely accepted method to measure SMP systems. TCP-C are vendor-neutral and subjected to rigorous auditing procedures. The test stresses a number of system components that are frequently exercised in commercial-server applications.\cite{28}

But as you can read from the TCP-C testes, biggest is not always best, because they don't scale well. And all vendors seldom sell machines with their maximum amount of possible processors (look at the vendors offerings).\cite{28} 

\item[NON-UNIFORM MEMORY ACCESS (NUMA)] \label{numa} -- On a multi processor system the processors normally share the same bus to the memory and I/O devices. This means that all CPUs in the system are subjected to the same latency and bandwidth restrictions with respect to accessing the system's memory and I/O channels. Uniform Memory Access (UMA) is a term sometimes used to describe this system architecture. One way to address this bottleneck is to design a system built from SMP blocks (each with a limited number of CPUs, memory arrays and I/O ports) and add a second-level bus or switch to connect the blocks. Non-Uniform Memory Access (NUMA) is the term used to describe this type of system architecture because it results in a bandwidth and latency difference, depending on whether a particular CPU accesses memory and I/O resources locally (in the same building block where the CPU resides) or remotely (in another building block).\cite{14}
\end{description}
%\clearpage
%\newpage
%\begin{figure}[h]
%\begin{center}
%\epsfig{file=numa.ps, height=14cm, width=8cm,angle=270}
%\end{center}
%\caption{Picture of SMP systems in a NUMA enviroment.}
%\label{fig:NUMA}
%\end{figure}
\subsection{DISTRIBUTED FILE SYSTEMS}
Distributed file system stores files on one or more computers called servers, and makes them accessible to other computers called clients, where they appear as normal files. There are several advantages to using file servers: the files are more widely available since many computers can access the servers, and sharing the files from a single location is easier than distributing copies of files to individual clients. Backups and safety of the information are easier to arrange since only the servers need to be backed up. The servers can provide large storage space, which might be costly or impractical to supply to every client. The usefulness of a distributed file system becomes clear when considering a group of employees sharing documents. However, more is possible. For example, sharing application software, and printers are an equally good candidate. In both cases system administration becomes easier\cite{15}.

The protocols that we are going to get in touch with and that makes use of the functionality of an distributed filesystem are: 

\begin{description}
\item[NETWORK FILE SYSTEM] \label{nfs} was developed by Sun Microsystems and introduced to the market 1984. The most common used version of NFS are version 2 and 3.\cite{15}

NFS version 3 contains several features to improve performance, reduce server load, and reduce network traffic. Since NFS version 3 is faster for I/O writes, and uses fewer operations over the network, it will use the network  more efficient. Higher throughput may make the network busier. NFS version 3 maintains the stateless server design and simple crash recovery of version 2 along with its approach to build a distributed file service from cooperating protocols.\cite{19}

\item[CODA FILE SYSTEM] \label{coda} is an experimental file system, with its origin in AFS2\footnote{AFS is marketed, maintained, and extended by Transarc Corporation. AFS is based on a distributed file system originally developed at the Information Technology Center at Carnegie-Mellon University that was called the Andrew File System.}, developed in the group of M. Satyanarayanan at Carnegie Mellon University since 1987.\cite{15}

\item[SERVER MESSAGE BLOCK] \label{smb} (commonly abbreviated as SMB) protocol. This protocol is sometimes also referred to as the Common Internet File System (CIFS), LanManager or NetBIOS protocol. IBM and Microsoft developed it.\cite{15}

\item[APPLETALK]\label{appletalk} is local area network communication protocol originally created for Apple computers. It allows Macintosh computers to communicate, share resources through the network. \cite{30}

\item[NETWARE] \label{netware} made by Novell. Initially very successful in installing its products in large and small office local area networks (LANs), Novell has redesigned (or at least re-featured) NetWare to work successfully as part of larger and heterogeneous networks, including the Internet.\cite{18}
\end{description}

\subsection{FILE SYSTEMS}
Almost every operating system has its own filesystem (the mechanism for storage and access to the data and programs on the storage).\cite{15}

The support of various file systems allows the system to be used for reading/writing to media in an environment with different other operating systems, without the usage of distributed filesystem method. 

Here is a short presentation of some\footnote{There are to many to mention them all in this thesis.} of the file systems \cite{24}:

\begin{description}
\item[VFAT] -- Windows.
\item[EXT]-- Used by older Linux. There is a newer improved version called EXT2.
\item[ISO 9660] -- A filesystem standard for CD's.
\item[NTFS] -- NT.
\item[HPFS] -- OS/2.
\item[UFS] -- used by System V; Coherent; Xenix; BSD; and derivatives like SunOS, FreeBSD, NetBSD, and NeXTStep.
\item[HFS] -- The older Macintosh Hierarchical File System. The newer filesystem is called HFS+.
\item[AFFS] -- Amiga Fast File System.
\item[Memory File System] \label{mfs} -- The file--system resides completely in virtual memory. 
\end{description}
The techniques described below can be stacked in a number of ways to maximize performance and reliability, though at the cost of added complexity. 

\begin{description}
\item[REDUNDANT ARRAY OF INDEPENDENT DISKS (RAID)] \label{raid} is a way of storing the same data in different places (thus, redundantly) on multiple hard disk . By placing data on multiple disks, I/O operations can overlap in a balanced way, improving performance. Since multiple disks increases the mean time between failure (MTBF), storing data redundantly also increases fault-tolerance.\cite{15}

A RAID appears to the operating system to be a single logical hard disk. RAID employs the technique of striping , which involves partitioning each driver's storage space into units ranging from a sector (512 bytes) up to several megabytes. The stripes of all the disks are interleaved and addressed in order.\cite{15}

In a single-user system where large records, such as medical or other scientific images, are stored, the stripes are typically set up to be small (perhaps 512 bytes) so that a single record spans all disks and can be accessed quickly by reading all disks at the same time.\cite{15}

In a multi-user system, better performance requires establishing a stripe wide enough to hold the typical or maximum size record. This allows overlapped disk I/O across drives. There exists two methods on implementing RAID:\cite{15}

\begin{description}
\item[Software RAID] -- Implemented on the kernel. Slow but cheap. This is the one used in this thesis for comparation.
\item[Hardware RAID] -- Implemented in the hardware and use on SAN's and almost every SCSI controller has support for it. In comparation to software RAID, hardware RAID is more expensive but also much faster, efficient and has more functions: remote copy, flashcopy\ldots
\end{description}

There are at least nine types of RAID plus a non-redundant array (RAID-0): \cite{31}
\begin{description}
\item[RAID-0]-- This technique has striping but no redundancy of data. It offers the best performance but no fault-tolerance.
\item[RAID-1]-- This type is also known as disk mirroring and consists of at least two drives that duplicate the storage of data. There is no striping. Read performance is improved since either disk can be read at the same time. Write performance is the same as for single disk storage. RAID-1 provides the best performance and the best fault-tolerance in a multi-user system.
\item[RAID-2]-- This type uses striping across disks with some disks storing error checking and correcting (ECC) information. It has no advantage over RAID-3.\footnote{RAID-2 and -3 requires spindle synchronization in order to achieve good performance.  Very few commodity drives support that today,therefore these RAID levels are almost never used.}
\item[RAID-3]-- This type uses striping and dedicates one drive to storing parity information. The embedded error checking (ECC) information is used to detect errors. Data recovery is accomplished by calculating the exclusive OR (XOR) of the information recorded on the other drives. Since an I/O operation addresses all drives at the same time, RAID-3 cannot overlap I/O. For this reason, RAID-3 is best for single-user systems with long record applications.
\item[RAID-4]-- This type uses large stripes, which means you can read records from any single drive. This allows you to take advantage of overlapped I/O for read operations. Since all write operations have to update the parity drive, no I/O overlapping is possible. RAID-4 offers no advantage over RAID-5.
\item[RAID-5]-- This type includes a rotating parity array, thus addressing the write limitation in RAID-4. Thus, all read and write operations can be overlapped. RAID-5 stores parity information but not redundant data (but parity information can be used to reconstruct data). RAID-5 requires at least three and usually five disks for the array. It's best for multi-user systems in which performance is not critical or which do few write operations.
\end{description}
There are also hybrids available based on RAID 0 or 1 and one other level. Many other combinations are possible\label{change10}. These are more complex than the above mentioned RAID levels. 

RAID 0/1 combines striping with duplication which gives very high transfers combined with fast seeks as well as redundancy. The disadvantage is high disk consumption as well as the above mentioned complexity. 

RAID 1/5 combines the speed and redundancy benefits of RAID5 with the fast seek of RAID1. Redundancy is improved compared to RAID 0/1 but disk consumption is still substantial. Implementing such a system would involve typically more than 6 drives, perhaps even several controllers or SCSI channels.

\item[CACHEFS] \label{cachefs} improves the efficiency of the client--side NFS access by the use of a caching mechanism.\cite{13}

\item[AUTOFS] \label{autofs} allows an operating system to mount remote FS file systems automatically.\cite{13}

\item[JOURNALING FILE SYSTEM] \label{jfs} keeps a journal of the activity on your hard disk, so that if your computer crashed for some reason, it will not need to run the file system check procedure. This means a faster start up of a crashed system. Examples of journaling file system are ReiserFS, XFS, JFS and ext3.\cite{16}

\item[LOGICAL VOLUME MANAGER (LVM)] \label{lvm} provides an abstraction of the physical disks that makes the handling of larger file systems and disk arrays easier to administer. It does this by grouping sets of disks (physical volumes) into a pool (volume group). The volume group can be in turn be carved up into virtual partitions (logical volumes) that behave just like the ordinary disk block devices, except that (unlike disk partitions) they can be dynamically grown, shrunk and moved about without rebooting the system or entering into maintenance/stand-alone mode. A file system (or a swap space, or a raw device) sits on top of a logical volume. LVM utilities usually simplify adding, moving and removing hard drives, by abstracting away the file system mount points (/, /usr, /opt, etc) from the hard drive devices (/dev/hda1, /dev/sdb2, etc.). \cite{17}

\item[ACCESS CONTROL LIST (ACL)] \label{acl} -- Each file and directory has an access list, specifying which users and the type of access they have to it.\cite{15}

\item[HIERARCHICAL STORAGE MANAGEMENT (HSM)] \label{hsm} systems transparently move files between disk and secondary storage (such as tape), thus providing a large "virtual" disk farm. \cite{15}
\end{description}

\subsection{NETWORK}
\begin{description}
\item[IP V4] \label{ipv4}-- Internet Protocol version 4 is the protocol used on the Internet today. Works on the network layer on the OSI\footnote{A network architecture based on a proposal developed by the International Standard Organization (ISO). Its full name is ISO OSI (Open Systems Interconnection) Reference Model } model \cite{18} and is described in RFC\footnote{Technical reports called Request For Comments abbreviated as RFC are stored on-line and can be fetched by anyone interested in them at he following url \url{http://dir.yahoo.com/Computers_and_Internet/Standards/RFCs/}. } 791.

\item[IP V6]\label{ipv6}-- A new version of IP (see previous section), support for a near-infinite number of IP addresses, a number so large that it approaches the number of molecules on the planet, solves a variety of problems (specially with security) with the IP v4 and is more flexible and efficient as well. IP v6 is described in RFC 1550. \cite{18}

\item[VIRTUAL IP ADDRESSES] allows having a backup network card in case of the one in use fails to function. Then the backup car will be assigned the IP address of the original network card, and the user will not notice anything, except for a delay in response.
\item[SIMPLE NETWORK MANAGEMENT PROTOCOL (SNMP)]\label{snmp} -- A protocol that is described in RFC 1448 and is a standard in the UNIX environment.SNMP is not actually a protocol: it's a client server application that runs on the UDP (User Datagram Protocol) service of the TCP/IP protocol suite. It was developed to be an efficient means of sending network management information over UDP, using Ports 161(SNMP) and 162 (SNMPTRAP).\cite{15}

\item[DECNET]\label{decnet} was designed by Digital as a way to interconnect their range of products. The specifications for DECnet Phase IV are freely available. As with TCP/IP there are a number of higher-level protocols layered on top the basic DECnet protocol to provide services to applications.\cite{30}

\item[ATTACHED RESOURCE COMPUTER NETWORK (ARCNET)] \label{arcnet} is a network type created before by Datapoint in the end of 70's which works in a way similar to popular Ethernet networks but which is also different in some very important ways. First of all, you can get ARCnet cards in at least two speeds: 2.5 Mbps (slower than Ethernet) and 100 Mbps (faster than normal Ethernet). In fact, there are others as well, but these are less common. The different hardware types are not compatible, so you cannot wire a 100 Mbps card to a 2.5 Mbps card.\cite{30}

\item[ASYNCHRONOUS TRANSFER MODE (ATM)] \label{atm} is a dedicated-connection switching technology that organizes digital data into 53-byte cell  units and transmits them over a physical medium using digital signal technology. Individually, a cell is processed asynchronously relative to other related cells and is queued before being multiplexed over the transmission path.\cite{18}

Because ATM is designed to be easily implemented by hardware (rather than software), faster processing and switch speeds are possible. The prespecified bit rates are either 155.520 Mbps or 622.080 Mbps. Speeds on ATM networks can reach 10 Gbps. Along with Synchronous Optical Network (SONET) and several other technologies, ATM is a key component of broadband ISDN (BISDN).\cite{18}

\item[FIBER DISTRIBUTED DATA INTERFACE (FDDI)]  \label{fddi} is a standard for data transmission on fiber optic lines in a local area network (LAN) that can extend in range up to 200 km (124 miles). The FDDI protocol is based on the token ring protocol. In addition to being large geographically, an FDDI local area network can support thousands of users. \cite{18}

An FDDI network contains two token rings, one for possible backup in case the primary ring fails. The primary ring offers up to 100 Mbps capacity. If the secondary ring is not needed for backup, it can also carry data, extending capacity to 200 Mbps. The single ring can extend the maximum distance; a dual ring can extend 100 km (62 miles). \cite{18}

FDDI is a product of American National Standards Committee X3-T9 and conforms to the Open Systems Interconnection (OSI ) model of functional layering. It can be used to interconnect LANs using other protocols. FDDI-II is a version of FDDI that adds the capability to add circuit-switched service to the network so that voice signals can also be handled.\cite{18}

\item[ETHERNET] \label{ethernet} is the most widely-installed local area network  (LAN) technology. Specified in a standard, IEEE 802.3, Ethernet was originally developed by Xerox and then developed further by Xerox, DEC, and Intel. An Ethernet LAN typically uses coaxial cable or special grades of twisted pair wires. The most commonly installed Ethernet systems are called 10BASE-T and provide transmission speeds up to 10 Mbps. Devices are connected to the cable and compete for access using a Carrier Sense Multiple Access with Collision Detection (CSMA/CD) protocol. \cite{18}

Fast Ethernet or 100BASE-T provides transmission speeds up to 100 megabits per second and is typically used for LAN backbone systems, supporting workstations with 10BASE-T cards. Gigabit Ethernet provides an even higher level of backbone support at 1000 megabits per second (1 gigabit or 1 billion bits per second). \cite{18}

\item[TOKEN RING] \label{tokenring} network is a local area network (LAN) in which all computers are connected in a ring or star topology and a binary digit - or token-passing scheme is used in order to prevent the collision of data between two computers that want to send messages at the same time. The token ring protocol is the second most widely-used protocol on local area networks after Ethernet . The IBM Token Ring protocol led to a standard version, specified as IEEE 802.5. Both protocols are used and are very similar. The IEEE 802.5 token ring technology provides for data transfer rates of either 4 or 16 megabits per second.

\item[BONDING/TRUNKING] \label{bonding}-- This is called Etherchannel by Cisco, Sun Trunking by Sun, Port Trunking by D-Link, and Bonding in Linux. If you have two Ethernet connections to some other computer, you can make them behave like one to double the speed of the connection.\cite{20}

\item[TRAFFIC CONTROL]\label{tfc} provides administrators more control over who uses their bandwidth. Consider a Service Provider, who wishes to control which visitors to a web site are more important than others (free versus paying customers) and should get a relatively faster and better service. Before traffic control, this would have needed very expensive equipment. 
For example, depending on the set-up, it could be at the IP, TCP, and UDP etc i.e. control could be provided either by application (FTP gets less bandwidth than HTTP) or per IP address or ranges or a mixture of all these parameters.\cite{21}

\item[INTERNET PROTOCOL SECURITY]\label{ipsec} (IPsec) is a developing standard for security at the network or packet processing layer of network communication.A big advantage of IPsec is that security arrangements can be handled without requiring changes to individual user computers.\cite{13}

\item[SIMULTANEOUS IPV4/IPV6 STACKS ON THE SAME NETWORK]\label{ipv4ipv6stack} -- Allows the usage of IPv4 and IPv6 on the same network, allowing both protocols to be used by the server at the same time.\cite{13}

\item[IPV6 GATEWAY FACILITIES]\label{ipv6gateway} allows the routing of packets from IPv4 networks to IPv6 networks, and vice-versa.\cite{15}


\item[RSVP]\label{rsvp}
With RSVP, people who want to receive a particular Internet ``program'' (think of a television program broadcast over the Internet) can reserve bandwidth through the Internet in advance of the program and be able to receive it at a higher data rate and in a more dependable data flow than usual.\cite{15}

\item[INTEGRATED SERVICES]\label{intserv} (INTSERV) defines how applications services describe their bandwidth and latency requirements, how this information can be made available to routers (typically via RSVP), and how the appropriate quality of service can be tested and validated. Unlike DiffServ (see below), IntServ routers must classify packets based on several IP packet header fields and maintain state information for each flow.\cite{13}

\item[DIFFERENTIATED SERVICES] \label{diffserv}(DIFFSERV or DS) is a protocol for specifying and controlling network traffic by class so that certain types of traffic get precedence - for example, voice traffic, which requires a relatively uninterrupted flow of data, might get precedence over other kinds of traffic.\cite{13}

\item[IP MULTIPLEXING / ``ALIASING'']\label{aliasing} allows a single system to be seen as multiple numeric IP addresses, even on the same network-interface. Not to be confused with IP Multicasting.\cite{13}

\item[IP MULTICAST SERVER]\label{ipmulticast} allows simultaneous transmition of IP packets to multiple hosts, which enables ``subscription''messaging for audio, video, software, or data streams.\cite{15}

\item[TCP SELECTIVE ACKNOWLEDGEMENT]\label{sack} (SACK) allows TCP to recover from multiple losses within transmission windows, providing superior performance in lossy networks, and traffic crossing multiple networks.\cite{13}


\item[ATM IP SWITCHING]\label{atmipswitching}
Provide the ability to run IP protocol over the ATM protocol.\cite{15}


\item[MULTILINK PPP]\label{multilinkppp} allows two PPP (Point-to-Point protocol) to be used as one, to deliver double throughput.\cite{13}

\item[TCP LARGE WINDOWS]\label{rfc1323} (RFC 1323) allows the usage of windows that exceed the normal 64 KB limit to improve performance over high-bandwidth networks such as ATM or high-delay networks such as satellite links.\cite{15}

\item[TCP/IP GRATUITOUS ARP]\label{rfc2002} (RFC 2002)
Notifies the members of the network that the server associated with an IP address has changed.\cite{13}

\item[PATH MTU DISCOVERY]\label{rfc1191} (RFC 1191) -- Router doesn't break up packets that are too-large.\cite{13}

\item[PATH MTU DISCOVERY OVER UDP]\label{pathmtudiscoverudp} allows use of Path MTU Discovery (see above) over Universal Data Packet (UDP) connections, rather than the typical Internet Protocol (IP).\cite{13}

\item[OPEN SHORTEST PATH FIRST]\label{rfc1533} (OSPF -- RFC 1533) replaces the Routing Information Protocol with a better and faster routing. \cite{15}

\item[IP MULTIPATH ROUTING] \label{ipmultipathrouting} allows applications to specify multiple paths to a destination on an IP network.\cite{13}
\end{description}

%\section{PERSPECTIVE AND CHOICE OF THEORY}

\section{DELIMINATION OF THE PROBLEM AREA}\label{delimination}
This study will compare the latest Linux kernel to the following operating systems:

\begin{itemize}
\item AIX 5L version 5.1\footnote{AIX is copyrighted by IBM.}
\item True64 UNIX 5.1\footnote{Tru64 UNIX is copyrighted by Compaq.}
\item Solaris 8\footnote{Solaris is copyrighted by Sun Microsystems.}
\item HP-UX 11i\footnote{HP-UX is copyrighted by Hewlett Packard.}
\end{itemize}

The latest release of each operating system will be used in the comparation. Some features that are not stated anywhere that they belong to the kernel are included, since other operating systems have implemented that function in the kernel, or that function is an essential operating system function according to an operating system reference book, like for example the reference book \cite{15} in the bibliography. The main functions function handled by the kernel are:

\begin{itemize}
\item device
\item memory
\item filesystem
\end{itemize}

There are more kernel options in the Linux kernel then those mentioned in this thesis, but due to the lack of missing information if those functions are available or not on the other operating systems and if they are implemented in the kernel, they are not mentioned in this thesis. 

This is also true for some functions that the other operating systems have, but that couldn't be confirmed if they existed in the Linux kernel.

This would lead to a incorrect and unfair analys of the functions in the kernels.
\chapter{METHOD}
\section{CHOICE OF METHOD}
The information was empirical accumulate and kernel specific functions where sorted out from the rest of other functions. The kernel features where explained, with the help of a descriptive method and then compared to the Linux kernel using a comparative method.

\section{DESCRIPTION OF METHOD}
This study compares five leading UNIX operating systems - IBM AIX 5L v5.1, Hewlett-Packard HP-UX 11i, Sun Solaris 8, Compaq Tru64 UNIX 5.1, and Linux 2.4.5 based on their functional capabilities implemented in the kernel as of May 27, 2001.

The information for this thesis was gathered from various sources. The main sources are books, articles, technical specifications, press releases, and technical representatives from the corresponding company (in the Linux case those representatives are available only through a mailing list called ``Linux kernel development list'').

A comparative method compares two or more things to each other and draws conclusions based on the result of the comparison. 
The following steps where taken in the creation of this thesis:

\begin{enumerate}
\item Search for technical papers on the Internet at various supplier's homepage, and by asking technical personal.
\item Sort out features that are not in the kernel. 
\item Make a short description of each feature (See section \ref{importanttheories}).
\item Create tables with all kernel features and operating systems (see section \ref{resulttable}).
\item Create a summary of features that Linux is lacking by looking at the tables.
\item Write down the result (see section \ref{resultanalys}).
\end{enumerate}

To arrive at a complete profile of an operating-system product, users should consider a number of factors in addition to those addressed by this thesis. They might be:
\begin{description}
\item[Application portfolio] An operating system is only useful as the amount of applications available for it. The suitability of an application portfolio for a given user depends on that user's specific requirements.
\item[Quality] As the operating system is a technical product, it may be shipped with a number of defects, which are independent of its relative technical richness. 
\item[Vendor support] As a high-end system has many options/functions, operating systems introduce a high burden on request for support. The ability of vendors to meet those support requirements may vary.
\item[Vendor experience] Vendors offering multiple operating systems may have different levels of experience within their respective product lines, depending on when they entered the market and with what level of commitment.
\item[Skills availability] This factors applies both to the skills available within a user's organization and in the market as a whole.
\item[Hardware/system capabilities] Since an operating system will only perform as well as its underlying hardware, users must remain aware of factors such as processor performance and the SMP ranges available on host platforms.
\item[Cost] This factor depends not only on operating-system software prices and associated client license fees, but also on any necessary add-on packages, the price and price/performance of underlying hardware, and a wide variety of hard-to-measure "soft costs" related to ongoing management and training.
\end{description}
\chapter{REALIZATION}\label{realization}
Most of the work has been done by reading various different documentation, asking technical support, and identifying if the mentioned functions were implemented in the kernel. The functions was then inserted into a table to finally get to a result.
\section{IMPLEMENTATION}\label{implementation}
The implementation of the missing functions are beyond the scope of this thesis. They are left to the developers of the Linux kernel.

\chapter{RESULT}

\section{TABLES}\label{resulttable}
Cells with
\begin{description}
\item[empty] = The author could not verify if the operating system supports that function. The feature will be considered as missing due to the fact that looking for information about something that does not exist is almost impossible to find.
\item[\textbullet] = Operating system does support that function. See reference inside the brackets for more information.
\item[-] = Operating system does not support the function or it is offer as an external program. See reference inside the brackets for more information
\end{description}


\subsection{TABLE WITH KERNEL SPECIFIC FUNCTIONS}
\begin{tabular}{|p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} | } \hline
\textbf{Feature}	&\textbf{Linux}	&\textbf{Solaris}	&\textbf{AIX}	&\textbf{Tru64 UNIX	}&\textbf{HP-UX}\\ \hline
Supported Architectures & i386, alpha, cris, sparc, sparc64, m68k, ppc, arm, sh4, s390, mips, HP parisc, ia64, DEC VAX and AMD x86--64\cite{24} & sparc and i386 \cite{9} & ppc and ia64 \cite{7} & alpha \cite{10} & parisc and ia64 \cite{33}  \\ \hline
Maximum physical Memory tested and supported in \textbf{Gigabytes} & 64\cite{41} & 128 \cite{13} &96 \cite{40}& 256 \cite{13} & 256 \cite{13} \\ \hline
Maximum supported and tested size of file system in \textbf{Terabytes}& 4\cite{38}& 1 \cite{13}&1\cite{7} & 16 \cite{10}& 2 \cite{13}  \\ \hline

\end{tabular}


\begin{tabular}{|p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} | } \hline
\textbf{Feature}	&\textbf{Linux}	& \textbf{Solaris}	& \textbf{AIX}	&\textbf{Tru64 UNIX}&\textbf{HP-UX}\\ \hline
SMP \{\ref{smp}\} &64 \cite{37} & 128 \cite{9} &24 \cite{40} & 32 \cite{26} & 64 \cite{50} \\ \hline
NUMA \{\ref{numa}\} &\textbullet \cite{56}&\textbullet \cite{43} &\textbullet \cite{45} &\textbullet \cite{44} &\textbullet \cite{100} \\ \hline
Cryptographic hardware support &\textbullet \cite{57} &\textbullet \cite{13}&\textbullet \cite{13}&\textbullet \cite{13} &\textbullet \cite{13}  \\ \hline
Kernel threads \{\ref{kernel-threads}\} &\textbullet \cite{24} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet\cite{10}&-- \cite{13} \\ \hline
Hot--swap \{\ref{hotswap}\} & \textbullet \cite{31} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{33} \\ \hline
SysV IPC \{\ref{ipc}\}  &\textbullet \cite{52}&\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{10} &\textbullet \cite{13} \\ \hline
Dynamic Processor Resilience \{\ref{dynprocres}\} &--\ref{a1} &\textbullet \cite{13}&\textbullet \cite{13}&\textbullet \cite{13}&\textbullet \cite{13}\\ \hline
Dynamic Memory Resilience \{\ref{dynmemres}\}&--\cite{11}&\textbullet \cite{13}&\textbullet \cite{13}&\textbullet \cite{13}&\textbullet \cite{13}\\ \hline
Dynamic Page Sizing \{\ref{dynpagesize}\}&--\ref{a1} &-- \cite{13} &-- \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
Live Upgrade \{\ref{liveupg}\}&--\ref{a1}&\textbullet \cite{13}&\textbullet \cite{13}& &\textbullet \cite{60} \\ \hline
Alternative I/O Pathing \{\ref{altiopath}\}& &\textbullet \cite{13} &-- \cite{13}&\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
BSD Process Accounting \label{change5} \ref{procacc}&\textbullet \cite{54} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13} \\ \hline
\end{tabular}


\subsection{TABLE WITH FILE SYSTEM SPECIFIC FUNCTIONS}
\begin{tabular}{|p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} | } \hline
\textbf{Feature}	&\textbf{Linux}	&\textbf{Solaris}	&\textbf{AIX}	&\textbf{Tru64 UNIX}&\textbf{HP-UX}\\ \hline
Maximum tested and supported file size in \textbf{Terabytes} &2 GB \cite{38}  & 1 \cite{13} &64 \cite{13}&10 \cite{26}& 2 \cite{13} \\ \hline
ACL \{\ref{acl}\} &--\cite{38} &\textbullet \cite{42} &\textbullet \cite{68} &\textbullet \cite{10}&\textbullet \cite{51}\label{change1} \\ \hline
RAID \{\ref{raid}\} support &\textbullet \cite{31} & &\textbullet \cite{7} &\textbullet \cite{10}&\textbullet \cite{33}\\ \hline
Journaling File System \{\ref{jfs}\} & \textbullet \cite{54} &\textbullet \cite{13} & \textbullet \cite{7} &\textbullet \cite{10}& \textbullet \cite{3}\\ \hline
Logical Volume Manager \{\ref{lvm}\} &\textbullet \cite{59}&\textbullet \cite{13} &\textbullet \cite{7}&\textbullet \cite{10}& \textbullet \cite{113} \label{change4} \\ \hline
HSM \{\ref{hsm}\} &-- \ref{a1} & &-- \cite{7} & &\textbullet \cite{61}\\ \hline
Memory File System \{\ref{mfs}\} &\textbullet \cite{55}  &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{101}& \textbullet \cite{13}\\ \hline
CacheFS \{\ref{cachefs}\} &-- \cite{23} &\textbullet \cite{13} &\textbullet \cite{13}&-- \cite{13}& \textbullet \cite{13}\\ \hline
AutoFS \{\ref{autofs}\} &\textbullet \cite{54} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13}& \textbullet \cite{13}\\ \hline
\end{tabular}

\begin{tabular}{|p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} | } \hline
\textbf{Feature}	&\textbf{Linux}	&\textbf{Solaris}	&\textbf{AIX}	&\textbf{Tru64 UNIX}&\textbf{HP-UX}\\ \hline
Supported file systems & ISO9660, Rockridge, Ext2, VFAT, FATCVF, UFS, FFS, HPFS, NTFS, AFFS,ADFS, BFS, CRAMFS, PROC, ROMFS, SYSV--FS, UDF, UMDOS \cite{24} &DFS \cite{13} UDF, UFS \cite{25} &DFS \cite{13} &CFS \cite{13}, XCDR, DVDFS,\cite{10}, FFM , DFS, EFS, FDFS, PROCFS, SYSV, UFS, MFS, ISO9660 \cite{101}&UFS \cite{33} CIFS \cite{29}, CDFS \cite{106}, HFS \cite{107}, LOFS \cite{108}, DOS \cite{109}, ISO9660, Rockridge, High Sierra, \cite{110} CDFS \cite{112} \label{change2}\\ \hline
\end{tabular}

\subsection{TABLE WITH NETWORK SPECIFIC FUNCTIONS}
\begin{tabular}{|p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} | } \hline
\textbf{Feature}	&\textbf{Linux}	&\textbf{Solaris}	&\textbf{AIX}	&\textbf{Tru64 UNIX}&\textbf{HP-UX}  \\ \hline
Support for IP v4 and v6 \ref{ipv6}\} &\textbullet \cite{39} &\textbullet \cite{9} &\textbullet \cite{40} &\textbullet \cite{103} &\textbullet \cite{62} \\ \hline
Traffic Control \{\ref{tfc}\} &\textbullet \cite{39} & \textbullet \cite{13} &\textbullet \cite{40} &\textbullet \cite{13} &\textbullet \cite{29} \\ \hline
Bonding \{\ref{bonding}\} & \textbullet \cite{21} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
\mbox{NFS v2} \{\ref{nfs}\} &\textbullet \cite{39} &\textbullet \cite{9} &\textbullet \cite{40}&\textbullet \cite{101} &\textbullet \cite{111} \label{change3} \\ \hline
\mbox{NFS v3} \{\ref{nfs}\} &\textbullet \cite{39} &\textbullet \cite{101} &\textbullet \cite{40}&\textbullet \cite{101} &\textbullet \cite{111} \\ \hline
SNMP \{\ref{snmp}\} &\textbullet &\textbullet \cite{9} &\textbullet \cite{40} & &\textbullet \cite{64} \\ \hline
SMB \{\ref{smb}\} &\textbullet \cite{39} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13} \\ \hline
AppleTalk \{\ref{appletalk}\} &\textbullet \cite{39} &-- \cite{9} &-- \cite{40} & &-- \cite{63} \\ \hline
NetWare \{\ref{netware}\} &\textbullet \cite{39} &\textbullet \cite{13}&-- \cite{40} &\textbullet \cite{13} &-- \cite{67} \\ \hline
DECnet \{\ref{decnet}\} &\textbullet \cite{39} &-- \cite{9} &-- \cite{40} &\textbullet \cite{104} &\textbullet \cite{65} \\ \hline
ARCnet \{\ref{arcnet}\} &\textbullet \cite{39}& &-- \cite{40}& &\textbullet \cite{66}\\ \hline
ATM \{\ref{atm}\} &\textbullet \cite{39} &\textbullet \cite{13} &\textbullet \cite{40} &\textbullet \cite{13} &\textbullet \cite{46} \\ \hline
FDDI  \{\ref{fddi}\} &\textbullet \cite{39} & &\textbullet \cite{40} & &\textbullet \cite{46} \\ \hline
Ethernet  \{\ref{ethernet}\} &\textbullet \cite{39} &\textbullet \cite{13} &\textbullet \cite{40} &\textbullet \cite{13} &\textbullet \cite{46} \\ \hline
Token Ring  \{\ref{tokenring}\} &\textbullet \cite{39} &\textbullet \cite{25}&\textbullet \cite{40} &\textbullet \cite{105} &\textbullet \cite{46} \\ \hline
IPSEc \{\ref{ipsec}\}  &-- \cite{48}&\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13} \\ \hline
Simultaneous IPv4/IPv6 stacks on the same network \{\ref{ipv4ipv6stack}\}  &\textbullet \cite{39} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
IPv6 Gateway facilities \{\ref{ipv6gateway}\}  &\textbullet \cite{39} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
RSVP \{\ref{rsvp}\}  &\textbullet \cite{54} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
Integrated Services(IntServ) \{\ref{intserv}\}  &\textbullet \cite{21} &-- \cite{13} &\textbullet \cite{13} &-- \cite{13}&-- \cite{13} \\ \hline
\end{tabular}

\begin{tabular}{|p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} |p{0.9in} | } \hline
\textbf{Feature}	&\textbf{Linux}	&\textbf{Solaris}	&\textbf{AIX}	&\textbf{Tru64 UNIX}&\textbf{HP-UX}  \\ \hline
Differentiated Services \{\ref{diffserv}\}  & \textbullet \cite{21}&-- \cite{13} &\textbullet \cite{13} &-- \cite{13}&\textbullet \cite{13} \\ \hline
IP Multiplexing / ``aliasing'' \{\ref{aliasing}\}  &\textbullet \cite{39}  &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
\mbox{IP Multicast} Server \{\ref{ipmulticast}\}  &\textbullet \cite{39} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
TCP selective acknowledgement (SACK) \{\ref{sack}\}  &\textbullet \ref{a1} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
ATM IP switching \{\ref{atmipswitching}\}  & &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
Multilink PPP \{\ref{multilinkppp}\}  &\textbullet \ref{a1} &\textbullet \cite{13} &\textbullet \cite{13} &-- \cite{13}&-- \cite{13} \\ \hline
TCP Large Windows (RFC 1323) \{\ref{rfc1323}\}  &\textbullet \cite{53} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
TCP/IP Gratuitous ARP (RFC 2002) \{\ref{rfc2002}\}  & &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
\mbox{Path MTU} Discovery (RFC 1191) \{\ref{rfc1191}\}  &\textbullet \ref{a1} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
\mbox{Path MTU} Discovery over UDP \{\ref{pathmtudiscoverudp}\}  & &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
\mbox{Open Shortest} \mbox{Path First} (\mbox{OSPF--RFC} 1533) \{\ref{rfc1533}\}  &\textbullet \cite{21} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
\mbox{IP Multipath} Routing \{\ref{ipmultipathrouting}\}  &\textbullet \ref{a1} &\textbullet \cite{13} &\textbullet \cite{13} &\textbullet \cite{13}&\textbullet \cite{13} \\ \hline
\end{tabular}

\newpage
\section{RESULT ANALYSIS}\label{resultanalys}
Linux has support for a more kinds of file systems and architectures than any other operating system in this thesis. But it lacks high-availability and security features (like Live upgrade, dynamic memory/processor resilience, HSM, ACL, IPSec...).

\chapter{DISCUSSION}
The reader maybe is asking why this thesis just looks at the features of the kernel? The explanation is that one can tell much about an operating system by just looking at the kernel, for example how well developed it is.

There was some difficulties in finding information from the suppliers documentation that confirmed which functions where implemented in the kernel. To overcome this difficulty, some technicians from the various companies were asked. Another difficult task was finding information about features that was not implemented in the operating system. Partial because vendors don't announce the features their operating system is missing in comparation to other.

Most of the missing features in Linux do already exist for Linux as patches, but they are not yet implemented in the official kernel. For example IPSec (see reference \cite{48}), Dynamic Memory Resilience (see appendix \ref{a8}), live update (see appendix \ref{a2})...


Now that Linux is getting a greater deal of press, as is the interest for it to in the enterprise market. Here are some quotes from different magazines. The September 1998 Software Magazine cover story\cite{36} reveals just how far Linux has managed to infiltrate corporate America and how it is not about to go away: 
\begin{quote}
``Tim Payne, director of database marketing at Oracle, says many of his company's corporate customers have made large investments in Linux. When Oracle announced in July that it would be offering 24x7 support for Oracle8 on Linux, he says 300 customers called the next day asking about availability. 'It's reliable, it's proven, it runs on commodity Intel boxes, and it's a really low-cost alternative to NT,' says Payne. 'The fact that you are going to be able to get enterprise quality support from Oracle to deploy on the Linux platform will help customers adopt Linux.''
\end{quote}


Nicholas Petreley, editor-in-chief of NC World and columnist for InfoWorld and NT World Japan provides an explanation for the rise of Linux and FreeBSD in IT departments \cite{35}: 

\begin{quote}
``Yesterday's college students learned their UNIX expertise on Linux and FreeBSD. Today they're working in IT departments, and many of them are openly hostile to both Microsoft and Windows NT. As a result, Linux, BSD, Solaris, and other forms of UNIX are finding their way into IT departments, both overtly and on the sly.''
\end{quote}

\begin{quote}
``For example, are you sure that's an NT server you're connecting to at work? IS employees in many corporations have secretly installed UNIX servers that provide native NT services. Why take such a risk? Linux and FreeBSD are free, as is SAMBA, the software that provides NT services. So the IS department saves money. And managers are unlikely to find out UNIX is behind the scenes because fewer people will complain about server downtime.''
\end{quote}

\begin{quote}
``Fewer people will complain because the servers are more stable than Windows NT. Linux, FreeBSD, and BSDI UNIX outperform Windows NT by a wide margin on limited hardware, and under some circumstances can perform as well or better than NT on the best hardware. Once behind in scalability features, UNIX on Intel is catching up and may soon surpass NT in the number of processors it can use, and how it uses them.''
\end{quote}

Now that Linux has infiltrated the enterprise market, and the demand for the usage of Linux on enterprise market is increasing, the development of features to Linux that the enterprises are looking for on more expensive alternatives will increase. Specially with the increase of support Linux is getting from the main players on the enterprise market like Compaq, IBM, Hewlett--Packard...

\section{METHOD EVALUATION}
The chosen methods where the most appropriate for each task of the report.

\section{RECEIVED RESULTS VERSUS EXPECTED RESULT}
The received result shows that on contrary to the expected result that Linux is not yet ready to take over the enterprise market, due to the lack of features that the enterprise market expect to see on a high--end system.

\chapter{CONCLUSIONS}\label{conclusions}
For Linux to get into the enterprise server market it has to include support for more memory, high-availability and security features, to make it more competitive against the other operating systems. Linux lacks the following features:
\begin{itemize}
\item Dynamic processor/memory resilience.
\item Dynamic page sizing.
\item Live upgrade.
\item ACL
\item Hierarchical storage management.
\item CacheFS
\item IPSec
\end{itemize}
It could not be verified in this thesis if Linux has more features than any other of the compared operating systems due to the lack of information.
\section{PROPOSAL FOR FURTHER RESEARCH}

\begin{itemize}
\item Available programs..
\item Make a survey on companies asking them what hardware support or features they want to see implemented in Linux.
\item Available support.
\item Cost versus performance.
\end{itemize}


\chapter{Bibliography}
%---------------------------------------------%
%                                             %
%                  References                 %
%                                             %
%---------------------------------------------%

\clearpage \addcontentsline{toc}{section}{References}

\begin{thebibliography}{99}\label{biblio}


%\bibliographystyle{unsrt}
%\bibliography{mybib} \label{biblio}
%\setcounter{page}{0}
\pagenumbering{Roman}
\thispagestyle{fancy}

\subsubsection*{Books}
\bibitem{1} Matt Welsh and Phil Hughes and David Bandel and Boris Beletsky and Sean Dreilinger and Robert Kiesling and Evan Liebovitch and Henry Pierce, \textit{Linux installation and getting started}, Specialized Systems Consultants Inc, Seattle, \url{http://www.ibiblio.org/pub/Linux/docs/LDP/install-guide/!INDEX.html} (available 2001--05--19), 1998.

\bibitem{6} VI Peter H. Salus, \textit{A Quarter Century of UNIX}, Addison-Wesley Publishing Company Inc, ISBN: 0-201-54777-5, 1994.

\bibitem{15} Peter Galvin and Avi Silberschatz, \textit{Operating system concepts, 5th edition}, ISBN 0-471-36414-2, John Wiley and Sons Inc., 605 Third Avenue, New York, 1999.

\bibitem{18} Andrew S. Tanebaum, \textit{Computer Networks, 3rd edition}, ISBN 0-13-394248-1, Prentice-Hall International, Inc., Upper Saddle River, New Jersey 07458, 1996.

\bibitem{30} Valentino Berti, \textit{Datakommunikation}, Liber AB, 113 98 Stockholm, ISBN 91-47-03564-1, 1999.


\subsubsection*{White Papers}
\bibitem{21} Bert Hubert and Gregory Maxwell and Remco van Mook and Martijn van Oosterhout and Paul B Schroeder and Jasper Spaans, \textit{Linux 2.4 Advanced Routing HOWTO}, \url{http://www.ds9a.nl/2.4Networking/HOWTO//cvs/2.4routing/output/2.4routing.html} (available 2001--05--23), 2001.


\bibitem{7} \textit{AIX 5L Technical Preview, AIX Product Marketing}, IBM corporation, \url{http://www-1.ibm.com/servers/aix/pdf/AIX50dr3ms.pdf} (available on 17:th of May 2001), 2000.

\bibitem{34} \textit{AIX-- Announcement Supplemental Information}, IBM, 2001--04--17.

\bibitem{8} \textit{HP Renews Focus on UNIX for Web Application Infrastructures}, D.H. Brown Associates Inc. 2000.

\bibitem{29} \textit{HP 9000 -- A-Class Servers: A500/A400 System Architecture and Design Guide}, Hewlett-Packard, 2000.

\bibitem{60} \textit{Updating to HP-UX 11i}, Hewlett--Packard, \url{http://docs.hp.com/cgi-bin/onlinedocs.py?mpn=B2355-90703&service=hpux&path=../B2355-90703/00/00/19&title=HP-UX%2011i%20Installation%20and%20Update%20Guide}

\bibitem{33} \textit{HP--UX reference documents}, Hewlett--Packard,\url{http://devresource.hp.com/STK/toc_ref_details.html} (available 2001-05-24), 2001.

\bibitem{46} \textit{HP-UX 11i Operating Environments}, Hewlett--Packard, \url{http://docs.hp.com/hpux/onlinedocs/os/11i/oe_presentation_Dec1_external.pdf} (available 2001--05--25), 2000.

\bibitem{50} \textit{hp 9000 superdome specifications}, Hewlett--Packard, \url{http://www.hp.com/products1/unixservers/highend/superdome/specifications.html} (available 2001--05--27).

\bibitem{61} \textit{Onlinejsf product details and specifications}, Hewlett--Packard,\url{http://www.software.hp.com/cgi-bin/swdepot_parser.cgi/cgi/displayProductInfo.pl?productNumber=B3929CA} (available 2001--05--27).

\bibitem{62} \textit{IPv6 early release overview}, Hewlett--Packard,\url{http://www.software.hp.com/cgi-bin/swdepot_parser.cgi/cgi/displayProductInfo.pl?productNumber=T1305AA} (available 2001--05--27).

\bibitem{100} \textit{HP MPI User's guide -- Message latency and bandwidth}, Hewlett--Packard, \url{http://docs.hp.com/cgi-bin/fsearch/framedisplay?top=/hpux/onlinedocs/B6060-96002/B6060-96002_top.html&con=/hpux/onlinedocs/B6060-96002/00/00/25-con.html&toc=/hpux/onlinedocs/B6060-96002/00/00/25-toc.html&searchterms=numa&queryid=20010528-032930} {available 2001--05--28}.
 
\bibitem{9}  \textit{Solaris 8 press release}, Sun Microsystems Inc, \url{http://www.sun.com/smi/Press/sunflash/2000-01/sunflash.20000126.2.html} (avaible 2001-05-19), 2001.

\bibitem{20} \textit{Sun trunking overview}, Sun Micro--systems, \url{http://www.sun.com/products-n-solutions/hw/networking/connectivity/suntrunking/trunking.html}.

\bibitem{42} \textit{Trusted Solaris 8 Operating Environment -- A Technical Overview}, White Paper, Sun Microsystems Inc, \url{http://www.sun.com/software/white-papers/wp-ts8/} (available 2001--05--25).

\bibitem{43} \textit{Sun Enterprise 10000 Key Technologies}, Sun Microsystems Inc, \url{http://www.sun.com/servers/highend/10000/tech.html} (available (2001--05--25).

\bibitem{25} \textit{What's new in the Solaris 8 Operating Environment}, Sun Microsystems, January 2000.

\bibitem{19} \textit{Tru64 UNIX Operating System Version 5.1 Product Description}, Internal reference: SPD 70.70.03, Compaq Computer Corporation, 2000.

\bibitem{10}  \textit{Tru64 UNIX Product overview}, Compaq, \url{http://www.tru64unix.compaq.com/unix/index.html} (available online on 2001-05-18), 2001.

\bibitem{26} \textit{ True64 UNIX on AlphaServer Product Overview}, Compaq Computer Corporation, \url{http://www.tru64unix.compaq.com/unix/v5.htm} (available 2001-05-19), 2001.

\bibitem{13} \textit{2001 UNIX function review}, D.H Brown Associates, Inc, 2001.

\bibitem{14} R. P. LaRowe Jr. and J. T. Wilkes and C. S. Ellis, \textit{Exploiting operating system support for dynamic page placement on a NUMA shared memory multiprocessor}, Proceedings of the 3rd ACM SIGPLAN Symposium on Principles \& Practice of Parallel Programming, SIGPLAN Notices volume 26 number 7 page 122-132, \url{http://citeseer.nj.nec.com/larowe91exploiting.html}, April 1991

\bibitem{16} Adam Sweeney and Doug Doucette and Wei Hu and Curtis Anderson and Mike Nishimoto and Geoff Peck, \textit{Scalability in the XFS File System}, Silicon Graphics, \url{http://linux-xfs.sgi.com/projects/xfs/papers/xfs_usenix/index.html}, 1996

\bibitem{17} Heinz Mauelshagen, \textit{Mauelshagen's LVM (Logical Volume Manager) howto}, Linux source documentation, 1999

\bibitem{22} Johannes Erdfelt, \textit{Hot-Swap white paper}, \url{http://johannes.erdfelt.com/hotswap.txt}, 2000.

\bibitem{31} Jakob Østergaard, \textit{The Software--RAID HOWTO}, \url{http://www.linuxdoc.org/HOWTO/Software-RAID-HOWTO.html} (available 2001-05-22), 2000.

\bibitem{32} Scott Norton and Mark DiPasquale, \textit{Thread Time - The Multithreaded Programming Guide}, Prentice Hall, ISBN 0-13-190067-6, 1996.

\bibitem{37} David Mentré,\textit{Linux SMP HOWTO}, Linux documentation project,\url{http://www.linuxdoc.org/HOWTO/SMP-HOWTO.html}, October 2000.

\bibitem{38} Rémy Card and Theodore Ts'o and Stephen Tweedie,\textit{Design and implementation of Second Extended Filesystem}, Proceedings of the Firts Dutch International Symposium, ISBN 90-367-0385-9, \url{http://e2fsprogs.sourceforge.net/ext2intro.html} (available 2001--05--24).

\bibitem{39} Joshua Drake, \textit{Linux Networking HOWTO}, \url{http://www.linuxports.com/howto/networking/} (available 2001-05-24), 2000.
\bibitem{11} Harald Milz, \textit{Linux High Availability HOWTO}, \url{http://www.ibiblio.org/pub/Linux/ALPHA/linux-ha/High-Availability-HOWTO.html} (available 2001--05--25), 1998--12--22.

\bibitem{23} Stein Gjoen, \textit{Multi Disk System Tuning HOWTO},\url{http://www.linuxdoc.org/HOWTO/Multi-Disk-HOWTO.html} (available 2001-05--26), 2000-07--24.

\bibitem{44} \textit{Visual Threads Documentation}, Compaq Inc, \url{http://www.compaq.com/products/software/visualthreads/documentation.html} (available 2001--05--25).


\subsubsection*{Source documentation and man pages}
\bibitem{101} See Solaris 8 man page for \verb|mount_nfs| (1M).
\bibitem{102} See Tru64 UNIX man page for \verb|mount| (8).
\bibitem{103} See Tru64 UNIX man page for \verb|inet| (7).
\bibitem{104} See Tru64 UNIX man pages for \verb|X| (7).
\bibitem{105} See Tru64 UNIX man pages for \verb|network_manual_setup| (7).
\bibitem{51} See HP-UX 11i man pages for \verb|acl| (2).
\bibitem{64} See HP-UX 11i man pages for \verb|snmpd| (1M).
\bibitem{65} See HP-UX 11i man pages for \verb|X| (7).
\bibitem{66} See HP-UX 11i man pages for \verb|bootpd|.
\bibitem{106} See HP-UX 11i man pages for \verb|mount_cdfs| (1M).
\bibitem{111} See HP-UX 11i man pages for \verb|mount_nfs| (1M).
\bibitem{107} See HP-UX 11i man pages for \verb|mount_hfs| (1M).
\bibitem{108} See HP-UX 11i man pages for \verb|mount_lofs| (1M).
\bibitem{113} See HP-UX 11i man pages for \verb|mount_lvm| (1M).
\bibitem{112} See HP-UX 11i man pages for \verb|mount_cdfs| (1M).
\bibitem{109} See HP-UX 11i man pages for \verb|dosif| (4).
\bibitem{110} See HP-UX 11i man pages for \verb|pfs| (4).
\bibitem{52} See Linux man pages for \verb|ipc| (5).
\bibitem{53} See kernel source document \verb|linux/Documentation/network/ip-sysctl.txt|.
\bibitem{54} See kernel source document \verb|linux/Documentation/Configure.help|.
\bibitem{55} See kernel source document \verb|linux/Documentation/ramdisk.txt|.
\bibitem{56} See kernel source document \verb|linux/Documentation/vm/numa.html|.
\bibitem{57} See kernel source document \verb|linux/Documentation/devices.txt|.
\bibitem{59} See kernel source document \verb|linux/Documentation/LVM-HOWTO.htm|.

\urlstyle{rm}
\def\UrlFont{\bfseries}
\subsubsection*{Articles from the press (bold urls now!)}
\bibitem{2} Richard Shim, \textit{Linux makes a move into handhelds}, C--Net, \url{http://news.cnet.com/news/0-1006-200-5827919.html} (available 2001--05--19), 2001.

\bibitem{4} Mats Lövgren, \textit{Linux sparkar ut NT och UNIX från bank}, Computer Sweden, \url{http://nyheter.idg.se/display.asp?ID=010504-CS31}, 2001.

\bibitem{5} Jon Tillman, \textit{The New Linux Myth Dispeller}, \url{http://www.eruditum.org/linux/myths/myth-dispeller.html}, 2000.

\bibitem{12} Mary Jo Foley, \textit{At long last Linux 2.4 has arrived}, ZDNet news, \url{http://www.zdnet.com/zdnn/stories/news/0,4586,2671106,00.html} (available 2001-05-19), January 5 2001.

\bibitem{24} Robert Kiesling, \textit{Linux FAQ, Revision 1.4}, \url{http://www.linuxdoc.org/FAQ/Linux-FAQ/index.html} (available 2001--05--21), 2001.

\bibitem{27} Mary Jo Foley, \textit{Linus: Partying hard over Linux 2.4}, ZDNet news, \url{http://www.zdnet.com/zdnn/stories/news/0,4586,2671714,00.html} (available 2001-05-19), January 5 2001.

\bibitem{35} Nicholas Petreley,\textit{The new UNIX alters NT's orbit: The re-emergence of UNIX threatens to modify the future direction of NT}, NC World, April 1998. 

\bibitem{36} Ann Harrison,\textit{In LINUX We\ldots}, Software Magazine, Cover Story, September 1998. 

\bibitem{41} Henry Baltazar. \textit{Operating System - Linux 2.4 Kernel}, ZDNet UK, \url{http://www.zdnet.co.uk/reviews/rstories/0,3040,e7108096,00.html}, 27 January 2001.

\bibitem{45} Jaikumar Vijayan, \textit{High-end Systems Vendors offer performance programs}, ComputerWorld, 1999--22--11.

\bibitem{58} Press release, \textit{Veritas delivers hsm version 3.1 to bring improved data availability to enterprise applications}, \url{http://www.veritas.com/us/aboutus/pressroom/1998/98-08-18-0.html} (available 2001--05-21), 1998.

\subsubsection{Technical persons/resources}
\bibitem{40} Jan Strage, IT Architect, IBM Sweden.
\bibitem{49} \textit{Linux kernel development list}, \url{http://vger.kernel.org} or \url{http://www.tux.org/lkml/#s3-4} (available 2001--05--27).


\subsubsection{Websites}   
\bibitem{68} Heimo Haub, \textit{Aspects of Access Management in Heterogeneous Distributed Object Systems},Graz University of Technology, \url{http://www.dinopolis.org/documentation/misc/theses/hhaub/node60.html}

\bibitem{3} Harald Alvestrand, \textit{The Linux Counter Project}, The Linux Counter Project, \url{http://counter.li.org/} (available 2001--05--21), 2001.

\bibitem{28} Transaction Processing Performance Council, \url{http://www.tpc.org} (available 2001-05-21).
 

\bibitem{48} FreeSwan homepage,\url{http://www.freeswan.org/} (available 2001--05--25).
\bibitem{63} Columbia Appletalk, \url{http://www.cs.mu.oz.au/appletalk/cap.html} (available 2001--05--27).

\bibitem{67} Novell, \url{http://www.novell.com/} (available 2001--05--27).
\end{thebibliography}


\appendix
\chapter{MESSAGE REPLIES FROM THE KERNEL DEVELOPMEN LIST} \label{kernlist}
Here are the letter I've got from the developers of the kernel, that where posted on the ``Linux kernel development list''. Please see reference \cite{49} for more information.

\section{Jeff Garzik 26 May 2001 22:27:09}\label{a1}

\begin{verbatim}Date: Sat, 26 May 2001 22:27:09 -0400
        From: Jeff Garzik <jgarzik@mandrakesoft.com>
Organization:MandrakeSoft
          To: cesar.da.silva@cyberdude.com
          Cc:linux-kernel@vger.kernel.org
  Subject:Re: Please help me fill in the blank

Cesar Da Silva wrote:
> The features that I'm wondering about are:
> * Dynamic Processor Resilience

is this fault tolerance?  I think if a CPU croaks, you are dead.

There are patches for hot swap cpu support, but I haven't seen any CPU
fault tolerance patches that can handle a dead processor

> * Dynamic Memory Resilience

RAM fault tolerance?  There was a patch a long time ago which detected
bad ram, and would mark those memory clusters as unuseable at boot.
However that is clearly not dynamic.

If your memory croaks, your kernel will experience random corruptions

> * Dynamic Page Sizing

no

> * Live Upgrade

LOBOS will let one Linux kernel boot another,but that requires a boot
step, so it is not a live upgrade.  so, no, afaik

> * Alternative I/O Pathing

be less vague

> * HSM

patches exist, I believe

> * TCP selective acknowledgement (SACK)

yes

> * Service Location Protocol (SLP)

don't know

> * ATM IP switching

yes, I believe

> * SOCKS 5 support

yes, via userspace apps/libs

> * Multilink PPP

yes

> * TCP/IP Gratuitous ARP (RFC 2002)

not sure

> * Path MTU Discovery (RFC 1191)

yes

> * Path MTU Discovery over UDP

not sure, but I think so

> * IP Multipath Routing

yes

> The questions I have about the features above are:
> * Are any of the above features implemented in the
> kernel? If yes, where can I read (url-link  to the
> article, paper... please) about it?
\end{verbatim}


\section{Jonathan Morton 27 May 2001}\label{a2}
\begin{verbatim}
  Datum:Sun, 27 May 2001 03:50:28 +0100
     To:jgarzik@mandrakesoft.com, cesar.da.silva@cyberdude.com
   From:Jonathan Morton <chromi@cyberspace.org>
Subject:Re: Please help me fill in the blanks.
     Cc:linux-kernel@vger.kernel.org

>> * Live Upgrade
>
>LOBOS will let one Linux kernel boot another, but that requires a boot
>step, so it is not a live upgrade.  so, no, afaik

If you build nearly everything (except, obviously what you need to boot) as
modules, you can unload modules, build new versions, and reload them.  So,
you could say that partial support for "live upgrades" is included.

It works, too - I unloaded my OV511 driver a few weeks ago, copied the
source for the new one in, built it, and re-inserted it.  Same goes for the
DRM module a couple of weeks before that.  Now, the machine in question
gets rebooted fairly often in any case, but those were things I *didn't*
have to reboot for.

--------------------------------------------------------------
from:     Jonathan "Chromatix" Morton
mail:     chromi@cyberspace.org  (not for attachments)
big-mail: chromatix@penguinpowered.com
uni-mail: j.d.morton@lancaster.ac.uk

The key to knowledge is not to rely on people to teach you it.

Get VNC Server for Macintosh from http://www.chromatix.uklinux.net/vnc/

-----BEGIN GEEK CODE BLOCK-----
Version 3.12
GCS$/E/S dpu(!) s:- a20 C+++ UL++ P L+++ E W+ N- o? K? w--- O-- M++$ V? PS
PE- Y+ PGP++ t- 5- X- R !tv b++ DI+++ D G e+ h+ r++ y+(*)
-----END GEEK CODE BLOCK-----
\end{verbatim}

\section{Jeff Garzik 26 May 2001 22:55:04}\label{a3}
\begin{verbatim}
        Date: Sat, 26 May 2001 22:55:04 -0400
        From: Jeff Garzik <jgarzik@mandrakesoft.com>
Organization: MandrakeSoft
          To: chromi@cyberspace.org
          Cc: cesar.da.silva@cyberdude.com, linux-kernel@vger.kernel.org
        Ämne: Re: Please help me fill in the blanks.

Jonathan Morton wrote:
> 
> >> * Live Upgrade
> >
> >LOBOS will let one Linux kernel boot another, but that requires a 
boot
> >step, so it is not a live upgrade.  so, no, afaik
> 
> If you build nearly everything (except, obviously what you need to 
boot) as
> modules, you can unload modules, build new versions, and reload them.  
So,
> you could say that partial support for "live upgrades" is included.

I stand corrected, though I clearly know better:
Modules are unloaded/reloaded all the time during my driver development
:)

-- 
Jeff Garzik      | Disbelief, that's why you fail.
Building 1024    |
MandrakeSoft     |
\end{verbatim}

\section{Dan Hollis 26 May 2001}\label{a4}
\begin{verbatim}
Date: Sat, 26 May 2001 21:25:28 -0700 (PDT)
   From: Dan Hollis <goemon@anime.net>
    To: thunderlight1@yahoo.com
  Subject: Re: Please help me fill in the blanks.

On Sun, 27 May 2001, Cesar Da Silva wrote:
> * Live Upgrade

implemented

> * TCP selective acknowledgement (SACK)

implemented

> * SOCKS 5 support

implemented

> * Multilink PPP

implemented

> * Path MTU Discovery (RFC 1191)

implemented

> * IP Multipath Routing

implemented
\end{verbatim}

\section{James Sutherland 27 May 2001}\label{a5}
\begin{verbatim}
   Date: Sun, 27 May 2001 09:17:15 +0100 (BST)
   From: James Sutherland <jas88@cam.ac.uk>
     To: jgarzik@mandrakesoft.com
     Cc: cesar.da.silva@cyberdude.com, linux-kernel@vger.kernel.org
Subject: Re: Please help me fill in the blanks.

On Sat, 26 May 2001, Jeff Garzik wrote:

> Cesar Da Silva wrote:
> > The features that I'm wondering about are:
> > * Dynamic Processor Resilience
>
> is this fault tolerance?  I think if a CPU croaks, you are dead.
>
> There are patches for hot swap cpu support, but I haven't seen any 
CPU
> fault tolerance patches that can handle a dead processor

The S/390 has this; presumably it applies to Linux as well as the other
supported OSs?

> > * Dynamic Memory Resilience
>
> RAM fault tolerance?  There was a patch a long time ago which 
detected
> bad ram, and would mark those memory clusters as unuseable at boot.
> However that is clearly not dynamic.
>
> If your memory croaks, your kernel will experience random corruptions

ECC can be supported by the hardware; no support for mapping out duff
banks on x86, but again S/390 may differ?

> > * Live Upgrade
>
> LOBOS will let one Linux kernel boot another, but that requires a 
boot
> step, so it is not a live upgrade.  so, no, afaik

Live SOFTWARE upgrade, or live HARDWARE upgrade? If the latter, things
like hotswap PCI, USB... and again the S/390?

> > * Service Location Protocol (SLP)
>
> don't know

Yes, I think so - mars_nwe surely needs this?

> > * TCP/IP Gratuitous ARP (RFC 2002)
>
> not sure

Isn't that how LVS clusters handle IP takeovers?

> > * Path MTU Discovery (RFC 1191)
>
> yes

With one or two RFC violations, yes.

Basically, most of those features relating to hardware resilience 
should
be usable with Linux on an S/390 - they are hardware features, though,
AFAICS?


James.
\end{verbatim}

\section{Ingo Oeser 27 May 2001}\label{a6}
\begin{verbatim}
   Date: Sun, 27 May 2001 10:27:07 +0200
   From: Ingo Oeser <ingo.oeser@informatik.tu-chemnitz.de>
     To: jgarzik@mandrakesoft.com
     Cc: cesar.da.silva@cyberdude.com, linux-kernel@vger.kernel.org
Subject: Re: Please help me fill in the blanks.

On Sat, May 26, 2001 at 10:27:09PM -0400, Jeff Garzik wrote:
> > * Service Location Protocol (SLP)

www.openslp.org

Regards

Ingo Oeser
-- 
To the systems programmer,
users and applications serve only to provide a test load.
\end{verbatim}

\section{Dominik Kubla 27 May 2001}\label{a7}
\begin{verbatim}
   Date: Sun, 27 May 2001 10:57:10 +0200
   From: Dominik Kubla <dominik.kubla@uni-mainz.de>
     To: jgarzik@mandrakesoft.com
     Cc: cesar.da.silva@cyberdude.com, linux-kernel@vger.kernel.org
Subject: Re: Please help me fill in the blanks.

On Sat, May 26, 2001 at 10:27:09PM -0400, Jeff Garzik wrote:
> 
> > * Service Location Protocol (SLP)
> 
> don't know

Userspace: http://www.openslp.org/

> > * TCP/IP Gratuitous ARP (RFC 2002)
> 
> not sure

Userspace. Also no tool comes to my mind, arping should be easily 
modified
to do this.

Dominik
-- 
          A lovely thing to see:                   Kobayashi Issa
     through the paper window's holes               (1763-1828)
                the galaxy.               [taken from: David Brin - Sundiver]
\end{verbatim}

\section{Ville Herva 27 May 2001}\label{a8}
\begin{verbatim}
Date: Sun, 27 May 2001 20:21:19 +0300
   From: Ville Herva <vherva@mail.niksula.cs.hut.fi>
    To: jgarzik@mandrakesoft.com
    Cc: cesar.da.silva@cyberdude.com, linux-kernel@vger.kernel.org
  Subject: Re: Please help me fill in the blanks.

> > * Dynamic Memory Resilience
> 
> RAM fault tolerance?  There was a patch a long time ago which 
detected
> bad ram, and would mark those memory clusters as unuseable at boot. 
> However that is clearly not dynamic.

If you are referring to Badram patch by Rick van Rein
(http://rick.vanrein.org/linux/badram/), it doesn't detect the bad ram,
memtest86 does that part (and does it well) -- you enter then enter the
badram clusters as boot param. But I have to say badram patch works
marvellously (thanks, Rick.) Shame it didn't find its way to standard
kernel.
\end{verbatim}
\end{document}
% LocalWords:  Tru Cesar da silva Andreas Larsson VLE UX Torvald AXP UltraSPARC
% LocalWords:  PowerPC SuperH IA AMD NT FreeBSD OSF Itanium Torvalds filesystem



