聊聊虛擬記憶體
大家好,我是良許。
熟悉計算機的小夥伴都知道,我們常說的主機三大件分別是主機板,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學習路線圖,於是我根據自己的經驗,利用業餘時間熬夜肝了一個月,整理了一份電子書。無論你是面試還是自我提升,相信都會對你有幫助!目錄如下:
免費送給大家,只求大家金指給我點個贊!
也希望有小夥伴能加入我,把這份電子書做得更完美!
有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2157/viewspace-2826049/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 實體記憶體和虛擬記憶體記憶體
- 虛擬記憶體筆記記憶體筆記
- Linux 虛擬記憶體Linux記憶體
- 5.虛擬記憶體記憶體
- 虛擬記憶體到實體記憶體(32位)記憶體
- 【Java基礎】實體記憶體&虛擬記憶體Java記憶體
- 虛擬記憶體有什麼用 虛擬記憶體不足怎麼解決記憶體
- 資源供給:記憶體和虛擬記憶體記憶體
- 教你如何擴大電腦的虛擬記憶體? 什麼是虛擬記憶體?記憶體
- 走出虛擬記憶體禁(轉)記憶體
- ORACLE DISCOVERER虛擬記憶體低Oracle記憶體
- 虛擬記憶體(待補充)記憶體
- 記憶體管理兩部曲之虛擬記憶體管理記憶體
- win10怎樣刪虛擬記憶體_Win10虛擬記憶體如何關閉Win10記憶體
- JAVA 虛擬機器可用記憶體Java虛擬機記憶體
- Java虛擬機器學習 - 記憶體調優Java虛擬機機器學習記憶體
- [轉貼]windows的虛擬記憶體Windows記憶體
- HP虛擬機器重分配記憶體虛擬機記憶體
- Linux增加虛擬記憶體方法Linux記憶體
- Ubuntu 新增虛擬記憶體檔案Ubuntu記憶體
- 虛擬記憶體系統——瞭解記憶體的工作原理記憶體
- 資源供給:再談記憶體和虛擬記憶體記憶體
- win10怎麼加虛擬記憶體_win10系統增加虛擬記憶體教程Win10記憶體
- win10虛擬記憶體如何優化_win10怎麼優化虛擬記憶體Win10記憶體優化
- win10虛擬記憶體怎麼設定 win10虛擬記憶體設定方法Win10記憶體
- win10 虛擬記憶體怎麼設定好 win10 虛擬記憶體設定方法Win10記憶體
- win10怎麼調整虛擬記憶體_win10怎麼調虛擬記憶體Win10記憶體
- 怎麼設定虛擬記憶體win10 win10虛擬記憶體如何設定記憶體Win10
- Win10設定虛擬記憶體方法 Win10怎麼設定虛擬記憶體Win10記憶體
- 聊聊 記憶體模型與記憶體序記憶體模型
- win10 8g記憶體虛擬記憶體設定多少合適_win10 8g記憶體怎麼分配虛擬記憶體Win10記憶體
- win10 8g記憶體還需要虛擬記憶體嗎 win10系統8g記憶體怎麼分配虛擬記憶體Win10記憶體
- win10怎麼刪除虛擬記憶體 刪除win10虛擬記憶體的方法Win10記憶體
- win10虛擬記憶體怎麼設定 筆記本win10虛擬記憶體怎麼看Win10記憶體筆記
- 詳細理解Linux虛擬記憶體Linux記憶體
- Linux 虛擬記憶體引數配置Linux記憶體
- 虛擬記憶體的那點事兒記憶體
- 作業系統的虛擬記憶體作業系統記憶體