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 ...