2009年6月11日 星期四

linux kernel 記憶體管理機制

Linux Kernel 的穩定,有一部份可以歸功於它優良的記憶體管理機制,而探討該機制,有助於瞭解記憶體是如何被 Kernel 所使用,老師上課時有提到Linux Kernel 的記憶體管理機制,所以我就把他詳細的寫在網誌上,其主要由兩大部份組成:
(1)Buddy System (就如同 大盤商)
(2)Slab Allocator (就如同中盤商)

Buddy System(buddy allocator)如一般的 Operating System Design,Linux Kernel 一樣是以 Page 為記憶體管理的單位,因此設計了一層針對 page(或稱分頁)的管理機制,該機制在 Linux Kernel 裡被稱為『Buddy System (buddy allocator,簡稱 buddy)』,buddy 是 Kernel 最底層的記憶體管理機制,日後所有的記憶體配置,最後都要經過 buddy 才能取得或釋放記憶體。

而且Buddy System是以 page 為單位來計算而不是使用以 1 byte 為單位來配置,所以不當使用 page會造成記憶體的浪費和 fragmentation。

Slab Allocator 用來確保記憶體分頁的配置效率和完整性,它實作了一個 cache 的架構對系統程式下的記憶體需求群組化,以達到管理的目的。一般的程式可以藉由向 Slab 註冊 cache,以得到記憶體的配置。

沒有留言:

張貼留言