人人妻人人澡人人爽人人精品av_精品乱码一区内射人妻无码_老司机午夜福利视频_精品成品国色天香摄像头_99精品福利国产在线导航_野花社区在线观看视频_大地资源在线影视播放_东北高大肥胖丰满熟女_金门瓶马车内剧烈运动

首頁>國內(nèi) > 正文

4G的機器上申請8G的內(nèi)存,是否可以成功?

2023-08-28 10:25:26來源:今日頭條

前言

4G的機器上申請8G的內(nèi)存,是否可以成功?這個問題沒有辦法,是沒有辦法進行回答,這個問題要考慮三個前置條件:


(資料圖片僅供參考)

操作系統(tǒng)是 32 位的,還是 64 位的?

申請完 8G 內(nèi)存后會不會被使用?

操作系統(tǒng)有沒有使用 Swap 機制?

先在這說一下結論:

在 32 位操作系統(tǒng),因為進程最大只能申請 3 GB 大小的虛擬內(nèi)存,所以直接申請 8G 內(nèi)存,會申請失敗。在 64 位操作系統(tǒng),因為進程最大只能申請 128 TB 大小的虛擬內(nèi)存,即使物理內(nèi)存只有 4GB,申請 8G 內(nèi)存也是沒問題,因為申請的內(nèi)存是虛擬內(nèi)存。如果這塊虛擬內(nèi)存被訪問了,要看系統(tǒng)有沒有 Swap 分區(qū):

如果沒有 Swap 分區(qū),因為物理空間不夠,進程會被操作系統(tǒng)殺掉,原因是 OOM(內(nèi)存溢出);

如果有 Swap 分區(qū),即使物理內(nèi)存只有 4GB,程序也能正常使用 8GB 的內(nèi)存,進程可以正常運行;

操作系統(tǒng)是 32 位的,還是 64 位的?

為什么要考慮操作系統(tǒng)是 32 位的,還是 64 位的這個前置條件呢?

我們先來回顧一下之前學習的虛擬內(nèi)存的大小的知識

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

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

缺頁中斷處理函數(shù)會看是否有空閑的物理內(nèi)存:

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

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

通過這里可以看出:

32 位系統(tǒng)的內(nèi)核空間占用 1G,剩下的 3G 是用戶空間;64 位系統(tǒng)的內(nèi)核空間和用戶空間都是 128T,剩下的中間部分是未定義的。32 位系統(tǒng)的場景

因為 32 位操作系統(tǒng),進程最多只能申請 3 GB 大小的虛擬內(nèi)存空間,所以進程申請 8GB 內(nèi)存的話,在申請?zhí)摂M內(nèi)存階段就會失敗。

64 位系統(tǒng)的場景

64 位操作系統(tǒng),進程可以使用 128 TB 大小的虛擬內(nèi)存空間,所以進程申請 8GB 內(nèi)存是沒問題的,因為進程申請內(nèi)存是申請?zhí)摂M內(nèi)存,只要不讀寫這個虛擬內(nèi)存,操作系統(tǒng)就不會分配物理內(nèi)存。

注意:即使 malloc 申請的是虛擬內(nèi)存,只要不去訪問就不會映射到物理內(nèi)存,但是申請?zhí)摂M內(nèi)存的過程中,還是使用到了物理內(nèi)存(比如內(nèi)核保存虛擬內(nèi)存的數(shù)據(jù)結構,也是占用物理內(nèi)存的),如果你的主機是只有 2GB 的物理內(nèi)存的話,大概率會觸發(fā) OOM。

申請后的8G內(nèi)存是否真的被使用

如果沒有被使用,就不用分配物理內(nèi)存,所以64系統(tǒng)的前提下:一定是可以成功的沒有任何問題。

操作系統(tǒng)有沒有使用 Swap 機制?

如果申請的內(nèi)存被使用了,也就意味著要進行物理內(nèi)存的分配了,這個時候就要考慮是否開啟了Swap機制。

Swap機制

在系統(tǒng)的物理內(nèi)存不夠用的時候,把硬盤內(nèi)存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么操作的程序,這些被釋放的空間被臨時保存到Swap分區(qū)中,等到那些程序要運行時,再從Swap分區(qū)中恢復保存的數(shù)據(jù)到內(nèi)存中。

使用 Swap 機制優(yōu)點是,應用程序實際可以使用的內(nèi)存空間將遠遠超過系統(tǒng)的物理內(nèi)存。由于硬盤空間的價格遠比內(nèi)存要低,因此這種方式無疑是經(jīng)濟實惠的。當然,頻繁地讀寫硬盤,會顯著降低操作系統(tǒng)的運行速率,這也是 Swap 的弊端。

關鍵詞:

相關新聞

Copyright 2015-2020   三好網(wǎng)  版權所有 聯(lián)系郵箱:435 22 [email protected]  備案號: 京ICP備2022022245號-21