Summary

In this chapter, we have discussed:

  • Types of memory addresses in use by the kernel. The kernel typically works with virtual addresses both for its own threads as well as those of user space tasks. Physical memory addresses are used between the CPU and memory, as well as hardware devices.
  • The significance of 32-bit and 64-bit memory addressing and modes.
  • How memory allocation is performed across the different kernel subsystems, Mach, BSD, and I/O Kit. In I/O Kit, the preferred mechanism is to use the IOMalloc*() functions or the IOBufferMemoryDescriptor.
  • How the IOMemoryDescriptor and related subclasses are used by many parts of the I/O Kit to manage and describe memory buffers. The IOBufferMemoryDescriptor is one such subclass, which ...

Get OS X and iOS Kernel Programming now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.