發表文章

目前顯示的是 三月, 2009的文章

Linux Kernel 記憶體管理機制之美

Linux Kernel 的穩定,有一部份可以歸功於它優良的記憶體管理機制,而探討該機制,有助於瞭解記憶體是如何被 Kernel 所使用,對開發 Linux Driver 的人來說,日後更有許多益處。最重要的是,Linux Kernel 之美是由此開始,優美的設計相當令人著迷。

Linux Kernel 的記憶體管理機制,主要由兩大部份組成:
Buddy SystemSlab Allocator
Buddy System(buddy allocator)

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

可以藉由觀察當前 /proc/buddyinfo ,了解目前的記憶體使用情況,當然,是以 page 為單位:
$ cat /proc/buddyinfo
Node 0, zone DMA 76 71 66 50 33 17 5 1 1 1 0
Node 0, zone Normal 22301 6425 45 0 1 1 1 1 1 1 0
Node 0, zone HighMem 97 13 6 10 3 0 2 0 0 0 0

如果沒有什麼意外,/proc/buddyinfo 列會出了三個 zone ,分別是 DMA、Normal、HighMem,這三種 zone 的分類,是以 Physical Memory 位置的範圍而區分,在 IA-32 架構上 為:DMA (16MB以下)Normal (16MB~896MB)HighMem (896MB以上)不過,由於 Buddy System 是一個很抽象且…

榨乾 X200t 之 Fred's Rhythm 新開張

圖片
為了榨乾 X200t 的價值,就開了一個新地方,來用畫圖寫 Blog。其實,眼尖的人大概在幾天前,就會發現推薦連結區多了一個連結 Fred's rhythm (http://fred-rhythm.blogspot.com/),是的,這就是新的 Blog,有興趣可以來捧捧場。 :P

一有空閒就會隨手塗塗鴨,期望每天都能更新。