1.2. Key Differentiators
The continued development and integration of new technologies raises the bar for modern operating systems. With Solaris 10, new technologies combine to deliver on a common goalreduced cost of ownership through the simplification of managing available system resources, handling fault and error events, and diagnosing application and system behavior. Here are some of the characteristics that makes Solaris OS stand out.
Reliability, availability, serviceability. Solaris OS (SunOS 5.X) has been in development for almost twenty years, with millions of installations around the world running a wide variety of production workloads for well over a decade, on systems ranging from single-processor servers to high-end multiprocessor systems with massive memory and I/O configurations.
Scalable performance. The Solaris kernel has been designed from the ground-up to support multiprocessor systems running a single, shared kernel instance. The kernel itself is multithreaded, using kernel threads to perform system tasks and services and manage regular events such as interrupts. Highly optimized, fine-grained locking primitives are implemented to provide high levels of concurrency on multiprocessor systems. Kernel-provided resources to support processes, threads, file I/O, etc., scale up dynamically with system size and load.
Observability. No other operating system offers the wealth of tools and utilities available in Solaris OS for monitoring and analyzing system and application performance and behavior. In addition to the traditional "stat" tools (vmstat, mpstat, iostat, netstat), and sar(1), Solaris OS includes the following: process-centric tools built on the /proc file system (the ptools); hardware statistics tools (cpustat, busstat); a powerful kernel and application debugger (mdb); prstat(1M) for dynamic systemwide process execution statistics; application execution tracing with TRuss(1) and apptrace(1); and, of course, DTrace, which enables the dynamic insertion of thousands of software sensors in applications and the kernel.
Resource management. Maximizing use of available hardware resources is critical to today's cost-conscious IT organizations, along with ensuring that business requirements and service levels are met and sustained. Combining multiple workloads on fewer systems to reduce overall server count is a common strategy. Solaris OS provides the tools and facilities necessary for effective management of these complex environments and delivery of required performance. With Solaris OS, you can partition processors and bind specific processes into processor sets, configure dynamic pools of processor sets with assigned scheduling classes, create multiple isolated, virtualized execution environments within a single Solaris instance, and limit physical memory use on a per-process basis.
Multiplatform support. Solaris OS supports systems based on SPARC, Intel x86, and AMD Opteron processors. POSIX-compliant application programming interfaces (APIs) are consistent across the different platforms, as are the Solaris user and administration environments. A layered architecture means that over 90 percent of the Solaris source is platform-independent.
64-bit kernel and process address space. A 64-bit kernel for 64-bit platforms delivers a LP64 execution environment. (LP64 refers to the data model: Long and pointer data types are 64 bits wide.) A 32-bit application environment is also available, allowing 32-bit binaries to execute on a 64-bit Solaris kernel alongside 64-bit applications. This is true for both SPARC and 64-bit AMD Opteron systems. Note that Solaris 10 no longer provides 32-bit kernel support on SPARC platforms. All Solaris 10 SPARC systems will boot and run as a 64-bit kernel only. This does not impact the support of 32-bit applications on Solaris 10 on SPARC: that is, 32-bit applications are fully supported.
Modular binary kernel. The Solaris kernel uses dynamic linking and dynamic modules to divide the kernel into modular binaries, according to a well-defined directory hierarchy for the storage of different classes of kernel modules. A core kernel binary contains central facilities; device drivers, file systems, schedulers, and some system calls are implemented as dynamically loadable modules. Consequently, the Solaris kernel is delivered as a binary rather than source and object, and kernel compilations are not required upon a change of parameters or addition of new functionality.
Fully preemptable kernel. The Solaris kernel is fully preemptable and does not require manipulation of hardware interrupt levels to protect critical datalocks synchronize access to kernel data. This means that threads needing to run can interrupt another, lower-priority, thread; hence, low latency scheduling and low latency interrupt dispatch is achieved. For example, a process waking up after sleeping for a disk I/O can be scheduled immediately, rather than waiting until the scheduler runs. Additionally, by not raising priority levels and blocking interrupts, the system need not periodically suspend activity during interrupt handling, so system resources are used more efficiently. The preemptable kernel is critical to providing support for real-time applications that require a bound, deterministic dispatch latency.
Multiple scheduler support. Solaris provides a configurable scheduler environment. Multiple schedulers can operate concurrently, each with its own scheduling algorithms and priority levels. Schedulers are supplied as kernel modules and are dynamically loaded into the operating system. Solaris ships with a table-driven, usage-decayed timeshare scheduler (TS); an interactive scheduler (IA) optimized for the window system, a share-based scheduler (FSS), a fixed-priority scheduler (FX), and a real-time fixed priority scheduler (RT).
Multiple file system support. In Solaris OS, a virtual file system (VFS) framework allows multiple file systems to be configured into the system. The framework implements several disk-based file systems (UNIX file system, MS-DOS file system, CD-ROM file system, etc.) and the network file system (NFS V2, V3, and V4). The virtual file system framework also implements pseudo file systems, including the process file system, procfs, a file system that abstracts processes as files. The virtual file system framework is integrated with the virtual memory system to provide dynamic file system caching that uses available free memory as a file system cache.
Demand-paged virtual memory system. With this feature, systems can load applications on demand, rather than loading whole executables or library images into memory. Demand-paging speeds up application startup and potentially reduces memory footprint.
Modular virtual memory system. The virtual memory system separates virtual memory functions into distinct layers; the address space layer, segment drivers, and hardware-specific components are consolidated into a hardware address translation (HAT) layer. Segment drivers can abstract memory as files, and files can be memory-mapped into an address space. Segment drivers enable different abstractions, including physical memory and devices, to appear in an address space.
Modular device I/O system. Dynamically-loadable device and bus drivers allow a hierarchy of buses and devices to be installed and configured. A device driver interface (DDI) shields device drivers from platform-specific infrastructure, thus maximizing portability of device drivers. A Solaris system does not need to be rebooted when a device driver is added (or for most other loadable kernel modules).
Integrated networking. With the data link provider interface (DLPI), multiple concurrent network interfaces can be configured, and a variety of different protocolsincluding Ethernet, X.25, SDLC, ISDN, FDDI, token bus, bi-sync, and other data-link-level protocolscan be configured.
Real-time architecture. The Solaris kernel was designed and implemented to provide real-time capabilities. The combination of the preemptive kernel, kernel interrupts as threads, fixed-priority scheduling, high-resolution timers, and fine-grained processor control makes Solaris an ideal environment for real-time applications.
The differentiators listed above represent many innovative features integrated in the Solaris kernel. In the remaining chapters, we closely examine the core kernel modules and major subsystems.