PrepareMemoryForIO coordinates data transfers between devices and one or more memory ranges in the system, the main processor caches, and other memory facilities. Preparation includes ensuring that physical memory remains assigned to the memory ranges until CheckpointIO relinquishes it. Depending on the I/O direction and data path coherence that are specified, Mac OS manipulates the contents of the processor's caches, if any, and may make parts of physical memory noncacheable.