一個程序最多可以使用多少內存?

在虛擬地址模式下,一個程序可以使用的內存容量跟計算機的物理內存(也就是你的內存條)沒有關係,它由虛擬地址的取值範圍決定。

32位操作系統

在32位操作系統中,程序能使用的最大內存是 4GB,也就是2的32次方。即使你的電腦安裝的是16G的內存條也沒用,剩下的12G只能空閒着。

讓你買那麼大的內存,浪費了吧!
在這裏插入圖片描述

64位操作系統

在64位操作系統中,理論上能夠訪問的虛擬地址的範圍是 2^64。

這是一個很大的值,幾乎是無限的,就目前的技術來講,不但物理內存不可能做到這麼大,CPU的尋址能力也沒有這麼大,實現64位長的虛擬地址只會增加系統的複雜度,帶不來任何好處。

Windows 和 Linux 都對虛擬地址進行了限制,僅使用虛擬地址的低48位(6個字節),總的虛擬地址大小爲 2^48 = 256TB。

256TB也太大了吧,量子計算機時代纔會用這麼多內存吧!
在這裏插入圖片描述

操作系統還要佔用內存

操作系統也是一個程序,而且是其他程序的領導,要時刻管理其他程序,誰不聽話就懲罰他,讓他崩潰。

反之,普通程序也需要操作系統的幫助,尤其是在訪問硬件時,例如分配內存、打開硬盤上的文件、在屏幕上繪畫等。

操作系統和普通程序既相愛又相恨。
在這裏插入圖片描述
爲了達到又愛又恨的目的,操作系統也要佔用一部分內存。

32位的Windows默認佔用4GB中的2GB,程序只能使用剩下的2GB。

32位的Linux默認佔用4GB中的1GB,程序只能使用剩下的3GB。

64位的Windows默認佔用256TB中的248TB,程序只能使用剩下的8TB。

64位的Linux默認佔用256TB中的128TB,程序只能使用剩下的128TB。

當然,操作系統佔用的內存是可以通過設置來更改的。

總起來說,程序能使用多大的內存由操作系統決定,不同的操作系統、不同的位數都會不一樣。

現在我們使用的操作系統大都是64位的了,內存已經足夠使用了,所以如果你不缺銀子,就使勁升級內存吧,多多益善,不會浪費的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章