- Linux使用和管理指南:從云原生到可觀測性
- (奧)邁克爾·豪森布拉斯
- 638字
- 2024-07-25 15:55:51
2.3.2 內存管理
虛擬內存使你的系統看起來好像它有比物理內存更多的內存。事實上,每個進程都有很多(虛擬)內存。它是這樣工作的:物理內存和虛擬內存都被劃分為固定長度的塊,我們稱為頁面。
圖2-3顯示了兩個進程的虛擬地址空間,每個進程都有自己的頁表。這些頁表將進程的虛擬頁映射到主內存(又名R A M)中的物理頁面。

圖2-3:虛擬內存管理概覽
多個虛擬頁可以通過各自的進程級頁表指向同一個物理頁。在某種意義上,這就是內存管理的核心:有效地為每個進程提供其頁面實際存在于RAM中的假象,同時優化地使用現有空間。
每次CPU訪問進程的虛擬頁面時,原則上CPU必須將進程使用的虛擬地址轉換為相應的物理地址。為了加快這一過程(可能是多層的,因此很慢),現代CPU架構支持一種稱為轉換后援緩沖器(TLB)的片上查找(https://oreil.ly/y3xy0)。TLB實際上是一個小緩存,在發生錯誤時,它會導致CPU通過進程頁表計算頁面的物理地址并更新TLB。
傳統上,Linux的默認頁面大小為4KB,但從內核v2.6.3開始,它支持大頁面(https://oreil.ly/7rqLO),以更好地支持現代架構和工作負載。例如,64位Linux允許每個進程使用最多128TB的虛擬地址空間(虛擬是理論上可尋址的內存地址數量),總共大約64TB的物理內存(物理是你機器中的RAM數量)。
好的,這是很多理論信息。讓我們從更實際的角度來看一下。一個非常有用的工具是/proc/meminfo接口,它可以計算出內存相關的信息,比如有多少內存可用:

?列出物理內存(RAM)的詳細信息,這里是4GB。
?列出虛擬內存的詳細信息,這比34TB多一點。
?列出大頁面信息,顯然這里的頁面大小是2MB。
接下來,我們繼續討論下一個內核功能:網絡。
推薦閱讀
- 操作系統實用教程(Linux版)
- Linux運維之道(第3版)
- Windows Server 2019 Cookbook
- Designing Purpose:Built Drones for Ardupilot Pixhawk 2.1
- Implementing Cisco UCS Solutions
- Red Hat Enterprise Linux 8系統管理實戰
- 阿里云數字新基建系列:云原生操作系統Kubernetes
- Extending Bootstrap
- 網絡操作系統教程:Windows Server 2016管理與配置
- 計算機系統:基于x86+Linux平臺
- Linux服務器配置與管理
- Django Project Blueprints
- Windows Vista終極技巧金典
- Heroku Cloud Application Development
- Learn Quantum Computing with Python and IBM Quantum Experience