大家好,我是良許,
熟悉計算機的小伙伴都知道,我們常說的主機三大件分別是主板,CPU,記憶體,可見記憶體在計算機主機中的角色也非同一般,喜歡 DIY 主機的小伙伴對這三大件的了解更是精益求精,
撰寫程序式的小伙伴對于程式的執行程序,也是耳熟能詳了,先從硬碟加載到記憶體,然后 CPU 與記憶體進行資料交換與處理,完成相應的操作(真實執行細節相當復雜),從而實作相應的功能,
但是記憶體的容量非常有限,由于記憶體的造價較高(目前常用的記憶體為雙倍速 SDRAM ),計算機用戶升級記憶體容量也是一筆不小的開支,
那么良許就和大家來討論下計算機的記憶體如果不夠用了, 虛擬記憶體技術的應用,虛擬記憶體的出現,讓機器記憶體不夠的情況得到部分解決,大家需要注意的是有些資料也將虛擬記憶體稱之為交換記憶體,
1. 討論虛擬記憶體前的熱身
我們需要知道的是計算機對記憶體分為物理記憶體與虛擬記憶體(注意虛擬記憶體和虛擬地址空間的區別),物理記憶體就是計算機的實際記憶體大小,由 RAM 芯片組成的,虛擬記憶體則是虛擬出來的、使用磁盤代替記憶體,
2. 虛擬記憶體的作業原理
正如前面所描述的,當系統的物理記憶體不夠用的時候,就需要將物理記憶體中的一部分空間釋放出來,以供當前運行的程式使用,
那些被釋放的空間可能來自一些很長時間沒有什么操作的程式,這些被釋放的空間被臨時保存到交換空間中,等到那些程式要運行時,再從交換空間中恢復保存的資料到記憶體中,
3. Linux 虛擬記憶體的實作方式
Linux 系統實作虛擬記憶體有兩種方法,分別是交換磁區( swap 磁區)和交換檔案,
交換磁區
交換磁區其實就是新建一個磁區,然后將該磁區掛載作為交換空間,方法步驟與傳統的新建磁區一樣,只不過格式化磁區和掛載磁區分別采用 mkswap 和 swapon 命令,
交換檔案
硬碟驅動器中沒有足夠的空間來創建交換磁區,我們就會手動創建一個交換檔案以將 RAM 的非活動內容交換到其中,
4. 理想的交換權重
Linux 允許我們自行設定交換的權重,也就是說我們可以設定交換程序發生的頻率,小伙伴們可以根據需要在0到100之間設定交換的權重,值越小則代表會讓內核盡量少用交換,值越大會使內核更多的去使用交換空間,
交換權重的默認值和建議值為60,有興趣的小伙伴可以具體去學習 swappiness ,這個 Linux 內核引數,這里不做過多的描述了,
5.使用虛擬記憶體的好處
- 它可以輕松地保存那些幾乎不使用而又被占用的 RAM 塊,然后可以將釋放的 RAM 用于容納更多具有更高優先級的程式,
- 防止 RAM 空間用完,無法執行其他程式的局面,
- 虛擬記憶體充當了 RAM 的備份,從而增大了 RAM 的實際空間,
- 在休眠程序中,RAM 的所有內容均寫入交換空間,因此,成功進行休眠,虛擬記憶體是必需的,
- 它提高了系統的整體性能,(在內核引數 swappiness 設定合理的情況下)
6. 結論
在本文中,我們學習了交換記憶體以及它的許多好處,RAM 空間不足時,它將作為 RAM 的擴充進行使用,避免我們的應用程式因記憶體不足而崩潰,
其實,**Swap **的調整對 Linux 服務器,特別是 Web 服務器的性能至關重要,通過調整 Swap,有時可以越過系統性能瓶頸,節省系統升級費用,
公眾號:良許Linux
有識訓?希望老鐵們來個三連擊,給更多的人看到這篇文章
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/6479.html
標籤:Linux
上一篇:secure 審計暴力登陸
下一篇:arm_lowmem_limit
