導航:首頁 > 編程系統 > linux內存分布

linux內存分布

發布時間:2024-09-07 19:11:54

linux進程內存管理

對於包含MMU的處理器而言,Linux系統提供了復雜的存儲管理系統,使得進程所能訪問的內存達到4GB。在Linux系統中,進程的4GB內存空間被分為兩個部分——用戶空間與內核空間。用戶空間的地址一般分布為0~3GB(即PAGE_OFFSET,在Ox86中它等於OxC0000000),這樣,剩下的3~4GB為內核空間,用戶進程通常只能訪問用戶空間的虛擬地址,不能訪問內核空間的虛擬地址。用戶進程只有通過系統調用(代表用戶進程在內核態執行)等方式才可以訪問到內核空間。
每個進程的用戶空間都是完全獨立、互不相乾的,用戶進程各自有不同的頁表。而內核空間是由內核負責映射,它並不會跟著進程改變,是固定的。內核空間的虛擬地址到物理地址映射是被所有進程共享的,內核的虛擬空間獨立於其他程序
Linux中1GB的內核地址空間又被劃分為物理內存映射區、虛擬內存分配區、高端頁面映射區、專用頁面映射區和系統保留映射區這幾個區域。
對於x86系統而言,一般情況下,物理內存映射區最大長度為896MB,系統的物理內存被順序映射在內核空間的這個區域中。當系統物理內存大於896MB時,超過物理內存映射區的那部分內存稱為高端內存(而未超過物理內存映射區的內存通常被稱為常規內存),內核在存取高端內存時必須將它們映射到高端頁面映射區。Linux保留內核空間最頂部FIXADDR_TOP~4GB的區域作為保留區。
當系統物理內存超過4GB時,必須使用CPU的擴展分頁(PAE)模式所提供的64位頁目錄項才能存取到4GB以上的物理內存,這需要CPU的支持。加入了PAE功能的Intel Pentium Pro及以後的CPU允許內存最大可配置到64GB,它們具備36位物理地址空間定址能力。
由此可見,對於32位的x86而言,在3~4GB之間的內核空間中,從低地址到高地址依次為:物理內存映射區→隔離帶→vmalloc虛擬內存分配器區→隔離帶→高端內存映射區→專用頁面映射區→保留區。

⑵ Linux的內核空間和用戶空間是如何劃分的(以32位系統為例)

Linux將4G的地址劃分為用戶空間和內核空間兩部分。在Linux內核的低版本中(2.0.X),通常0-3G為用戶空間,3G-4G為內核空間。這個分界點是可以可以改動的。
正是這個分界點的存在,限制了Linux可用的最大內存為2G.而且要通過重編內核,調整這個分界點才能達到。實際上還可以有更好的方法來解決這個問題。由於內核空間與用戶空間互不重合,所以可以用段機制提供的保護功能來保護內核級代碼
2.2.X版的內核對此進行了改動。這樣內核空間擴張到了4G。從表面上看內核的基地址變為了0,但實際上,內核通常仍在虛址3G以上。
用戶空間在2.2.X中從直觀上變為0-4G,讓人迷惑,不是可以直接訪問內核了?
其實不然,同過使用頁機制提供的保護,阻止了用戶程序訪問內核空間。

windows是使用的一個開關設置的,一般是1G,設置過開關之後,用花空間就可以達到3G

另外,附上一片文章吧,這個是64位系統上面的。。。希望能給你啟發~~~試著編譯下內核吧!
http://www.linuxidc.com/Linux/2011-03/33764.htm

閱讀全文

與linux內存分布相關的資料

熱點內容
代碼百度地圖web服務api 瀏覽:523
什麼是和平營地app 瀏覽:624
智能ai機器人需要什麼編程 瀏覽:825
可控編程主要技術指標有哪些 瀏覽:271
數據分析回歸需要什麼條件 瀏覽:285
微信小程序按鈕顏色 瀏覽:69
長江大學網課用什麼app 瀏覽:431
華中系統圖紙編程哪個刀好 瀏覽:38
地方債務數據在哪裡查看 瀏覽:932
掃描文件怎麼設置格式 瀏覽:957
蘋果郵箱主機名填什麼 瀏覽:630
多張圖片同一個文件夾 瀏覽:798
win7怎麼打開shs文件 瀏覽:481
怎麼把文件夾做成iso 瀏覽:164
繽客網站上的房價怎麼在哪裡修改 瀏覽:406
單片機c51計數器實驗代碼 瀏覽:990
宏編程滑鼠代表什麼意思 瀏覽:753
別人撿到蘋果6有用嗎 瀏覽:829
word文件用wps打開 瀏覽:477
macbook修改文件格式軟體 瀏覽:757

友情鏈接