Understanding the elements listed in this section is the first critical step to understanding how Solaris 9 works. Sun assumes that its certification candidates have a firm grasp of basic system and networking concepts, and doesn't directly test on such cursory information. But only after you understand the basics can you master more difficult and tested concepts.
These concepts are by no means unique to Solaris, or even UNIX for that matter. However, this section is primarily concerned with how these concepts relate to the Solaris operating environment. If you have solid computer experience, you are probably already familiar with most of these ideas, but you might not be sure how they fit into the Solaris world. By reading this section, you will be able to impress your techno-friends with your vast, detailed knowledge of often ambiguous computer concepts.
An operating system should be easy to define, right? After all, we use them every day. The operating system is the under-appreciated workhorse of the software side of your computer. It's always there, always running (at least in theory), and usually ignored (unless it's not running).
Operating systems are programs in their own right, with a few express functions. First, they provide an interface between the computer hardware and software. In a sense, they are the translator that makes the hardware and software play nice together. Second, based on the first function, they enable users to run applications. So, operating systems are applications that let you run other applications.
Sun makes a differentiation between an operating system and an operating environment. Technically, Solaris 9 is the name of the operating environment built around the SunOS 5.9 operating system. The operating environment consists of the core operating system and all bundled features, such as management programs and software. Even though delineation is made, no one at Sun is likely to get mad at someone calling Solaris an "operating system." At least I hope not, because I will certainly do it a lot in this book.
The kernel is the brain of the operating system. Although kernels vary among operating systems, they all have some common characteristics. In the case of UNIX-based operating systems, kernels are written in the C programming language. Kernels are responsible mainly for managing computer input/output (I/O), allocating system resources, and managing processes.
Processes are the running parts of an application. A common misconception is that an application is a process. That's not true, because many applications (especially newer games) will be running as multiple processes at one time. Such applications are known as multithreaded applications. Multithreading speeds up the application and allows for smoother execution. System tasks other than applications, such as daemons (which we'll discuss in just a bit), run as processes as well. In UNIX, all processes have a process identifier (PID), which is used by the kernel to identify and manipulate the process as needed.
In UNIX, the shell enables users to input information to be interpreted by the operating system. Consider the operating system to be the interface between the computer hardware and software, and the shell to be the interface between the user and the operating system. Shells also enable users to program commonly used or frequently used lists of applications to run with the execution of one command. These are called scripts, macros, or batch files.
Solaris 9 provides multiple shells, and each one has different features. The three most common shells are the Bourne shell (sh), the C shell (csh), and the Korn shell (ksh).
The Bourne shell is the default shell for Solaris 9. Shells will be discussed in greater detail in Chapter 4, "User and Group Administration."
Although Sun provides a graphical user interface (GUI) for Solaris 9, the shell itself is command-prompt-based. For example, if you are using the Bourne shell, your prompt will be $-unless you are the all-powerful superuser, in which case your prompt will be #. Some other operating systems do use GUI shells, such as Windows Explorer. Keep in mind that even though Solaris 9 runs the Common Desktop Environment (CDE) GUI by default, CDE is not a shell.
Depending on where you look, you can find two common definitions for daemons. The first one describes a daemon as a program that runs automatically in the background without the need for user intervention. The second definition is that a daemon provides a service. The service can be administrative, such as cleaning up temporary files, or the service can be one that provides meaningful interaction to clients, such as a print daemon, DHCP server, or DNS server. Daemons run as processes, and can either start automatically when the operating system starts, or be started manually.
Like daemon, the term file system also has various definitions. There are two common ways to look at file systems.
One way to see a file system is as a collection of files that have a similar purpose on one logical section of the hard drive. Solaris provides many such file systems, including the root (/), /etc, /usr, /opt, /var, and others. These file systems will be further organized by using directories.
Another way to think of a file system is the specific method in which data is stored and organized on the hard drive. All data is written in bits (0s and 1s) in some way or another, but file systems logically make sense of the 0s and 1s. Here are some file systems supported within Solaris 9:
UNIX File System (UFS) for local hard disks
High Sierra File System (HSFS) for CD-ROMs
Universal Disk Format (UDF) for optical media, such as DVDs
Personal Computer File System (PCFS) for floppy disks
Network File System (NFS) for networked volumes
We will focus on file systems in greater detail in Chapter 7, "File System Management."
On networks, computers can be divided into two broad categories: clients and servers. Some operating systems, such as Novell NetWare, are designed to be a server only. Others, such as Microsoft Windows 98, are to be clients only. Solaris 9 is a versatile operating system that can be used as either a client or a server.
As a rule of thumb, end users sit at client machines and perform daily tasks. Clients will often request information (files and applications) from centralized servers, which are located in some sort of server room. Servers should be secured away from prying (or hacking) hands, because they often hold critical and sensitive information.
Clients make requests of servers, and servers fulfill client requests. A computer with the right operating system can function as both a client and a server at the same time. Solaris, and UNIX in general, is a powerful enough operating system to function as a client and a server at the same time.