Register your product to gain access to bonus material or receive a coupon.
The definitive Sun Microsystems guide to the internals of the Solaris kernel.
This book focuses on the core kernel functions, major data structures and algorithms. Its practical approach makes it an essential resource for anyone responsible for kernel, driver or application software. Anyone doing development, debugging, maintenance, performance tuning, capacity planning, or application tuning will also benefit from Mauro and McDougall's in-depth coverage of the Solaris kernel.
This authoritative and comprehensive guide covers the key components that comprise the Solaris kernel. The modular architecture of the kernel is discussed and each major subsystem is fully explored. Topics covered include:
Solaris Internals is an indispensable reference for kernel developers and is full of useful information for monitoring and optimizing Solaris systems. Whether you're a software developer, systems architect, system administrator, or performance analyst, you'll rely on it constantly.
Click here for a sample chapter for this book: 0130224960.pdf
I. 1 INTRODUCTION TO SOLARIS INTERNALS.
1. An Introduction to Solaris.A Brief History. Key Differentiators. Kernel Overview. Processes, Threads, and Scheduling. Interprocess Communication. Signals. Memory Management. Files and File Systems. I/O Architecture.
2. Kernel Services.Access to Kernel Services. Entering Kernel Mode. Context. Execution Context. Virtual Memory. Interrupts. System Calls. The Kernel Callout Table. The System Clock.
3. Kernel Synchronization Primitives.Synchronization. Parallel Systems Architectures. Hardware Considerations for Locks and Synchronization. Introduction to Synchronization Objects. Mutex Locks. Reader/Writer Locks. Turnstiles and Priority Inheritance. Dispatcher Locks. Kernel Semaphores.
4. Kernel Bootstrap and Initialization.Kernel Directory Hierarchy. Kernel Bootstrap and Initialization. Kernel Module Loading and Linking.
II. 123 THE SOLARIS MEMORY SYSTEM.
5. Solaris Memory Architecture.Why Have a Virtual Memory System? Modular Implementation. Virtual Address Spaces. Memory Segments. Anonymous Memory. Virtual Memory Watchpoints. Global Page Management. The Page Scanner. The Hardware Address Translation Layer. Large Pages.
6. Kernel Memory.Kernel Virtual Memory Layout. Kernel Memory Allocation.
7. Memory Monitoring.A Quick Introduction to Memory Monitoring. Memory Monitoring Tools. The vmstat Command. MemTool: Unbundled Memory Tools. Other Memory Tools.
III. THREADS, PROCESSES, AND IPC.
8. The Solaris Multithreaded Process Architecture.Introduction to Solaris Processes. Process Structures. The Kernel Process Table. Process Creation. Process Termination. Procfs - The Process File System. Signals. Sessions and Process Groups.
9. The Solaris Kernel Dispatcher.Overview. The Kernel Dispatcher. The Kernel Sleep/Wakeup Facility. Scheduler Activations. Kernel Processor Control and Processor Sets.
10. Interprocess Communication.Generic System V IPC Support. System V Shared Memory. System V Semaphores. System V Message Queues. POSIX IPC. Solaris Doors.
PART IV. FILES AND FILE SYSTEMS
11. Solaris Files and File I/O.Files in Solaris. File Application Programming Interfaces (APIs). System File I/O. Asynchronous I/O. Memory Mapped File I/O. 64-bit Files in Solaris. 64-bit Device Support in Solaris.
12. File System Overview.Why Have a File System? Support for Multiple File System Types. Regular (On-Disk) File Systems. File Systems Logging (Journaling). Expanding and Shrinking File Systems. Direct I/O.
13. File System Framework.Solaris File System Framework. The vnode. The vfs Object. File System I/O. Path-Name Management. The File System Flush Daemon.
14. The UNIX File System.UFS Development History. UFS On-Disk Format. UFS Implementation.
15. Solaris File System Cache.Introduction to File Caching. Page Cache and Virtual Memory System. Is All That Paging Bad for My System? Paging Parameters That Affect File System Performance. Bypassing the Page Cache with Direct I/O. Directory Name Cache. Inode Caches.
Appendix A: Kernel Tunables, Switches, and Limits.
The internals of the UNIX kernel are fairly well-documented, most notably by Goodheart and Cox 10, Bach 1, McKusick et al. 19, and Vahalia 39. These texts have become a common source of reference information for those who want to better understand the internals of UNIX. However little has been written about the specifics of the Solaris kernel.
The paucity of Solaris specific information led us to create our own reference material. As we published information through white papers, magazine columns, and tutorials, the number of folks expressing interest motivated us to produce a complete work that discussed Solaris exclusively.
This book is about the internals of Sun's Solaris Operating Environment. The rapid growth of Solaris has created a large number of users, software developers, systems administrators, performance analysts, and other members of the technical community, all of whom require in-depth knowledge about the environment in which they work.
Since the focus of this book is the internals of the Solaris kernel, the book provides a great deal of information on the architecture of the kernel and the major data structures and algorithms implemented in the operating system. However, rather than approach the subject matter from a purely academic point of view, we wrote the book with an eye on the practical application of the information contained herein. Thus, we have emphasized the methods and tools that can be used on a Solaris system to extract information that otherwise is not easily accessible with the standard bundled commands and utilities. We want to illustrate how you can apply this knowledge in a meaningful way, as your job or interest dictates.
To maximize the usefulness of the text, we included specific information on Solaris versions 2.5.1, 2.6, and Solaris 7. We cover the major Solaris subsystems, including memory management, process management, threads, files, and file systems. We do not cover details of low-level I/O, device drivers, STREAMS, and networking. For reference material on these topics, see "Writing Device Drivers" 28, the "STREAMS Programming Guide" 29, and "UNIX Network Programming" 32.
The material included in this book is not necessarily presented at an introductory level, although whenever possible we begin discussing a topic with some conceptual background information. We assume that you have some familiarity with operating systems concepts and have used a UNIX-based operating system. Some knowledge of the C programming language is useful but not required.
Because of the variety of hardware platforms on which Solaris runs, it is not practical to discuss the low-level details of all the different processors and architectures, so our hardware focus, when detail is required, is admittedly UltraSPARC-centric. This approach makes the most sense since it represents the current technology and addresses the largest installed base. In general, the concepts put forth when detail is required apply to other processors and platforms supported. The differences are in the specific implementation details, such as per-processor hardware registers.
Throughout the book we refer to specific kernel functions by name as we describe the flow of various code segments. These routines are internal to the operating system and should not be construed as, or confused with, the public interfaces that ship as part of the Solaris product line-the systems calls and library interfaces. The functions referenced throughout the text, unless explicitly noted, are private to the kernel and not callable or in any way usable by application programs.
We hope that this book will serve as a useful reference for a variety of technical staff members working with the Solaris Operating Environment.
In addition to the various technical staff members listed above, we also believe that members of the academic community will find the book of value in studying how a volume, production kernel implements major subsystems and solves the problems inherent in operating systems development.
We organized Solaras Internals into several logical parts, each part grouping several chapters containing related information. Our goal was to provide a building block approach to the material, where later sections build on information provided in earlier chapters. However, for readers familiar with particular aspects of operating systems design and implementation, the individual parts and chapters can stand on their own in terms of the subject matter they cover.
In February 2000, Sun announced the availability of Solaris source. This book provides the essential companion to the Solaris source and can be used as a guide to the Solaris kernel framework and architecture.
It should also be noted that the source available from Sun is the Solaris 8 source. Although this book covers Solaris versions up to and including Solaris 7, almost all of the material is relevant to Solaris 8.
To complement this book, we created a Web site where we will place updated material, tools we refer to, and links to related material on the topics covered. The Web site is available at http://www.solarisinternals.com.
We certainly hope that you get as much out of reading Solaris Internals as we did from writing it. We welcome comments, suggestions, and questions from readers.