1. 程式人生 > >Linux記憶體管理之vmalloc和kmalloc

Linux記憶體管理之vmalloc和kmalloc

vmalloc()函式的工作方式類似於kmalloc(),只不過前者分配的記憶體虛擬地址是連續的,而實體地址則無需連續。這也是使用者空間分配函式的工作方式:由malloc()(這個函式我們後續還會介紹,這也是我們在使用者空間進行開發的時候經常會碰到的一個記憶體分配函式)返回的頁在程序的虛擬地址空間內是連續的,但是,這並不保證它們在物理RAM中也是連續的。kmalloc()函式確保頁在實體地址上是連續的(虛擬地址自然也是連續的)。vmalloc()函式只確保頁在虛擬地址空間內是連續的。它通過分配非連續的實體記憶體塊,再"修正"頁表,把記憶體對映到邏輯地址空間的連續區域中,就能做到這點。