Solaris (TM) Internals Vol 1

Free Download

Authors:

Volume: Volume 1

ISBN: 0-13-022496-0

Size: 4 MB (4704820 bytes)

Pages: 730/730

File format:

Language:

Publishing Year:

Category: Tags: , ,

Jim Mauro, Richard McDougall, Sun Microsystems Press0-13-022496-0

A definitive guide to the internals of the Solaris kernel, focusing on core kernel functions, major data structures, and algorithms. An indispensable reference for kernel developers, containing useful information for monitoring and optimizing Solaris systems.

Table of contents :
Core Kernel Components……Page 1
Jim Mauro and Richard McDougall……Page 3
A Prentice Hall Title……Page 4
Acknowledgements……Page 7
About This Book……Page 11
Intended Audience……Page 12
How This Book Is Organized……Page 13
Updates and Related Material……Page 14
Prompt……Page 15
A Note from the Authors……Page 16
1. An Introduction to Solaris 3……Page 17
2. Kernel Services 27……Page 18
4. Kernel Bootstrap and Initialization 103……Page 19
5. Solaris Memory Architecture 125……Page 20
6. Kernel Memory 205……Page 21
7. Memory Monitoring 235……Page 22
8. The Solaris Multithreaded Process Architecture 261……Page 23
10. Interprocess Communication 429……Page 24
11. Solaris Files and File I/O 481……Page 25
12. File System Overview 523……Page 26
14. The Unix File System 577……Page 27
15. Solaris File System Cache 601……Page 28
A Sample Procfs utility 641……Page 29
List of Figures……Page 31
List of Tables……Page 37
List of Header Files……Page 41
#……Page 43
An Introduction to Solaris……Page 45
1.1 A Brief History……Page 46
1.2 Key Differentiators……Page 50
1.3 Kernel Overview……Page 52
1.3.1 Solaris Kernel Architecture……Page 53
1.3.2 Modular Implementation……Page 54
Figure 1.2 Core Kernel and Loadable Modules……Page 55
1.4 Processes, Threads, and Scheduling……Page 56
Figure 1.4 Two-Level Thread Model……Page 57
Figure 1.5 Global Thread Priorities……Page 58
1.5.1 Traditional UNIX IPC……Page 59
1.5.4 Advanced Solaris IPC……Page 60
1.7 Memory Management……Page 61
1.7.1 Global Memory Allocation……Page 62
1.8 Files and File Systems……Page 63
1.8.1 File Descriptors and File System Calls……Page 64
1.8.2 The Virtual File System Framework……Page 65
Figure 1.8 VFS/Vnode Architecture……Page 66
Figure 1.9 The Solaris Device Tree……Page 67
2.1 Access to Kernel Services……Page 69
2.2 Entering Kernel Mode……Page 70
2.2.1.2 Virtual Memory Context……Page 71
2.2.2 Threads in Kernel and Interrupt Context……Page 72
2.2.3 UltraSPARC I & II Traps……Page 73
2.2.3.1 UltraSPARC I & II Trap Types……Page 74
2.2.3.2 UltraSPARC I & II Trap Priority Levels……Page 75
2.2.3.4 UltraSPARC I & II Trap Table Layout……Page 76
2.2.3.5 Software Traps……Page 77
2.2.3.6 A Utility for Trap Analysis……Page 78
Figure 2.4 Solaris Interrupt Priority Levels……Page 80
2.3.1.1 Interrupts as Threads……Page 81
Figure 2.5 Handling Interrupts with Threads……Page 82
2.3.1.3 High-Priority Interrupts……Page 83
2.3.2 Interrupt Monitoring……Page 84
2.3.3 Interprocessor Interrupts and Cross-Calls……Page 85
Figure 2.8 The Kernel System Call Entry (sysent) Table……Page 86
Figure 2.9 System Call Execution……Page 87
2.4.2 Fast Trap System Calls……Page 88
2.5.1 Solaris 2.6 and 7 Callout Tables……Page 89
Figure 2.10 Solaris 2.6 and Solaris 7 Callout Tables……Page 90
2.5.2 Solaris 2.5.1 Callout Tables……Page 93
Figure 2.11 Solaris 2.5.1 Callout Tables……Page 94
2.6 The System Clock……Page 96
2.6.1 Process Execution Time Statistics……Page 97
2.6.2 High-Resolution Clock Interrupts……Page 98
2.6.4 Time-of-Day Clock……Page 99
Figure 2.12 Time-of-Day Clock on SPARC Systems……Page 100
3.1 Synchronization……Page 101
3.2 Parallel Systems Architectures……Page 102
Figure 3.1 Parallel Systems Architectures……Page 104
3.3 Hardware Considerations for Locks and Synchronization……Page 105
Figure 3.2 Atomic Instructions for Locks on SPARC……Page 107
Figure 3.3 Hardware Data Hierarchy……Page 108
3.4 Introduction to Synchronization Objects……Page 110
3.4.1 Synchronization Process……Page 111
3.4.2 Synchronization Object Operations Vector……Page 112
3.5 Mutex Locks……Page 113
3.5.1 Overview……Page 114
Figure 3.5 Solaris 7 Adaptive and Spin Mutex……Page 116
3.5.2.1 Solaris 2.6 Mutex Implementation Differences……Page 120
3.5.2.2 Solaris 2.5.1 Mutex Implementation Differences……Page 121
Figure 3.8 Solaris 2.5.1 Mutex Operations Vectoring……Page 122
3.5.2.3 Why the Mutex Changes in Solaris 7……Page 123
3.6 Reader/Writer Locks……Page 124
Figure 3.9 Solaris 7 Reader/Writer Lock……Page 125
Figure 3.11 Solaris 2.5.1 RW Lock Structure……Page 128
3.7 Turnstiles and Priority Inheritance……Page 131
3.7.1 Solaris 7 Turnstiles……Page 132
Figure 3.12 Solaris 7 Turnstiles……Page 133
Figure 3.13 Solaris 2.5.1 and Solaris 2.6 Turnstiles……Page 135
Figure 3.14 Solaris 2.5.1 and 2.6 Turnstiles……Page 136
3.8 Dispatcher Locks……Page 139
Figure 3.15 Kernel Semaphore……Page 141
Figure 3.16 Sleep Queues in Solaris 2.5.1, 2.6, and 7……Page 143
4.1 Kernel Directory Hierarchy……Page 145
Figure 4.1 Core Kernel Directory Hierarchy……Page 147
4.2.1 Loading the Bootblock……Page 149
4.2.2 Loading ufsboot……Page 150
4.2.4 Loading Kernel Modules……Page 151
4.2.5 Creating Kernel Structures, Resources, and Components……Page 152
4.2.6 Completing the Boot Process……Page 156
4.2.7 During the Boot Process: Creating System Kernel Threads……Page 157
4. Perform the module-type-specific install function…….Page 158
Figure 4.4 Loading a Kernel Module……Page 159
2. Enter the kernel runtime linker, krtld, to create address space segments and bindings, and loa………Page 160
5. Execute the module’s mod_install function indirectly by looking up the module _init() routine ………Page 161
Figure 4.6 Module Operations Function Vectoring……Page 163
#……Page 165
5.1 Why Have a Virtual Memory System?……Page 167
Figure 5.1 Solaris Virtual-to-Physical Memory Management……Page 169
5.2 Modular Implementation……Page 170
5.3 Virtual Address Spaces……Page 172
Figure 5.3 Process Virtual Address Space……Page 173
5.3.2 SPARC Address Spaces……Page 174
Figure 5.4 SPARC 32-Bit Shared Kernel/Process Address Space……Page 175
5.3.4 Process Memory Allocation……Page 176
Figure 5.6 Intel x86 Process Address Space……Page 177
5.3.5 The Stack……Page 178
Figure 5.7 The Address Space……Page 179
5.3.8 Page Faults in Address Spaces……Page 182
3. The address space as_fault() routine compares the address of the fault with the addresses mapp………Page 184
5.4 Memory Segments……Page 185
Figure 5.9 Segment Interface……Page 186
5.4.1.1 Memory Mapped Files……Page 189
Figure 5.10 The seg_vn Segment Driver Vnode Relationship……Page 191
5.4.1.2 Shared Mapped Files……Page 192
Figure 5.11 Shared Mapped Files……Page 193
5.4.3 Page Protection and Advice……Page 194
5.5 Anonymous Memory……Page 195
Figure 5.12 Anonymous Memory Data Structures……Page 196
5.5.1 The Anonymous Memory Layer……Page 197
5.5.2 The swapfs Layer……Page 198
5.5.2.1 Swap Allocation……Page 199
5.5.2.2 swapfs Implementation……Page 201
Figure 5.13 Anon Slot Initialized to Virtual Swap Before Page-out……Page 202
5.5.3 Anonymous Memory Accounting……Page 203
Figure 5.15 Swap Allocation States……Page 205
5.6 Virtual Memory Watchpoints……Page 206
5.7.1 Pages—The Basic Unit of Solaris Memory……Page 209
5.7.2 The Page Hash List……Page 210
5.7.3 MMU-Specific Page Structures……Page 211
5.7.4 Physical Page Lists……Page 212
5.7.4.1 Free List and Cache List……Page 213
5.7.5 The Page-Level Interfaces……Page 214
5.7.7 Page Sizes……Page 215
5.7.8 Page Coloring……Page 216
Figure 5.21 Physical Page Mapping into a 64-Kbyte Physical Cache……Page 217
5.8 The Page Scanner……Page 220
5.8.1 Page Scanner Operation……Page 221
5.8.2.1 Scan Rate Parameters (Assuming No Priority Paging)……Page 222
Figure 5.23 Page Scanner Rate, Interpolated by Number of Free Pages……Page 223
5.8.2.2 Not Recently Used Time……Page 224
5.8.4 The Priority Paging Algorithm……Page 225
5.8.4.1 Page Scanner CPU Utilization Clamp……Page 227
5.8.4.3 Summary of Page Scanner Parameters……Page 228
5.8.5 Page Scanner Implementation……Page 229
Figure 5.25 Page Scanner Architecture……Page 230
5.8.6.1 Soft Swapping……Page 231
Figure 5.26 Role of the HAT Layer in Virtual-to-Physical Translation……Page 232
5.9.1 Virtual Memory Contexts and Address Spaces……Page 234
5.9.2 The UltraSPARC-I and -II HAT……Page 235
Figure 5.27 UltraSPARC-I and -II MMUs……Page 236
Figure 5.28 Virtual-to-Physical Translation……Page 237
Figure 5.29 UltraSPARC-I and -II Translation Table Entry (TTE)……Page 238
4. If the TTE is not found in the TSB, then the TLB miss handler jumps to a more complex, but slo………Page 239
5.9.3 Address Space Identifiers……Page 240
5.9.3.2 UltraSPARC-I and -II Protection Modes……Page 241
5.9.4 Large Pages……Page 242
5.9.4.1 TLB Performance and Large Pages……Page 243
5.9.4.2 Solaris Support for Large Pages……Page 244
6.1 Kernel Virtual Memory Layout……Page 247
6.1.1 Kernel Address Space……Page 248
Figure 6.1 Solaris 7 64-Bit Kernel Virtual Address Space……Page 249
6.1.3 Virtual Memory Data Structures……Page 250
6.1.5 Loadable Kernel Module Text and Data……Page 251
Figure 6.2 Kernel Address Space……Page 253
6.2 Kernel Memory Allocation……Page 254
6.2.1 The Kernel Map……Page 255
6.2.3 The Kernel Memory Segment Driver……Page 256
6.2.4.1 Slab Allocator Overview……Page 259
Figure 6.4 Objects, Caches, Slabs, and Pages of Memory……Page 261
6.2.4.2 Object Caching……Page 262
6.2.4.4 Slab Allocator Implementation……Page 265
Figure 6.5 Slab Allocator Internal Implementation……Page 266
6.2.4.6 The Depot Layer……Page 267
6.2.4.7 The Global (Slab) Layer……Page 268
6.2.4.8 Slab Cache Parameters……Page 269
6.2.4.9 Slab Allocator Statistics……Page 271
6.2.4.10 Slab Allocator Tracing……Page 273
7.1 A Quick Introduction to Memory Monitoring……Page 277
7.1.4 File System Caching Memory……Page 278
7.1.5 Memory Shortage Detection……Page 279
7.1.6.2 Physical Swap Space……Page 280
7.2 Memory Monitoring Tools……Page 281
7.3 The vmstat Command……Page 282
7.3.2 Swap Space……Page 283
7.3.4 Process Memory Usage, ps, and the pmap Command……Page 284
Figure 7.1 Process Private and Shared Mappings (/bin/sh Example)……Page 286
7.4 MemTool: Unbundled Memory Tools……Page 287
7.4.2.1 System Memory Summary: prtmem……Page 288
7.4.2.2 File System Cache Memory: memps -m……Page 289
7.4.3 The MemTool GUI……Page 290
Figure 7.2 MemTool GUI: File System Cache Memory……Page 291
7.4.3.2 Process Memory……Page 292
Figure 7.3 MemTool GUI: Process Memory……Page 293
7.4.3.3 Process Matrix……Page 294
7.5.1 The Workspace Monitor Utility: WSM……Page 295
7.5.2 An Extended vmstat Command: memstat……Page 296
#……Page 301
8.1 Introduction to Solaris Processes……Page 303
8.1.1 Architecture of a Process……Page 304
Figure 8.1 Process Execution Environment……Page 305
Figure 8.2 The Multithreaded Process Model……Page 308
8.1.2 Process Image……Page 309
Figure 8.3 ELF Object Views……Page 310
8.2.1 The Process Structure……Page 311
Figure 8.5 The Process Structure and Associated Data Structures……Page 312
Figure 8.6 Process Virtual Address Space……Page 313
Figure 8.7 Process State Diagram……Page 317
Figure 8.8 Process Lineage Pointers……Page 319
Figure 8.9 PID Structure……Page 320
8.2.2 The User Area……Page 323
Figure 8.10 Process Open File Support Structures……Page 326
8.2.3 The Lightweight Process (LWP)……Page 327
8.2.4 The Kernel Thread (kthread)……Page 329
8.3 The Kernel Process Table……Page 332
8.3.1 Process Limits……Page 333
8.4 Process Creation……Page 335
Figure 8.12 Process Creation……Page 336
Figure 8.13 exec Flow……Page 341
Figure 8.14 exec Flow to Object-Specific Routine……Page 342
Figure 8.15 Initial Process Stack Frame……Page 343
8.5 Process Termination……Page 344
4. During an exit, with EXITLWPS set in p_flags, the lwp_exit() function is called to terminate t………Page 346
8.5.2 Deathrow……Page 347
8.6 Procfs — The Process File System……Page 348
8.6.1 Procfs Implementation……Page 351
Figure 8.16 procfs Kernel Process Directory Entries……Page 352
Figure 8.17 procfs Directory Hierarchy……Page 353
Figure 8.18 procfs Data Structures……Page 354
Figure 8.19 procfs File Open……Page 355
Figure 8.20 procfs Interface Layers……Page 357
8.6.2 Process Resource Usage……Page 360
8.6.3 Microstate Accounting……Page 362
8.7 Signals……Page 366
8.7.1 Signal Implementation……Page 372
Figure 8.22 Signal-Related Structures……Page 374
8.7.1.1 Synchronous Signals……Page 381
8.7.1.2 Asynchronous Signals……Page 382
8.8 Sessions and Process Groups……Page 384
Figure 8.24 Process Group Links……Page 386
Figure 8.25 Process and Session Structure Links……Page 388
The Solaris Kernel Dispatcher……Page 391
9.1 Overview……Page 392
Figure 9.1 Global Priority Scheme and Scheduling Classes……Page 393
9.1.1 Scheduling Classes……Page 394
Figure 9.2 Solaris Scheduling Classes and Priorities……Page 396
9.1.2 Dispatch Tables……Page 404
9.2 The Kernel Dispatcher……Page 410
9.2.1 Dispatch Queues……Page 413
Figure 9.5 Solaris Dispatch Queues……Page 416
9.2.2 Thread Priorities……Page 417
Figure 9.6 Setting RT Priorities……Page 419
3. The ts_timeleft value is set on the basis of the allotted time quantum for the priority level…….Page 420
Figure 9.7 Setting a Thread’s Priority Following fork()……Page 421
if (kthread->tsproc.ts_dispwait > ts_dptbl[ts_umdpri].ts_maxwait)……Page 425
Figure 9.8 Priority Adjustment with ts_slpret……Page 426
9.2.3.1 Dispatcher Queue Insertion……Page 430
Figure 9.9 Kernel Thread Queue Insertion……Page 431
9.2.3.2 Thread Preemption……Page 436
9.2.3.3 The Heart of the Dispatcher: swtch()……Page 442
9.3 The Kernel Sleep/Wakeup Facility……Page 446
Figure 9.11 Condition Variable……Page 447
9.3.2 Sleep Queues……Page 449
Figure 9.13 Solaris 2.5.1 and Solaris 2.6 Sleep Queues……Page 450
Figure 9.14 Solaris 7 Sleep Queues……Page 451
9.3.3 The Sleep Process……Page 452
Figure 9.15 Setting a Thread’s Priority in ts_sleep()……Page 454
9.3.4 The Wakeup Mechanism……Page 455
Figure 9.16 Two-Level Threads Model……Page 457
9.4.1 User Thread Activation……Page 458
9.4.2 LWP Pool Activation……Page 459
9.5 Kernel Processor Control and Processor Sets……Page 461
Figure 9.17 CPU Structure and Major Links……Page 463
9.5.1 Processor Control……Page 464
9.5.2 Processor Sets……Page 467
Figure 9.18 Processor Partition (Processor Set) Structures and Links……Page 469
Interprocess Communication……Page 471
10.1.1 Module Creation……Page 472
10.2 System V Shared Memory……Page 475
10.2.1 Shared Memory Kernel Implementation……Page 480
10.2.2 Intimate Shared Memory (ISM)……Page 482
Figure 10.1 Shared Memory: ISM versus Non-ISM……Page 483
10.3 System V Semaphores……Page 486
10.3.1 Semaphore Kernel Resources……Page 487
10.3.2 Kernel Implementation of System V Semaphores……Page 490
10.3.3 Semaphore Operations Inside Solaris……Page 492
10.4 System V Message Queues……Page 493
10.4.1 Kernel Resources for Message Queues……Page 494
Figure 10.2 System V Message Queue Structures……Page 498
10.4.2 Kernel Implementation of Message Queues……Page 499
10.5 POSIX IPC……Page 501
10.5.1 POSIX Shared Memory……Page 503
10.5.2 POSIX Semaphores……Page 504
Figure 10.4 POSIX Named Semaphores……Page 505
10.5.3 POSIX Message Queues……Page 507
Figure 10.5 POSIX Message Queue Structures……Page 508
10.6 Solaris Doors……Page 511
Figure 10.6 Solaris Doors……Page 512
Figure 10.7 Solaris Doors Structures……Page 513
Figure 10.8 door_call() Flow with Shuttle Switching……Page 518
#……Page 521
11.1 Files in Solaris……Page 523
Figure 11.1 File-Related Structures……Page 526
11.1.1 Kernel File Structures……Page 528
11.2 File Application Programming Interfaces (APIs)……Page 530
11.2.1 Standard I/O (stdio)……Page 531
11.2.2 C Runtime File Handles……Page 534
11.3.1 File I/O System Calls……Page 535
11.3.1.2 The read() and write() System Calls……Page 536
11.3.2 File Open Modes and File Descriptor Flags……Page 537
11.3.2.2 Exclusive open……Page 538
11.3.2.3 File Append Flag……Page 539
11.3.2.4 Data Integrity and Synchronization Flags……Page 540
11.3.2.6 The dup System Call……Page 541
11.3.2.7 The pread and pwrite System Calls……Page 543
11.4 Asynchronous I/O……Page 544
11.4.1 File System Asynchronous I/O……Page 545
11.4.2 Kernel Asynchronous I/O……Page 546
Figure 11.3 File Read with read(2)……Page 551
Figure 11.4 Memory Mapped File I/O……Page 552
11.5.1 Mapping Options……Page 553
11.5.1.2 Permission Options……Page 554
11.5.2.1 The MADV_DONTNEED Flag……Page 555
11.5.2.3 The MADV_SEQUENTIAL Flag……Page 557
11.5.2.4 The MADV_RANDOM Flag……Page 558
11.6 64-bit Files in Solaris……Page 559
11.6.2 64-bit File Application Programming Interfaces in Solaris 2.5.1……Page 560
11.6.3 Solaris 2.6: The Large-File OS……Page 561
11.6.3.2 Large-File Compilation Environments……Page 562
11.6.4 File System Support for Large Files……Page 564
12.1 Why Have a File System?……Page 565
12.2 Support for Multiple File System Types……Page 566
12.3 Regular (On-Disk) File Systems……Page 567
12.3.1.1 Block-Based Allocation……Page 568
Figure 12.1 Block- and Extent-Based Allocation……Page 569
12.3.1.3 Extentlike Performance from Block Clustering……Page 570
12.3.2 File System Capacity……Page 571
12.3.3 Variable Block Size Support……Page 572
Figure 12.2 Traditional File Access Scheme……Page 573
12.3.5 File Systems Logging (Journaling)……Page 574
12.3.5.1 Metadata Logging……Page 576
12.3.5.2 Data and Metadata Logging……Page 577
12.3.6 Expanding and Shrinking File Systems……Page 578
12.3.7 Direct I/O……Page 579
12.3.7.3 Summary of File System Features……Page 580
13.1 Solaris File System Framework……Page 583
Figure 13.1 Solaris File System Framework……Page 584
13.2 The vnode……Page 585
Figure 13.2 The Vnode Object……Page 586
13.2.1 vnode Types……Page 587
13.2.2 Vnode Methods……Page 588
13.2.4 Interfaces for Paging vnode Cache……Page 590
13.3 The vfs Object……Page 592
Figure 13.3 The vfs Object……Page 593
13.3.1 The File System Switch Table……Page 594
13.3.2 The Mounted vfs List……Page 596
Figure 13.4 The Mounted vfs List……Page 597
Figure 13.5 The read()/write() vs. mmap() Methods for File I/O……Page 600
13.4.1 Memory Mapped I/O……Page 601
13.4.2 read() and write() System Calls……Page 602
13.4.3 The seg_map Segment……Page 603
13.5 Path-Name Management……Page 607
13.5.3 The vop_readdir() Method……Page 608
13.5.5 The Directory Name Lookup Cache (DNLC)……Page 610
13.5.5.1 DNLC Operation……Page 611
Figure 13.6 Solaris 2.3 Name Cache……Page 612
13.5.5.2 The New Solaris DLNC Algorithm……Page 613
13.5.5.3 DNLC Support Functions……Page 614
13.5.7 Mounting and Unmounting……Page 615
13.6 The File System Flush Daemon……Page 618
14.2.7 UFS Allocation and Parameters……Page 628
14.1 UFS Development History……Page 619
14.2.2 UFS Directories……Page 621
Figure 14.2 Unix Directory Hierarchy……Page 622
14.2.4 UFS Layout……Page 623
14.2.4.1 The Boot Block……Page 624
14.2.4.2 The Superblock……Page 625
Figure 14.5 The UFS inode Format……Page 626
14.2.6 UFS Block Allocation……Page 627
14.3 UFS Implementation……Page 632
Figure 14.6 The UFS File System……Page 633
14.3.1.1 Reading and Writing UFS Blocks……Page 634
14.3.2.1 ufs_read()……Page 635
Figure 14.7 ufs_read()……Page 636
14.3.2.2 ufs_write()……Page 637
Figure 14.8 ufs_write()……Page 638
Figure 14.9 The UFS inode……Page 639
14.3.3.2 Caching Inodes—the Inode Idle List……Page 640
Figure 14.10 UFS Idle Queue……Page 641
14.3.4.2 ufs_readdir()……Page 642
15.1 Introduction to File Caching……Page 643
15.1.1 Solaris Page Cache……Page 644
Figure 15.2 The Solaris Page Cache……Page 645
15.1.2 Block Buffer Cache……Page 646
15.2 Page Cache and Virtual Memory System……Page 647
15.2.1 File System Paging Optimizations……Page 649
15.3 Is All That Paging Bad for My System?……Page 650
15.4 Paging Parameters That Affect File System Performance……Page 653
Figure 15.3 VM Parameters That Affect File Systems……Page 655
15.5.1 UFS Direct I/O……Page 656
15.6 Directory Name Cache……Page 657
15.7.1 UFS Inode Cache Size……Page 659
Figure 15.4 In-Memory Inodes (Referred to as the “Inode Cache”)……Page 660
15.7.2 VxFS Inode Cache……Page 662
A.1 Setting Kernel Parameters……Page 663
A.2 System V IPC – Shared Memory Parameters……Page 664
A.3 Virtual Memory Parameters……Page 666
A.4 File System Parameters……Page 668
A.5 Miscelaneous Parameters……Page 670
A.7 STREAMS Parameters……Page 672
FigureB.1 Kernel Address Space and Segments……Page 675
FigureB.2 Solaris 7 sun4u 64-Bit Kernel Address Space……Page 678
FigureB.3 Solaris 7 sun4u 32-Bit Kernel Address Space……Page 679
FigureB.4 Solaris 7 sun4d 32-Bit Kernel Address Space……Page 680
FigureB.5 Solaris 7 sun4m 32-Bit Kernel Address Space……Page 681
FigureB.6 Solaris 7 x86 32-Bit Kernel Address Space……Page 682
A Sample Procfs utility……Page 683
14. Kleiman, S., Shah, D., Smaalders, B., Programming with Threads, Prentice Hall, SunSoft Press,………Page 689
33. Tanenbaum, A. Operating Systems: Design and Implementation. Prentice Hall, 1987…….Page 690
43. Zaks, Rodney, Programming the Z80, Sybex Computer Books, 1982…….Page 691
A……Page 693
C……Page 694
D……Page 695
F……Page 696
H……Page 697
K……Page 698
L……Page 700
M……Page 701
P……Page 702
S……Page 705
T……Page 709
U……Page 710
V……Page 711
Z……Page 712

Reviews

There are no reviews yet.

Be the first to review “Solaris (TM) Internals Vol 1”
Shopping Cart
Scroll to Top