| |
| |
Preface | |
| |
| |
Acknowledgments | |
| |
| |
About the Author | |
| |
| |
| |
Origins of Mac OS X | |
| |
| |
| |
Apple's Quest for the Operating System | |
| |
| |
| |
The NeXT Chapter | |
| |
| |
| |
The Mach Factor | |
| |
| |
| |
Strategies | |
| |
| |
| |
Toward Mac OS X | |
| |
| |
| |
An Overview of Mac OS X | |
| |
| |
| |
Firmware | |
| |
| |
| |
Bootloader | |
| |
| |
| |
Darwin | |
| |
| |
| |
The xnu Kernel | |
| |
| |
| |
A User-Space View of the File System | |
| |
| |
| |
The Runtime Architecture | |
| |
| |
| |
The C Library | |
| |
| |
| |
Bundles and Frameworks | |
| |
| |
| |
Core Services | |
| |
| |
| |
Application Services | |
| |
| |
| |
Application Environments | |
| |
| |
| |
User Interface | |
| |
| |
| |
Programming | |
| |
| |
| |
Security | |
| |
| |
| |
Mac OS X Server | |
| |
| |
| |
Networking | |
| |
| |
| |
Inside an Apple | |
| |
| |
| |
The Power Mac G5 | |
| |
| |
| |
The G5: Lineage and Roadmap | |
| |
| |
| |
The PowerPC 970FX | |
| |
| |
| |
Software Conventions | |
| |
| |
| |
Examples | |
| |
| |
| |
The Firmware and the Bootloader | |
| |
| |
| |
Introduction | |
| |
| |
| |
A Whole New World | |
| |
| |
| |
Power-On Reset | |
| |
| |
| |
Open Firmware | |
| |
| |
| |
Forth | |
| |
| |
| |
The Device Tree | |
| |
| |
| |
Open Firmware Interfaces | |
| |
| |
| |
Programming Examples | |
| |
| |
| |
Firmware Boot Sequence | |
| |
| |
| |
BootX | |
| |
| |
| |
Alternate Booting Scenarios | |
| |
| |
| |
Firmware Security | |
| |
| |
| |
Launching the Kernel | |
| |
| |
| |
The BootCache Optimization | |
| |
| |
| |
The Boot-Time Kernel Arguments | |
| |
| |
| |
The Extensible Firmware Interface | |
| |
| |
| |
Kernel and User-Level Startup | |
| |
| |
| |
Arranging for the Kernel to Execute | |
| |
| |
| |
Low-Level Processor Initialization | |
| |
| |
| |
High-Level Processor Initialization | |
| |
| |
| |
Mach Subsystem Initialization | |
| |
| |
| |
The First Thread | |
| |
| |
| |
I/O Kit Initialization | |
| |
| |
| |
BSD Initialization | |
| |
| |
| |
Launching the First User-Space Program | |
| |
| |
| |
Slave Processors | |
| |
| |
| |
User-Level Startup | |
| |
| |
| |
The xnu Kernel | |
| |
| |
| |
xnu Source | |
| |
| |
| |
Mach | |
| |
| |
| |
A Flavor of the Mach APIs | |
| |
| |
| |
Entering the Kernel | |
| |
| |
| |
Exception Processing | |
| |
| |
| |
System Call Processing | |
| |
| |
| |
System Call Categories | |
| |
| |
| |
Kernel Support for Debugging, Diagnostics, and Tracing | |
| |
| |
| |
Virtual Machine Monitor | |
| |
| |
| |
Compiling the Kernel | |
| |
| |
| |
Processes | |
| |
| |
| |
Processes: From Early UNIC to Mac OS X | |
| |
| |
| |
Mach Abstractions, Data Structures, and APIs | |
| |
| |
| |
Many Threads of a New System | |
| |
| |
| |
Scheduling | |
| |
| |
| |
The execve() System Call | |
| |
| |
| |
Launching Applications | |
| |
| |
| |
Memory | |
| |
| |
| |
Looking Back | |
| |
| |
| |
An Overview of Mac OS X Memory Management | |
| |
| |
| |
Mac VM | |
| |
| |
| |
Resident Memory | |
| |
| |
| |
Virtual Memory Initialization during Bootstrap | |
| |
| |
| |
The Mach VM User-Space Interface | |
| |
| |
| |
Using the Mach VM Interfaces | |
| |
| |
| |
Kernel and User Address Space Layouts | |
| |
| |
| |
Universal Page Lists (UPLs) | |
| |
| |
| |
Unified Buffer Cache (UBC) | |
| |
| |
| |
The Dynamic Pager Program | |
| |
| |
| |
The Update Daemon | |
| |
| |
| |
System Shared Memory | |
| |
| |
| |
Task Working Set Detection and Maintenance | |
| |
| |
| |
Memory Allocation in User Space | |
| |
| |
| |
Memory Allocation in the Kernel | |
| |
| |
| |
Memory-Mapped Files | |
| |
| |
| |
64-bit Computing | |
| |
| |
| |
Interprocess Communication | |
| |
| |
| |
Introduction | |
| |
| |
| |
Mach IPC: An Overview | |
| |
| |
| |
Mach IPC: The Mac OS X Implementation | |
| |
| |
| |
Name and Bootstrap Servers | |
| |
| |
| |
Using Mach IPC | |
| |
| |
| |
MIG | |
| |
| |
| |
Mach Exceptions | |
| |
| |
| |
Signals | |
| |
| |
| |
Pipes | |
| |
| |
| |
Named Pipes (Fifos) | |
| |
| |
| |
File Descriptor Passing | |