什麼是wired memory

Mac或BSD有一個所謂的wired memory,也不是什麼神祕東西,只是說分派的這類內存,在有效期內是不可以被交換到Disk上去的,以保證對速度等要求較高的處理,可以使用IOMalloc(IOFree)以及kmem_alloc_wired(kmem_free)來分派Wired memory。

在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。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章