內存管理:如何優化計算系統內存
【IT168 技術】從實際部署情況來看,對於大多數計算和存儲而言,所有類型的計算機內存都會有一個上限。在現代計算系統中,內存比其他資源更容易遇到上限,因為操作系統、應用程序和存儲總是需要內存。由於不存在無限的內存,所以內存可能會在某個時候被消耗完,這會導致系統不穩定或數據丟失。
內存不足的問題一直困擾著我們,也由此出現了許多不同的解決辦法與功能,它們通常被歸入內存管理,下面本文將為大家概述內存管理的全部內容。
什麼是內存管理?
內存管理就是要確保有儘可能多的可用內存空間來執行新程序、數據和進程。由於內存會被系統的多個部分使用,內存分配和內存管理可以採用不同的形式。
操作系統——像Microsoft Windows和Linux這樣的操作系統,可以使用物理RAM以及硬碟交換空間來管理總的可用內存池。
編程語言——C編程語言要求開發人員直接管理內存的使用情況,而其他語言,例如Java和C#,則提供自動內存管理。
應用程序——應用程序會消耗和管理內存,但是其內存管理能力常常受到底層語言和操作系統定義的限制。
存儲內存管理——使用新的NVMe存儲驅動器,操作系統可以受益於更快的存儲,從而幫助擴展和支持更持久的內存管理形式。
為了保證有效性,計算機的內存管理功能必須處於硬體和操作系統之間。
打開今日頭條,查看更多圖片Pexels 上的 Fancycrave.com 拍攝的照片
內存管理的工作原理
內存管理就是有限物理資源的分配和優化。內存不是統一的——例如,2GB RAM DIMM並不是作為一個大的空間塊來使用的,而利用內存分配技術就可以將RAM分割為可用的內存緩存塊。
在制定操作系統或應用程序中的內存管理策略時,通常需要了解RAM中可用的物理地址空間並執行內存分配,以正確地放置、移動和刪除內存地址空間中的進程。
內存地址類型
操作系統中的靜態和動態內存分配與不同的內存地址類型有關。從根本上說,內存地址有兩種主要類型:
物理地址——物理地址是系統RAM中的內存位置,被標識為一組數字。
邏輯地址——有時也稱為虛擬內存。邏輯地址是操作系統和應用程序對執行代碼的訪問,作為物理地址空間的抽象。
MMU如何將虛擬地址轉換為物理地址?
計算系統中的內存管理單元(MMU),是將虛擬邏輯地址空間轉換為物理地址的核心硬體組件。MMU通常是一種物理硬體,有時稱為分頁內存管理單元(PMMU)。
MMU將虛擬地址轉換為物理地址的過程稱為虛擬地址轉換,並使用頁面目錄指針表(PDPT)將一種地址類型轉換為另一種地址類型。
該過程直接綁定到頁表分配、將一種地址類型匹配和管理到另一種地址類型。為了加速虛擬地址的轉換,有一種稱為轉換後備緩衝區(TLB)的緩存機制,它也是虛擬地址到物理地址轉換過程的一部分。
內存分配:靜態與動態載入
應用程序和數據可以通過許多不同的方式載入到內存中,其中兩種核心方法是靜態載入和動態載入。
靜態載入——代碼在執行之前被載入到內存中。用於結構化編程語言,包括C。
動態載入——根據需要將代碼載入到內存中。用於面向對象的編程語言,如Java。
內存碎片
在系統中分配內存時,並不是所有可用的內存都以線性方式使用,這可能導致碎片的產生。內存碎片有兩種主要類型——內部和外部。
內部碎片——內存分配給進程或應用程序,但沒有使用,留下未分配或碎片式的內存。
外部碎片——當內存被分配並重新分配時,可能會有很小的內存剩餘空間,留下不適合其他進程的內存漏洞或碎片。
分頁
在邏輯地址空間中,虛擬內存使用分頁進行劃分,這意味著它被劃分為固定的內存單元,稱為頁面。頁面可以有不同的大小,這取決於底層的系統架構和操作系統,頁面表管理的過程可能是複雜的。
分段
系統主存中的內存分段是一個複雜的過程,它引用內存單元中的特定Bit。
系統內存中的每個分段都有自己的地址,以改進優化和內存分配。段寄存器是現代系統處理內存分段的主要機制。
交換
交換是操作系統從存儲設備中聲明附加內存的過程。
交換的工作原理是,操作系統定義一個用作「交換空間」的存儲區域,這是一個存儲空間,當耗盡、釋放和回收物理/虛擬內存空間時,內存進程在這裡存儲和運行。與傳統存儲一起使用交換空間是擴展可用內存的一種相對較次的方法,因為它會帶來物理RAM之間的額外傳輸開銷。此外,傳統的存儲設備的介面運行速度比RAM慢。
然而,隨著速度更快的PCIe SSD的出現,交換作為一種擴展內存的方式正在受到重新審視。PCIe SSD提供了高達16 Gb /s的介面連接速度。相比之下,SATA SSD的最大連接速度為6.0 Gb/s。
為什麼我們需要內存管理?
內存管理是所有現代計算系統的基本要素。隨著虛擬化的不斷使用和優化資源利用率的需要,內存不斷地被分配、刪除、分割、使用和重用。使用內存管理技術,可以減輕內存管理錯誤,從而緩和系統和應用程序的不穩定和故障。
優勢
·最大化程序的內存可用性
·啟用重用和回收未活躍使用的內存
·交換可以幫助擴展可用的物理內存
缺點
·會導致內存資源碎片化
·增加系統操作的複雜性
·帶來潛在的性能延遲
原文作者:Sean Michael Kerner
※五年磨一劍 中興GoldenDB資料庫出征
※5G來了,華為雲「雲+X」系列直播已上線!首期直播千人圍觀
TAG:IT168企業級 |