Synopses & Reviews
OS X and iOS Kernel Programming combines essential operating system and kernel architecture knowledge with a highly practical approach that will help you write effective kernel-level code. You?ll learn fundamental concepts such as memory management and thread synchronization, as well as the I/O Kit framework. You?ll also learn how to write your own kernel-level extensions, such as device drivers for USB and Thunderbolt devices, including networking, storage and audio drivers. OS X and iOS Kernel Programming provides an incisive and complete introduction to the XNU kernel, which runs iPhones, iPads, iPods, and Mac OS X servers and clients. Then, you?ll expand your horizons to examine Mac OS X and iOS system architecture. Understanding Apple's operating systems will allow you to write efficient device drivers, such as those covered in the book, using I/O Kit. With OS X and iOS Kernel Programming, you?ll: Discover classical kernel architecture topics such as memory management and thread synchronization Become well-versed in the intricacies of the kernel development process by applying kernel debugging and profiling tools Learn how to deploy your kernel-level projects and how to successfully package them Write code that interacts with hardware devices Examine easy to understand example code that can also be used in your own projects Create network filters
Whether you?re a hobbyist, student, or professional engineer, turn to OS X andiOS Kernel Programming and find the knowledge you need to start developing What you?ll learn OS X and iOS common core architecture How to write extremely efficient code by exploiting kernel details Coding kernel-level extensions How to write device drivers How to program the I/O Kit framework Key mobile device topics like power management drivers and video capture modules To understand OS X memory management and threads To parse kernel debug messages and package projects ready for deployment Who this book is for
This book is suited for Intermediate and advanced iPhone and OS X programmers ready for the next step Kernel-level programmers interested in how OS X and iOS function Open source programmers with a background in Linux or BSD, OS X and iOS Programmers interested in application performance System administrators running OS X clusters Table of Contents Operating System Fundamentals Mac OS X and iOS Xcode and the Kernel Development Environment The I/O Kit Framework Interacting with Drivers from Applications Memory Management Synchronisation and Threading USB Drivers PCI and Thunderbolt Power Management Serial Port Drivers Core Audio Network Drivers Storage Drivers and Filesystems User-Space Drivers Debugging and Profiling Advanced Kernel Programming Deployment
For many programmers, a kernel just exists. A kernel's internals becomes important to their everyday lives when they need to speed up an application, analyze large amounts of data, or write a sophisticated GUI. In the case of OS X and iOS, most application programmers would profit from an understanding of the kernel, since the design and structure of OS X and its mobile descendants is such that a programmer can tailor applications to the way the kernel manages systems resources. Being able to partition the kernel in your mind and understand the workings of what is called the Mach kernel that actually runs OS X permits sophisticated design decisions and informed system architecture.
The layers of OS X have been around for longer than OS X itself, and they were folded into and tuned to the amazing experience OS X provides. Jonathan Levine starts off by explaining the evolution of OS X, which is vital if we are to understand the components of Apple's operating systems and their purpose. He then proceeds to delve into the core of Mac OS X, throwing light on what's going on under the surface of the Mac or the iPhone. This helps to explain the boot-up sequence, which should be of interest to system administrators and serious users alike.
The reader then learns why the kernel and its layers work so well on the Mac by making clear what the different layers actually do. Filesystems and the networking stack make direct use of OS X architectural components, thereby clearly demonstrating the logic of OS X and iOS design. This is vital information for system administrators and system architects.
Finally, programmers learn to write kernel extensions. This is perhaps what C programmers will be most interested in, and what any Cocoa programmer needs to know. System administrators and system architects will also profit from insight into the actual workings of independently coded OS X components.
What you'll learn Learn OS X and kernel boot-up sequence Distinguish the roles of different OS X and iOS layers Influence OS X kernel behavior Start writing kernel extensions Gain a clear appreciation of OS X filesystems Who this book is for
OS X system administrators will need this book in their arsenal, but system architects and programmers will strongly benefit from a clear understanding of the architecture of OS X and iOS. Application programmers interested in highly performant applications running on OS X or iOS directly should be interested as well.