2007年12月29日 星期六
Linux Memory Paging - 2
• 3GB的 User Space (0x00000000 - 0xBFFFFFFF)
• 1GB的 Kernel Space (0xC0000000 - 0xFFFFFFFF)
其中,位址0xC0000000以下是各個Process自已獨有的空間
位址0xC0000000以上給Kernel使用的空間則是由所有Process共享
而Kernel Space是直接映射到實體記憶體上,如下圖所示:
故0xC0000000就成為Linux切割記憶體的方式(此例為一比三)
該值被定義成 PAGE_OFFSET,當然這個值是可以調整的
Linux開機時,其Kernel Code會載入實體記憶體位址0x00100000處
即第二個 1MB 的位置,接著是存放Kernel Data的空間
這些被Kernel使用的範圍會標記成 _text 至 _end
在Kernel中,要將Virtual Address轉換成Physical Address時
使用巨集 __pa(x),其實就是將x減掉PAGE_OFFSET
反之,則使用巨集 __va(x),即將x加上PAGE_OFFSET
2007年12月9日 星期日
Linux Memory Paging - 1
事實上,大部份的分頁處理動作是靠硬體來執行的
以 x86為例,定址到 32bits的記憶體(即4GB),有以下幾種機制:
80x86 paging with PAE disabled
2-level paging, 4KB/page, 32-bit linear address to 32-bit physical address
80x86 paging with PAE disabled
1-level paging, 4MB/page, 32-bit linear address to 32-bit physical address
若啟用 PAE(Physical Address Extension) 功能,則可使用 36bits的記憶體空間(即64GB):
80x86 paging with PAE enabled
3-level paging, 4KB/page, 32-bit linear address to 36-bit physical address
80x86 paging with PAE enabled
2-level paging, 2MB/page, 32-bit linear address to 36-bit physical address
Linux 在 2.6.11 之後的核心使用 4-level 的 Paging
此記憶體分頁的模型可以套用在各種處理器上,四層分別為:
• Page Global Directory
• Page Upper Directory
• Page Middle Directory
• Page Table
當記憶體定址空間是 32bits 時,不使用 PUD 及 PMD
如此,便可同時支援 32 及 64 位元的記憶體架構
2.6 Linux paging model
4-level paging, 32/64-bit linear address to 32/64-bit physical address
2.6 Linux paging with PAE disabled
2-level paging, 4KB/page, 32-bit linear address to 32-bit physical address
2.6 Linux paging with PAE enabled
3-level paging, 4KB/page, 32-bit linear address to 36-bit physical address
2.6 Linux paging with PAE enabled
2-level paging, 2MB/page, 32-bit linear address to 36-bit physical address
在 Kernel Source Code 中,Page-Directory 及 Page-Table 是用相同的結構
分別名命為 pgd_t 及 pte_t,定義於 include/asm-i386/page.h
若未使用 PAE,則其大小為 32bits,否則為 64bits
Page-Directory Entry with PAE disabled
4KB/page-table, 32-bit physical address
32bits 的 pgd_t 的欄位格式如下:
//2.6 Linux : Page Global Directory
typedef struct { unsigned long pgd; } pgd_t;
Page-Table Entry with PAE disabled
4KB/page, 32-bit physical address
32bits 的 pte_t 的欄位格式如下:
//2.6 Linux : Page Table Entry
typedef struct { unsigned long pte_low; } pte_t;
Page-Directory Entry with PAE enabled
2MB/page, 32-bit physical address
此時的型態為 64bits 的資料,定義如下:
//2.6 Linux : Page Table Entry
typedef struct { unsigned long pte_low, pte_high; } pte_t;
//2.6 Linux : Page Middle Directory
typedef struct { unsigned long pmd; } pmd_t;
//2.6 Linux : Page Global Directory
typedef struct { unsigned long pgd; } pgd_t;
結論:
Linux 使用 4-level paging 機制來套用到不同的硬體平台,而且可相容於 32/64-bit 的架構
但是,若硬體的 Paging Unit 其分頁方式大於 4-level,Linux 就無法支援
2007年12月8日 星期六
武陵農場 楓葉紅了
進台7甲後,直奔福壽山農場,這裏以松廬配紅楓而聞名
可惜楓葉沒有全紅,但也夠美的了
農場裏有還個 蘋果王,用接枝的方式讓一顆樹生出許多不同品種的蘋果
玩到太陽下山,臨走前跟水果販買了一箱雪梨
老闆說是最後的雪梨了,不想留,全部14顆賣1000元聽說這個價錢超便宜的 ?
然後就到第一天住的民宿 http://www.ssy.idv.tw/
雖然空間小了點,但民宿老闆很熱情,地點就在武陵農場入口旁邊
第二天進武陵農場,今晚就住這了
首先走桃山瀑布,這個步道是一路上坡,來回要3小時
上午去比較好,因為陽光的照射,瀑布會有彩虹
接著到雪山登山口走走、在農場到處逛逛、喝下午茶
這裏的楓葉也紅了大半,晚上還有免費的音樂會--吉他表演
其實武陵農場四季都有看頭,真是個渡假的好地方
在熱門時段想要住在農場裏,記得要提早訂房
第三天就走台14甲,從埔里下山
全部的照片在此 http://picasaweb.google.com/yichung.shen/20071124
2007年11月30日 星期五
Understanding the Linux Kernel
內容是以 linux-2.6.11 這個 kernel 版本為例,下圖是一個 Linux 系統的方塊圖
Linux 的核心大致上就是由這幾塊元件所組成:
從這篇文章開始整理這本書的筆記 ...
2007年7月18日 星期三
2007年2月13日 星期二
06-07 東京跨年 下集
[新年快樂]
[第四天]
首選一定是明治神宮了,這是祭祀明治天皇的神社,全日本人氣指數第一的參拜聖地唷
接著到皇居,也就是日本天皇住的地方,這裏好熱鬧啊
其一是 '二重橋'
還有 '櫻田門'
另一個有名的神社-- 靖國神社,也是一定要去的啦
夜晚到六本木新地標-- Roppongi Hills (六本木之丘) 一遊,附近的街道也裝飾的非常亮麗
[第五天]
離開西武百貨便前往秋葉原,除了百貨公司之外,其他的商店也會推福袋
逛完秋葉原就去下一站-- 銀座與有樂町,前者以名牌店和高級餐廳聞名,後者則有劇場街之稱
[第六天]
-完-
2007年2月8日 星期四
06-07 東京跨年 上集
同時也是第一次到東京旅遊~
[第一天]
住宿選擇類似YH經營方式的 Tokyo International Hostel
地點相當好,就位於JR飯田橋站上
在旅館完成check-in時,已將近下午4:00,冬季時天很快就黑了,立即前往日本橋
其實這座橋都被高架道路給遮住了,在地圖上並不顯眼,橋的一端有個 '日本道路元標' 的紀念碑
沒錯! 這裏可是日本古時道路的起點,三越百貨總店也在這裏唷
接著到東京車站走走,這裏有慶祝聖誕與新年的燈飾活動-- Lightopia 2006
不只是燈光效果,還有配上音樂,倒是有點像我們的元宵節燈會
[第二天]
今天就到新宿、澀谷、原宿、表參道幾個鬧區逛街啦
新宿被JR山手線分成東西兩邊,車站西口是以都廳(市政府)為首的高樓群,東口則有惡名昭章的歌舞伎町
晚上刻意到歌舞伎町繞了兩圈,這裏聚集了很多柏青哥、電動間和怪怪的店
[第三天]
Tokyo International Hostel 雖然便宜又方便,可是有門禁管制,要跨年就要找其他地方過夜了
這幾天的天氣超好,白天若是在高樓上,都能看得到富士山覆蓋著白雪的山頭
-待續-