Cover image for Solaris internals : core kernel components
Title:
Solaris internals : core kernel components
Author:
Mauro, Jim.
Personal Author:
Publication Information:
Palo Alto, Calif. : Sun Microsystems, Inc., [2001]

©2001
Physical Description:
xli, 657 pages : illustrations ; 25 cm
Language:
English
Title Subject:
Added Author:
ISBN:
9780130224965
Format :
Book

Available:*

Library
Call Number
Material Type
Home Location
Status
Central Library QA76.76.O63 M37197 2001 Adult Non-Fiction Central Closed Stacks
Searching...

On Order

Summary

Summary

PREFACE

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.

About This Book

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.

Intended Audience

We hope that this book will serve as a useful reference for a variety of technical staff members working with the Solaris Operating Environment.

Application developerscan find information in this book about how Solaris implements functions behind the application programming interfaces. This information helps developers understand performance, scalability, and implementation specifics of each interface when they develop Solaris applications. The system overview section and sections on scheduling, interprocess communication, and file system behavior should be the most useful sections. Device driver and kernel module developersof drivers, STREAMS modules, loadable system calls, etc., can find herein the general architecture and implementation theory of the Solaris Operating Environment. The Solaris kernel framework and facilities portions of the book (especially the locking and synchronization primitives chapters) are particularly relevant. Systems administrators, systems analysts, database administrators, and ERP managersresponsible for performance tuning and capacity planning can learn about the behavioral characteristics of the major Solaris subsystems. The file system caching and memory management chapters provide a great deal of information about how Solaris behaves in real-world environments. The algorithms behind Solaris tunable parameters (which are detailed in Appendix A) are covered in depth throughout the book. Technical support staffresponsible for the diagnosis, debugging, and support of Solaris will find a wealth of information about implementation details of Solaris. Major data structures and data flow diagrams are provided in each chapter to aid debugging and navigation of Solaris Systems. System users who just want to know moreabout how the Solaris kernel works will find high-level overviews at the start of each chapter.

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.

How This Book Is Organized

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.

Part One: Introduction to Solaris Internals Chapter 1 -- An Introduction to Solaris Chapter 2 -- Kernel Services Chapter 3 -- Kernel Synchronization Primitives Chapter 4 -- Kernel Bootstrap and Initialization Part Two: The Solaris Memory System Chapter 5 -- Solaris Memory Architecture Chapter 6 -- Kernel Memory Chapter 7 -- Memory Monitoring Part Three: Threads, Processes, and IPC Chapter 8 -- The Solaris Multithreaded Process Architecture Chapter 9 -- The Solaris Kernel Dispatcher Chapter 10 -- Interprocess Communication Part Four: Files and File Systems Chapter 11 -- Solaris Files and File I/O Chapter 12 -- File System Overview Chapter 13 -- File System Framework Chapter 14 -- The UNIX File System Chapter 15 -- Solaris File System Cache Solaris Source Code

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.

Updates and Related Material

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.

A Note from the Authors

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.


Author Notes

JIM MAURO has 20 years of industry experience with UNIX systems. Jim is a senior engineer in the Performance Applications Engineering group at Sun Microsystems. When Jim is not wrestling with his two sons, his house, or his yard, he works on systems and applications availability and resource management-related projects for Sun.

RICHARD McDOUGALL is a senior engineer in the Performance Applications Engineering group at Sun Microsystems, focusing on enterprise systems architecture, large system performance, and OS technology. He has been known to have some knowledge of operating system architecture and internals. When Richard isn't tinkering with cars or racing karts, he is usually found analyzing system performance, contributing to Solaris development, and developing tools for measurement, monitoring, tracing, and sizing UNIX systems.


Excerpts

Excerpts

PREFACE 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. About This Book 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. Intended Audience We hope that this book will serve as a useful reference for a variety of technical staff members working with the Solaris Operating Environment. Application developers can find information in this book about how Solaris implements functions behind the application programming interfaces. This information helps developers understand performance, scalability, and implementation specifics of each interface when they develop Solaris applications. The system overview section and sections on scheduling, interprocess communication, and file system behavior should be the most useful sections. Device driver and kernel module developers of drivers, STREAMS modules, loadable system calls, etc., can find herein the general architecture and implementation theory of the Solaris Operating Environment. The Solaris kernel framework and facilities portions of the book (especially the locking and synchronization primitives chapters) are particularly relevant. Systems administrators, systems analysts, database administrators, and ERP managers responsible for performance tuning and capacity planning can learn about the behavioral characteristics of the major Solaris subsystems. The file system caching and memory management chapters provide a great deal of information about how Solaris behaves in real-world environments. The algorithms behind Solaris tunable parameters (which are detailed in Appendix A) are covered in depth throughout the book. Technical support staff responsible for the diagnosis, debugging, and support of Solaris will find a wealth of information about implementation details of Solaris. Major data structures and data flow diagrams are provided in each chapter to aid debugging and navigation of Solaris Systems. System users who just want to know more about how the Solaris kernel works will find high-level overviews at the start of each chapter. 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. How This Book Is Organized 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. Part One: Introduction to Solaris Internals Chapter 1 -- An Introduction to Solaris Chapter 2 -- Kernel Services Chapter 3 -- Kernel Synchronization Primitives Chapter 4 -- Kernel Bootstrap and Initialization Part Two: The Solaris Memory System Chapter 5 -- Solaris Memory Architecture Chapter 6 -- Kernel Memory Chapter 7 -- Memory Monitoring Part Three: Threads, Processes, and IPC Chapter 8 -- The Solaris Multithreaded Process Architecture Chapter 9 -- The Solaris Kernel Dispatcher Chapter 10 -- Interprocess Communication Part Four: Files and File Systems Chapter 11 -- Solaris Files and File I/O Chapter 12 -- File System Overview Chapter 13 -- File System Framework Chapter 14 -- The UNIX File System Chapter 15 -- Solaris File System Cache Solaris Source Code 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. Updates and Related Material 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. A Note from the Authors 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. Excerpted from Solaris Internals by Richard McDougall, Jim Mauro, Sun Microsystems Press Staff All rights reserved by the original copyright owners. Excerpts are provided for display purposes only and may not be reproduced, reprinted or distributed without the written permission of the publisher.

Table of Contents

Contentsp. vii
List of Figuresp. xxi
List of Tablesp. xxvii
List of Header Filesp. xxxi
Prefacep. xxxiii
Acknowledgmentsp. xxxix
Part 1 Introduction To Solaris Internalsp. 1
1. An Introduction to Solarisp. 3
A Brief Historyp. 4
Key Differentiatorsp. 8
Kernel Overviewp. 10
Solaris Kernel Architecturep. 11
Modular Implementationp. 12
Processes, Threads, and Schedulingp. 14
Two-Level Thread Modelp. 15
Global Process Priorities and Schedulingp. 16
Interprocess Communicationp. 17
Traditional UNIX IPCp. 17
System V IPCp. 18
POSIX IPCp. 18
Advanced Solaris IPCp. 18
Signalsp. 19
Memory Managementp. 19
Global Memory Allocationp. 20
Kernel Memory Managementp. 21
Files and File Systemsp. 21
File Descriptors and File System Callsp. 22
The Virtual File System Frameworkp. 23
I/O Architecturep. 25
2. Kernel Servicesp. 27
Access to Kernel Servicesp. 27
Entering Kernel Modep. 28
Contextp. 29
Threads in Kernel and Interrupt Contextp. 30
UltraSPARC I and II Trapsp. 31
Interruptsp. 38
Interrupt Prioritiesp. 38
Interrupt Monitoringp. 42
Interprocessor Interrupts and Cross-Callsp. 43
System Callsp. 44
Regular System Callsp. 44
Fast Trap System Callsp. 46
The Kernel Callout Tablep. 47
Solaris 2.6 and 7 Callout Tablesp. 47
Solaris 2.5.1 Callout Tablesp. 51
The System Clockp. 54
Process Execution Time Statisticsp. 55
High-Resolution Clock Interruptsp. 56
High-Resolution Timerp. 57
Time-of-Day Clockp. 57
3. Kernel Synchronization Primitivesp. 59
Synchronizationp. 59
Parallel Systems Architecturesp. 60
Hardware Considerations for Locks and Synchronizationp. 63
Introduction to Synchronization Objectsp. 68
Synchronization Processp. 69
Synchronization Object Operations Vectorp. 70
Mutex Locksp. 71
Overviewp. 71
Solaris 7 Mutex Lock Implementationp. 74
Reader/Writer Locksp. 82
Solaris 7 Reader/Writer Locksp. 82
Solaris 2.6 RW Lock Differencesp. 85
Solaris 2.5.1 RW Lock Differencesp. 86
Turnstiles and Priority Inheritancep. 88
Solaris 7 Turnstilesp. 89
Solaris 2.5.1 and 2.6 Turnstilesp. 92
Dispatcher Locksp. 96
Kernel Semaphoresp. 98
4. Kernel Bootstrap and Initializationp. 103
Kernel Directory Hierarchyp. 103
Kernel Bootstrap and Initializationp. 107
Loading the Bootblockp. 107
Loading ufsbootp. 108
Locating Core Kernel Images and Linkerp. 109
Loading Kernel Modulesp. 109
Creating Kernel Structures, Resources, and Componentsp. 110
Completing the Boot Processp. 114
During the Boot Process: Creating System Kernel Threadsp. 115
Kernel Module Loading and Linkingp. 116
Part 2 The Solaris Memory Systemp. 123
5. Solaris Memory Architecturep. 125
Why Have a Virtual Memory System?p. 125
Modular Implementationp. 128
Virtual Address Spacesp. 130
Sharing of Executables and Librariesp. 132
SPARC Address Spacesp. 132
Intel Address Space Layoutp. 134
Process Memory Allocationp. 134
The Stackp. 136
Address Space Managementp. 137
Virtual Memory Protection Modesp. 140
Page Faults in Address Spacesp. 140
Memory Segmentsp. 143
The vnode Segment: seg_vnp. 147
Copy-on-Writep. 152
Page Protection and Advicep. 152
Anonymous Memoryp. 153
The Anonymous Memory Layerp. 153
The swapfs Layerp. 156
Anonymous Memory Accountingp. 161
Virtual Memory Watchpointsp. 164
Global Page Managementp. 167
Pages--The Basic Unit of Solaris Memoryp. 167
The Page Hash Listp. 168
MMU-Specific Page Structuresp. 169
Physical Page Listsp. 170
The Page-Level Interfacesp. 172
The Page Throttlep. 173
Page Sizesp. 173
Page Coloringp. 174
The Page Scannerp. 178
Page Scanner Operationp. 179
Page-out Algorithm and Parametersp. 180
Shared Library Optimizationsp. 183
The Priority Paging Algorithmp. 183
Page Scanner Implementationp. 187
The Memory Schedulerp. 189
The Hardware Address Translation Layerp. 190
Virtual Memory Contexts and Address Spacesp. 192
The UltraSPARC-I and -II HATp. 193
Address Space Identifiersp. 198
Large Pagesp. 201
6. Kernel Memoryp. 205
Kernel Virtual Memory Layoutp. 205
Kernel Address Spacep. 206
The Kernel Text and Data Segmentsp. 208
Virtual Memory Data Structuresp. 208
The SPARC V8 and V9 Kernel Nucleusp. 209
Loadable Kernel Module Text and Datap. 209
The Kernel Address Space and Segmentsp. 211
Kernel Memory Allocationp. 212
The Kernel Mapp. 213
The Resource Map Allocatorp. 214
The Kernel Memory Segment Driverp. 216
The Kernel Memory Slab Allocatorp. 217
7. Memory Monitoringp. 233
A Quick Introduction to Memory Monitoringp. 233
Total Physical Memoryp. 234
Kernel Memoryp. 234
Free Memoryp. 234
File System Caching Memoryp. 234
Memory Shortage Detectionp. 235
Swap Spacep. 236
Memory Monitoring Toolsp. 237
The vmstat Commandp. 238
Free Memoryp. 239
Swap Spacep. 239
Paging Countersp. 239
Process Memory Usage, ps, and the pmap Commandp. 240
MemTool: Unbundled Memory Toolsp. 242
MemTool Utilitiesp. 243
Command-Line Toolsp. 243
The MemTool GUIp. 245
Other Memory Toolsp. 250
The Workspace Monitor Utility: WSMp. 250
An Extended vmstat Command: memstatp. 251
Part 3 Threads, Processes, and IPCp. 255
8. The Solaris Multithreaded Process Architecturep. 257
Introduction to Solaris Processesp. 257
Architecture of a Processp. 258
Process Imagep. 263
Process Structuresp. 265
The Process Structurep. 265
The User Areap. 277
The Lightweight Process (LWP)p. 281
The Kernel Thread (kthread)p. 283
The Kernel Process Tablep. 286
Process Limitsp. 287
LWP Limitsp. 289
Process Creationp. 289
Process Terminationp. 298
The LWP/kthread Modelp. 300
Deathrowp. 301
Procfs--The Process File Systemp. 302
Procfs Implementationp. 305
Process Resource Usagep. 314
Microstate Accountingp. 316
Signalsp. 320
Signal Implementationp. 326
Sigwaiting: A Special Signalp. 337
Sessions and Process Groupsp. 337
9. The Solaris Kernel Dispatcherp. 343
Overviewp. 344
Scheduling Classesp. 346
Dispatch Tablesp. 356
The Kernel Dispatcherp. 362
Dispatch Queuesp. 365
Thread Prioritiesp. 369
Dispatcher Functionsp. 382
The Kernel Sleep/Wakeup Facilityp. 396
Condition Variablesp. 397
Sleep Queuesp. 399
The Sleep Processp. 402
The Wakeup Mechanismp. 405
Scheduler Activationsp. 407
User Thread Activationp. 408
LWP Pool Activationp. 409
Kernel Processor Control and Processor Setsp. 411
Processor Controlp. 413
Processor Setsp. 416
10. Interprocess Communicationp. 421
Generic System V IPC Supportp. 422
Module Creationp. 422
Resource Mapsp. 425
System V Shared Memoryp. 425
Shared Memory Kernel Implementationp. 430
Intimate Shared Memory (ISM)p. 432
System V Semaphoresp. 436
Semaphore Kernel Resourcesp. 436
Kernel Implementation of System V Semaphoresp. 439
Semaphore Operations Inside Solarisp. 440
System V Message Queuesp. 442
Kernel Resources for Message Queuesp. 442
Kernel Implementation of Message Queuesp. 447
POSX IPCp. 449
POSIX Shared Memoryp. 452
POSIX Semaphoresp. 452
POSIX Message Queuesp. 455
Solaris Doorsp. 459
Doors Overviewp. 460
Doors Implementationp. 461
Part 4 Files and File Systemsp. 469
11. Solaris Files and File I/Op. 471
Files in Solarisp. 471
Kernel File Structuresp. 476
File Application Programming Interfaces (APIs)p. 478
Standard I/O (stdio)p. 479
C Runtime File Handlesp. 482
Standard I/O Buffer Sizesp. 483
System File I/Op. 483
File I/O System Callsp. 483
File Open Modes and File Descriptor Flagsp. 485
Asynchronous I/Op. 492
File System Asynchronous I/Op. 493
Kernel Asynchronous I/Op. 494
Memory Mapped File I/Op. 498
Mapping Optionsp. 500
Providing Advice to the Memory Systemp. 502
64-bit Files in Solarisp. 506
64-bit Device Support in Solaris 2.0p. 507
64-bit File Application Programming Interfaces in Solaris 2.5.1p. 507
Solaris 2.6: The Large-File OSp. 508
File System Support for Large Filesp. 511
12. File System Overviewp. 513
Why Have a File System?p. 513
Support for Multiple File System Typesp. 514
Regular (On-Disk) File Systemsp. 515
Allocation and Storage Strategyp. 516
File System Capacityp. 519
Variable Block Size Supportp. 520
Access Control Listsp. 521
File Systems Logging (Journaling)p. 522
Expanding and Shrinking File Systemsp. 526
Direct I/Op. 527
13. File System Frameworkp. 531
Solaris File System Frameworkp. 531
Unified File System Interfacep. 532
File System Framework Facilitiesp. 533
The vnodep. 533
Vnode Typesp. 535
Vnode Methodsp. 536
Vnode Reference Countp. 538
Interfaces for Paging vnode Cachep. 538
Block I/O on vnode Pagesp. 540
The vfs Objectp. 540
The File System Switch Tablep. 542
The Mounted vfs Listp. 544
File System I/Op. 547
Memory Mapped I/Op. 548
read() and write() System Callsp. 549
The seg_map Segmentp. 549
Path-Name Managementp. 554
The lookupname() and lookuppn() Methodsp. 554
The vop_lookup() Methodp. 555
The vop_readdir() Methodp. 555
Path-Name Traversal Functionsp. 556
The Directory Name Lookup Cache (DNLC)p. 557
File System Modulesp. 561
Mounting and Unmountingp. 561
The File System Flush Daemonp. 563
14. The UNIX File Systemp. 565
UFS Development Historyp. 565
UFS On-Disk Formatp. 567
UFS Inodesp. 567
UFS Directoriesp. 567
UFS Hard Linksp. 569
UFS Layoutp. 569
Disk Block Locationp. 572
UFS Block Allocationp. 573
UFS Allocation and Parametersp. 574
UFS Implementationp. 577
Mapping of Files to Disk Blocksp. 579
Methods to Read and Write UFS Filesp. 580
In-Core UFS Inodesp. 584
UFS Directories and Path Namesp. 587
15. Solaris File System Cachep. 589
Introduction to File Cachingp. 589
Solaris Page Cachep. 590
Block Buffer Cachep. 592
Page Cache and Virtual Memory Systemp. 593
File System Paging Optimizationsp. 595
Is All That Paging Bad for My System?p. 595
Paging Parameters That Affect File System Performancep. 599
Bypassing the Page Cache with Direct I/Op. 600
UFS Direct I/Op. 600
Direct I/O with Veritas VxFSp. 603
Directory Name Cachep. 603
Inode Cachesp. 605
UFS Inode Cache Sizep. 605
VxFS Inode Cachep. 607
Appendix A Kernel Tunables, Switches, and Limitsp. 609
Appendix B Kernel Virtual Address Mapsp. 621
Appendix C A Sample Procfs Utilityp. 629
Bibliographyp. 635
Indexp. 639

Google Preview