久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区

在 4GB 物理內存的機器上,申請 8G 內存會怎么樣?
來源:小林coding    時間:2022-06-08 05:47:45

大家好,我是小林。

早上看到讀者在群里討論這些面試題:

其中,第一個問題「在 4GB 物理內存的機器上,申請 8G 內存會怎么樣?」存在比較大的爭議,有人說會申請失敗,有的人說可以申請成功。

這個問題在沒有前置條件下,就說出答案就是耍流氓。因為在 32 位操作系統和 64 位操作系統場景下,答案是不同的。

另外,我們還要看申請完 8G 內存后會不會被使用,會被使用是一種情況,不會被使用又是另外一種情況了。

所以,我們要分場景討論。

應用程序通過 malloc 函數申請內存的時候,實際上申請的是虛擬內存,此時并不會分配物理內存。

當應用程序讀寫了這塊虛擬內存,CPU 就會去訪問這個虛擬內存, 這時會發現這個虛擬內存沒有映射到物理內存, CPU 就會產生缺頁中斷,進程會從用戶態切換到內核態,并將缺頁中斷交給內核的 Page Fault Handler (缺頁中斷函數)處理。

缺頁中斷處理函數會看是否有空閑的物理內存:

如果有,就直接分配物理內存,并建立虛擬內存與物理內存之間的映射關系。如果沒有空閑的物理內存,那么內核就會開始進行回收內存的工作,如果回收內存工作結束后,空閑的物理內存仍然無法滿足此次物理內存的申請,那么內核就會放最后的大招了觸發 OOM (Out of Memory)機制。

32 位操作系統和 64 位操作系統的虛擬地址空間大小是不同的,在 Linux 操作系統中,虛擬地址空間的內部又被分為內核空間和用戶空間兩部分,如下所示:

通過這里可以看出:

32?位系統的內核空間占用1G?,位于最高處,剩下的3G是用戶空間;64?位系統的內核空間和用戶空間都是128T,分別占據整個內存空間的最高和最低處,剩下的中間部分是未定義的。

現在可以回答這個問題了:在 32 位操作系統、4GB 物理內存的機器上,申請 8GB 內存,會怎么樣?

因為 32 位操作系統,進程最多只能申請 3 GB 大小的虛擬內存空間,所以進程申請 8GB 內存,在申請虛擬內存階段就會失?。ㄎ沂稚蠜]有 32 位操作系統測試,我估計失敗的原因是 OOM)。

在 64 位操作系統、4GB 物理內存的機器上,申請 8G 內存,會怎么樣?

64 位操作系統,進程可以使用 128 TB 大小的虛擬內存空間,所以進程申請 8GB 內存是沒問題的,因為進程申請內存是申請虛擬內存,只要不讀寫這個虛擬內存,操作系統就不會分配物理內存。

我們可以簡單做個測試,我的服務器是 64 位操作系統,但是物理內存只有 2 GB。

現在,我在機器上,申請 4 GB 內存,注意下面代碼只是單純分配了虛擬內存,并沒有使用該虛擬內存:

#include #include #include #include #include int main() { int ret; char* addr[4]; printf("使用cat /proc/%d/maps查看內存分配\n",getpid()); size_t s = 1024 * 1024 * 1024; int i = 0; for(i = 0; i < 4; ++i) { printf("alloc size = %d\n", s); addr[i] = (char*) malloc(s); printf("主線程調用malloc后,申請1gb大小得內存,此內存起始地址:0X%x\n", addr[i]); } getchar(); return 0;}

然后運行這個代碼,可以看到,我的物理內存雖然只有 2GB,但是程序正常分配了 4GB 大小的虛擬內存:

我們可以通過下面這條命令查看進程的虛擬內存大?。?/p>

# ps aux | grep alloc_4gUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 7797 0.0 0.0 4198540 352 pts/1 S+ 16:58 0:00 ./alloc_4g

其中,VSZ 就代表進程使用的虛擬內存大小,RSS 代表進程使用的物理內存大小??梢钥吹?,VSZ 大小為 4198540,也就是 4GB 的虛擬內存。

然后,我們改一下代碼,在申請完虛擬內存后,通過 memset 函數使用這個虛擬內存,看看會發生什么。

#include #include #include #include #include int main() { int ret; char* addr[4]; printf("使用cat /proc/%d/maps查看內存分配\n",getpid()); size_t s = 1024 * 1024 * 1024; int i = 0; for(i = 0; i < 4; ++i) { printf("alloc size = %d\n", s); addr[i] = (char*) malloc(s); printf("主線程調用malloc后,申請1gb大小得內存,此內存起始地址:0X%x\n", addr[i]); //訪問虛擬內存 memset(addr[i], 0, s); } getchar(); return 0;}

運行結果:

可以看到,在申請了 2GB 虛擬內存后,然后馬上使用了這塊虛擬內存,由于這臺機器的物理內存只有 2 GB,所以發生了 OOM。

至此, 驗證完成了。簡單總結下:

在 32 位操作系統,因為進程最大只能申請 3 GB 大小的虛擬內存,所以直接申請 8G 內存,會申請失敗。在 64位 位操作系統,因為進程最大只能申請 128 TB 大小的虛擬內存,即使物理內存只有 4GB,申請 8G 內存也是沒問題,因為申請的內存是虛擬內存,等這塊虛擬內存被訪問了,因為物理空間不夠,就會發生 OOM。

關鍵詞: 虛擬內存 物理內存 操作系統 缺頁中斷 會怎么樣

上一篇:

下一篇:

X 關閉

X 關閉

久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区
欧美午夜视频网站| 亚洲国产精品成人一区二区| 欧美激情久久久| 亚洲日本无吗高清不卡| 欧美影视一区| 在线观看一区二区精品视频| 国产精品成人一区二区三区吃奶| 欧美一区二区三区在线| 亚洲激情小视频| 99热在线精品观看| 国产欧美日韩一区| 国产欧美精品在线播放| 欧美人与性动交a欧美精品| 亚洲欧美日韩中文播放| 国内精品国语自产拍在线观看| 国产乱码精品一区二区三区五月婷| 午夜精品久久久久久久久| 免费视频一区二区三区在线观看| 国内揄拍国内精品少妇国语| 欧美激情第4页| 久久久精品999| 国产精品一区亚洲| 激情欧美一区| 噜噜噜躁狠狠躁狠狠精品视频| 久久女同精品一区二区| 一本大道久久a久久综合婷婷| 99日韩精品| 伊人狠狠色丁香综合尤物| 一本色道久久88精品综合| 午夜免费电影一区在线观看| 国产欧美日韩综合精品二区| 亚洲欧洲av一区二区三区久久| 久久一二三国产| 美国三级日本三级久久99| 性色av一区二区三区| 国产精品视频你懂的| 欧美电影免费观看网站| 亚洲视频在线观看网站| 久久国产精品久久久| 亚洲人精品午夜在线观看| 国产精品都在这里| 狠狠色狠狠色综合系列| 欧美高清在线视频观看不卡| 久久精品在线| 国产精品电影在线观看| 亚洲黄页视频免费观看| 久久婷婷av| 老鸭窝亚洲一区二区三区| 久久美女艺术照精彩视频福利播放| 亚洲欧美激情四射在线日| 欧美伊人精品成人久久综合97| 欧美不卡三区| 国产精品久久精品日日| 在线观看av不卡| 欧美亚洲综合另类| 国产日本亚洲高清| 老司机亚洲精品| 一本色道久久88亚洲综合88| 欧美日韩国产高清视频| 国产精品亚洲视频| 宅男精品导航| 尤物精品国产第一福利三区| 欧美日在线观看| 国产欧美日韩一区二区三区在线观看| 亚洲丁香婷深爱综合| 欧美国产高清| 国产精品第十页| 亚洲欧美日韩第一区| 另类天堂av| 亚洲国产欧美日韩| 亚洲综合日韩| 欧美视频二区36p| 亚洲二区三区四区| 伊人久久噜噜噜躁狠狠躁| 欧美午夜精品一区| 亚洲国产精品电影在线观看| 久久丁香综合五月国产三级网站| 欧美精品日韩www.p站| 一区二区三区免费看| 亚洲欧美国产日韩天堂区| 亚洲图片欧美午夜| 久久躁狠狠躁夜夜爽| 欧美三级网址| 亚洲自拍偷拍网址| 免费美女久久99| 欧美精品一区二区三| 欧美美女bb生活片| 国产亚洲欧美一级| 国产亚洲精品激情久久| 老牛国产精品一区的观看方式| 国产亚洲精品资源在线26u| 国产精品中文在线| 永久域名在线精品| 欧美高清视频在线播放| 好看的av在线不卡观看| 在线视频欧美日韩| 亚洲欧美日韩另类精品一区二区三区| 亚洲影视中文字幕| 亚洲欧洲一区二区在线观看| 99在线热播精品免费| 欧美三级网址| 中日韩午夜理伦电影免费| 国产一区二区三区日韩欧美| 亚洲欧美亚洲| 亚洲字幕在线观看| 校园激情久久| 久久亚洲精品一区二区| 久久久另类综合| 欧美日韩综合在线| 亚洲一区www| 一区二区欧美在线观看| 国外成人在线视频| 国产精品成人一区二区网站软件| 99国产精品99久久久久久粉嫩| 欧美不卡激情三级在线观看| 国产精品久久久久久久久借妻| 国产在线精品一区二区中文| 久久精品国产精品亚洲精品| 精品不卡视频| 亚洲综合日韩中文字幕v在线| 免费成人在线观看视频| 影音先锋久久精品| 欧美a级片一区| 亚洲国产天堂久久综合| 亚洲激情午夜| 欧美午夜www高清视频| 99re热这里只有精品视频| 久久综合网色—综合色88| 国产日韩av高清| 亚洲午夜久久久久久久久电影院| 久久亚洲影院| 亚洲欧美视频在线观看| 性欧美超级视频| 极品裸体白嫩激情啪啪国产精品| 亚洲欧美日韩精品久久久久| 欧美在线日韩| 亚洲日本中文字幕| 欧美在线视频全部完| 亚洲一区二区免费| 久久成人一区二区| 久久精精品视频| 亚洲天堂黄色| 欧美黄色大片网站| 国产精品卡一卡二卡三| 欧美第一黄色网| 欧美大片在线看| 日韩视频在线播放| 欧美freesex交免费视频| 久久久久久久999精品视频| 亚洲精品久久久久久久久| 欧美三级网页| 精品二区久久| 亚洲欧美成人| 亚洲乱码精品一二三四区日韩在线| 久久久精品性| 午夜电影亚洲| 欧美精选在线| 精品电影在线观看| 亚洲国产成人精品女人久久久| 亚洲电影av| 欧美日韩视频专区在线播放| 欧美一区亚洲| 欧美午夜精品一区二区三区| 欧美午夜一区二区三区免费大片| 一区二区三区在线视频免费观看| 国产精品激情av在线播放| 欧美日韩亚洲一区在线观看| 欧美一区二区三区免费看| 亚洲欧美电影院| 在线天堂一区av电影| 国外成人在线视频网站| 国产亚洲女人久久久久毛片| 在线电影国产精品| 日韩网站在线| 蜜桃久久精品乱码一区二区| 在线视频你懂得一区| 亚洲二区精品| 欧美在线免费一级片| 99伊人成综合| 亚洲精品在线免费观看视频| 国产精品嫩草影院av蜜臀| 欧美在线一区二区| 嫩草伊人久久精品少妇av杨幂| 欧美精品综合| 久久精品国产99国产精品| 国产精品亚洲美女av网站| 亚洲精品美女久久7777777| 亚洲国产精品一区二区www| 久久精品一本久久99精品| 亚洲精品视频在线| 欧美午夜激情视频| 国产伦精品一区二区三区免费迷| 久久久综合视频| 欧美一区二区三区四区在线观看地址| 久久色在线播放| 午夜精品在线观看| 久久久久在线观看| 欧美日本高清视频| 中文成人激情娱乐网| 国产色婷婷国产综合在线理论片a|