在Mach的VM中,有一種稱爲wired memory的概念。它指那些:non-pageable,虛擬內存系統不會進行交換或者移動的內存。針對wired memory的調用有:kmem_alloc,kmem_malloc。
參與I/O傳輸的內存必須wired down,以防止硬件正在訪問的數據的物理位置發生變化。在I/O kit中,當用來描述內存的內存描述符爲I/O準備內存(這發生在prepare方法被調用時)時,內存是wired的。
與之對應的概念是pageable的memory,那些頁面是可以被VM系統進行交換和移動的。針對它們的調用有:kmem_alloc_pageable,kmem_alloc_wait。
kmem_free釋放wired memory以及通過kmem_alloc_pageable分配的pageable memory。kmem_free_wakeup釋放kmem_alloc_wait申請的內存並wakeup那些正在通過kmem_alloc_wait申請內存的process。