歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

32位機器的LowMemory


今天在和供應商交流的過程中,被嚴重鄙視了,竟然認為我連“LowMemory”都沒有聽說過。感覺很郁悶,好歹我也搞過一段時間memory Management,怎麼可能連LowMemory都不知道,難道能怪別人發音不標准好不好。 唉,總之還是因為自己對LowMemory了解不深入哪。
何為low memory?說到low memory,不得不說memory zone(內存分區)這個概念。 內存分區,Linux對內存再進行劃分,分為不同的分區。內核以struct zone來描述內存分區。通常一個節點分為DMA、Normal和High Memory內存區。(詳見http://blog.csdn.net/younger_china/article/details/17556055) 在32位CPU下尋址范圍是有限的,Linux內核定義了下面三個區域: (1) DMA內存區:即直接內存訪問分區,通常為物理內存的起始16M。主要是供一些外設使用,外設和內存直接訪問數據訪問,而無需系統CPU的參與; 0x00000000 - 0x00999999 (0 - 16 MB) (2) Normal內存區:從16M到896M內存區;0x01000000 - 0x037999999 (16 - 896 MB) - size: 880MB (3) HighMemory內存區:896M以後的內存區;0x038000000 - <硬件特定>
那麼,到底何為low memory??? LowMem區(也叫NORMAL ZONE)共880MB,並且是固定不能變的(除非使用hugemem內核),對於高負荷的系統,可能因為LowMem使用不好而觸發了OOM Killer機制。因為內存分配是一個連續的區域,在此時,如果LowMem裡存在很多碎片或者LowFree太少,此時無法分配到一塊連續的內存區域,就觸發了OOM Killer。
Copyright © Linux教程網 All Rights Reserved