日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

32M内存 跑linux内核,32位Linux单进程4G内存限制

發布時間:2025/3/20 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 32M内存 跑linux内核,32位Linux单进程4G内存限制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可用下面代碼測試系統能給單進程分配多少用戶態內存:

1 #include

2 #include

3

4 int main(){

5?? int MB = 0;

6?? while(malloc(1 << 20)) ++MB;

7?? printf("Allocated %d MB total.n", MB);

8 }

這段代碼在32位系統上執行,返回3066M;在64位系統上執行,系統最后會變得負載很高,然后內核就把進程kill了。這說明32位系統上單進程是有內存分配限制的,而64位則沒有。

編譯32位linux內核時,打開linux內核的PAE尋址支持,最大支持的內存可以從32位提高到36位(4G->64G),而單進程能分配的內存卻仍然有4G限制。即:對于每個進程,用戶態最多分配3G內存,核心態最多分配1G內存。

那么能不能通過調整內核參數的辦法動態調整,使得32位linux內核支持單進程分配大于4G內存呢?這是個有現實意義的問題。Squid,Mysql,Java等都是單進程應用。而現在的主流服務器,很多都可以可以配置非常高的內存。例如Dell 6850,HP580都能插16G內存,我見過的一款Sun的服務器甚至支持48G內存。這些大內存機器如果跑單進程應用,那么內存就全浪費了。

我查了一些資料,結論是,32位BSD可以動態調整內核參數以支持單進程分配大內存,

32位linux系統是無法解決單進程4G內存限制的。

下面是摘自High Memory in the Linux Kernel里面的一段話:

This is enabled via the PAE (Physical Address Extension) extension of the PentiumPro processors. PAE addresses the 4 GB physical memory limitation and is seen as Intel's answer to AMD 64-bit and AMD x86-64. PAE allows processors to access physical memory up to 64 GB (36 bits of address bus). However, since the virtual address space is just 32 bits wide, each process can't grow beyond 4 GB.

總結

以上是生活随笔為你收集整理的32M内存 跑linux内核,32位Linux单进程4G内存限制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。