虛擬記憶體:解密安卓系統中的神秘力量
你知道嗎?虛擬記憶體是一種在所有現代作業系統中,包括安卓在內的基本概念。它經常被誤解為一個把用戶們欺騙成以更大的RAM來裝備手機的技巧。即使是最強大的和最好的移動電話,今天仍然使用虛擬記憶體。
你可能曾經聽到過一些市場上的噱頭詞語,如虛擬RAM或RAM Plus,它們會讓人誤解成虛擬記憶體是一個額外功能,而不是作業系統管理記憶體的標準方法。了解安卓系統中的虛擬記憶體是如何運作,對於理解手機中記憶體的管理以及在重負荷情況下它們的表現有著深入的洞察。
你可能經常聽到有人說:「我的手機只有8GB的RAM,但是我可以使用16GB的虛擬RAM。」你是否曾經想過虛擬記憶體到底是什麼呢?它是一種怎樣的技術?這些問題將在本文中得到解答。讓我們一起進入虛擬記憶體的世界,了解它的運作原理和在安卓系統中的應用。
虚擬記憶體的簡史
虛擬記憶體的概念在 1959 年於曼徹斯特大學電腦實驗室中被引入,是由 Ferranti Computers 和 Plessey 的聯合項目的一部分。它是 Atlas 電腦系統的一部分,這是當時世界上最快的計算機,主要是因為它開發了記憶體管理系統而聞名。
那個時候,我們必須將資料從電腦的主記憶體(RAM)轉移到其次存儲設備(硬盤等)的過程需要程序員編寫轉移指令。這可能非常耗時和令人沮喪,因為電腦無法在此過程中執行其他任務。
虛擬記憶體引入了一種記憶體管理系統,可以自動化許多這個過程。它允許程序員編寫應用程式,好像它們有訪問到電腦全部主記憶體的權限,而不必關心它們如何分配。這是通過將虛擬記憶地址儲存在主記憶體中,用系統控制來將其映射到實際的物理地址。
當虛擬地址需要轉移到物理記憶體時,會透過系統控制進行。這可以被視為第一個作業系統之一。在 Android 中,內核負責處理像這樣的基本系統任務。
相關連結
您的手機或平板電腦核心中的所有東西
它是任何設備中最重要的一部分
虛擬記憶體的秘密:圖書館上的對比
想象一下,你正在一個圖書館裡,坐在一張桌子前進行研究。你只能在桌面上放多少本書,但整個圖書館都滿是書籍,所有資源就在你眼前。桌面和你能夠輕鬆取用的書籍,就像你的裝置的RAM一樣,代表著可用資料,當你需要它時,可以快速取得。
你知道圖書館裡還有許多書籍,儘管不知道它們在哪個樓層或書架,但這些書籍包含了你需要的資訊。你必須決定要從桌面上拿下什麼書,以便放置新的書籍,即使那些書還未完成引用。這個過程很耗時且令人沮喪,尤其是如果你需要重複取用相同的書籍。
虛擬記憶體:圖書館裡的助理
虛擬記憶體就像你的個人書架(硬碟或SSD儲存),緊鄰桌面,並且有個會幫你拿書的圖書館助理。取而代之的是,你不必把書放回它原來的書架,而是可以放在你的個人書架上,這樣就更容易取得。
當你需要一本書時,只要問,助理便會將其帶到桌前,如果你桌面上的空間不足,就會把另一本書移到你的個人書架上。圖書館助理總是在知道你的個人書架上的哪些書,還可以從圖書館其他地方拿取你需要的書籍。這一切都在背後進行,因此你可以專注於研究而不受干擾。
虛擬記憶體讓你的裝置能夠將它們看起來足夠空間的記憶體分配給不同的程序或應用程式,這樣就能讓多個程序同時運行,並且還能取得所需的資源。這使得你的裝置更有效率,能夠處理更多任務,從而提高整體工作效率。
然而,有一個問題:在圖書館裡,你只能看見你桌面上的書籍,而不是圖書館里所有的書籍。在虛擬記憶體中,這個問題就變成了記憶體中的空間不足。當你的裝置需要更多資源時,它必須將一些資源從RAM移到硬碟或SSD儲存上,等到它再次被引用時,才會把它重新取回RAM。
這樣一來,虛擬記憶體的助理就成了圖書館裡的一個神奇角色,幫助你的裝置在記憶體中分配資源,並讓你能夠輕鬆地取得需要的資源。
這個神奇的解決方案是如何出現的?
要了解這個問題的答案,需要了解曼徹斯特大學的一個團隊對記憶體“地址”的概念做出的變革。這個想法被稱為one-level storage,也就是我們現在所知的虛擬記憶體(virtual memory)。它讓程式設計師們有了錯覺——好像他們有大量的主記憶體(RAM)在手上,儘管實際上電腦的主記憶體其實不夠大。
這個想法的核心是“地址”和“物理位置”的區別。回到我們之前提到的圖書館比喻:想像一下,你把書放在桌子上的某個地方,這裡就是你的地址。在傳統意義上,這個地址與桌子的物理空間相關聯。如果你的桌子已經滿了,物理上你就無法在那裡放下另一本書。
但是,如果有虛擬記憶體的話,地址的概念就會改變了。你的地址(桌子上的某個地方)可以指向圖書館中的任何一本書,不管它實際上存放在哪裡。這就好像圖書館助理記得每本書都在哪裡,可以將它拿到你的桌子上時,你不用知道或關心它的物理位置。
這種想法可能聽起來很神奇,但其實對程式設計師們而言,這是一個極大的改進。因為在傳統記憶體中,如果主記憶體已經滿了,程式就會停下來等待更多的記憶體空間。但是,虛擬記憶體讓這種情況變得不再重要了,因為電腦可以將需要的資料從硬碟或其他地方載入到主記憶體中。
Android 虛擬記憶體:如何運作?
虛擬記憶體在 Android 上運作的方式就像我們之前提到的圖書館 analogy 一樣。然而,在一款手機操作系統中,它涉及複雜的軟體和硬體機制來管理記憶體以達到高效。
在 Android 上,與其他操作系統相同,一個記憶體地址是用來讓應用程式參考記憶體位置的。由於虛擬記憶體, 這些地址不需要對應物理位置在裝置的 RAM 中。相反地,Android 使用虛擬記憶體為每個應用程式提供一個大型連續的記憶體區塊的幻覺。這樣做是透過利用額外的 secondary storage 空間。
這使得 Android 上的應用程式能夠分離彼此,提供了另一個安全層次,並防止一個應用程式干擾另一個應用的記憶體。它還簡化了開發過程,因為開發人員不需要擔心物理記憶體限制,並且不需要自己編寫記憶體管理代碼。操作系統會幫助他們處理這一點。
相關內容
Android 15 可能有助於應用程式加載網頁更快速
對 WebView 的變化將會使得瀏覽器的速度增加
虛擬記憶體的術語和流程
頁面
當我們談到虛擬記憶體時,系統會將分配給應用程式的虛擬地址空間切割成稱為頁面的區塊。這些頁面的數值在整個虛擬地址空間中是唯一的。
每個應用程式都有一個自己的頁面表,這個表格會將虛擬頁面對應到物理記憶體中的實際頁面。當我們需要存取記憶體資料時,內部控制單元(MMU)會利用這個表格來翻譯虛擬地址到實際的物理地址。
較換
Android裝置通常避免傳統的交換,因為它會導致性能下降。然而,它們可以使用名為zRAM的壓縮式交換空間,這些空間儲存在物理記憶體中。這樣做的好處是,可以增加可用的記憶體空間,但缺點是,當需要存取壓縮資料時,必須先解壓縮才可存取。
低記憶體殺手(LMK)
Android使用LMK來比傳統桌面或筆記型電腦系統更具攻擊性的管理記憶體。當記憶體不足時,LMK會終止背景程序以釋放RAM給活躍的應用程式。
流程指南
- LMK會根據各個程序的優先順序來決定哪些程序可以被終止。
- 當LMK終止程序後,它會將該程序的記憶體空間釋放給其他需要它的程序使用。
- 這樣做的好處是,可以最大限度地增加可用的記憶體空間,但缺點是,如果LMK終止了錯誤的程序,可能會導致應用程式崩潰。
虛擬記憶體在Android上的益處:安全隔離與高效記憶體利用
安全隔离:每個應用程式都有一個自己的沙盒記憶體環境和虛擬記憶體空間,實現了各個應用程式之間的隔离。這種隔离使得一個應用程式無法訪問另一個應用程式的記憶體,從而增強了安全性並防止了性能干擾。
高效記憶體利用:虛擬記憶體讓Android可以同時跑更多應用程式,由於它能夠高效地管理可用的物理記憶體。應用程式可以在背景下保持開啟,只允許運行必要的背景程序。未使用的頁面可以壓縮或交換出來,以便為目前或更重要任務腾出空間。
虛擬記憶體的好處不止於此
要了解更多關於虛擬記憶體在Android上的益處,讓我們深入探索這個話題。接下來,我們將會看一看虛擬記憶體如何幫助 Android 運行更流暢的應用程式,以及它如何提高整體系統的穩定性和安全性。
將您的設備提升至下一個層次
在這個文章中,我們將會教您如何充分利用虛擬記憶體來增強您的Android裝置。了解虛擬記憶體的基本原理和運作方式,將有助於您更好地管理應用程式的使用和記憶體分配。這樣,您就能夠盡情享受Android的各種功能,而不必擔心設備的性能會受到影響。
在虛擬記憶體的世界中探索更多
在接下來的章節中,我們將會深入地探討虛擬記憶體的應用和好處。您將學到如何最大化虛擬記憶體的效率,從而改善您的Android使用經驗。一起進去吧!
虛擬記憶體的表現考量
虛擬記憶體的優點也有缺點
你可能已經聽說過虛擬記憶體對系統性能的影響。雖然它提供了許多好處,但也有一些表現上的限制。
頁錯誤
有時候,應用程式會要求存取一個虛擬頁,但是這個虛擬頁沒有被映射到實體頁。這種情況下,就會發生頁錯誤。操作系統必須從zRAM或儲存設備中讀取資料,這可能會導致延遲。
記憶體壓縮
zRAM幫助增加了實體記憶體的有效容量,但也會引入延遲,因為資料需要被壓縮和解壓縮。
程序終止
Low Memory Killer的激進記憶體管理可能會導致後台程序提前結束,影響使用者在切換應用程式時的體驗,因為那些程序需要從頭重新啟動。
適應性記憶體政策
實現智慧的記憶體管理政策,這些政策會根據當前的系統使用和工作負載進行動態調整,最佳化性能和資源利用率。
這些快的SSD驅動器還需要虛擬記憶體嗎?
你有沒有覺得,隨著超快速的SSD驅動器和新型儲存技術的出現,虛擬記憶體的重要性不再需要?其實,不管是Android或其他系統,虛擬記憶體仍然是一項重要的功能。當你將快的SSD驅動器與傳統的RAM結合起來時,它們比慢速的硬碟還要快,但是RAM卻遠比SSD驅動器更快。
快速的SSD驅動器可以減少 secondary storage 存取時間的延遲,但它們並不能完全不需要虛擬記憶體。當發生頁面錯誤(page fault)時,它們可以減少從 secondary storage 取得資料所需的時間。這種情況下,系統性能會有所改善,但是它仍然無法取代虛擬記憶體的需求。
快速的 secondary storage 還能夠增加交換存儲(swap performance),使系統變得更加響應,而當系統需要為RAM釋放資源時,它可以將較不重要的程序轉移到SSD驅動器上。這樣一來,系統就可以更快速地完成工作。
你的安卓的最佳配置:虚拟內存的秘密
如果你在網路上搜索關於Android上的虛擬記憶體,你一定會遇到有人建議你限制你的裝置可以使用的虛擬記憶體,或是在某些情況下,關閉它。對大多數用戶來說,讓虛擬記憶體保持啟動是最佳選擇,除非製造商有問題在實現虛擬記憶體,如三星的RAM Plus。即使這些問題都會被解決。關閉Ram Plus應該被視為暫時方案。
虛擬記憶體背後的概念已經存在超過半個世紀了,現代實現是為了優化性能和多窗口操作、增強安全性和穩定性以及提供給開發人員一個簡單的編程模型而設計。虛擬記憶體確保了主要記憶體資源的高效使用,而快速的固態硬盤則減少了對次級儲存設備的延遲存取。以下是幾個指南:
- 虛擬記憶體能夠讓你做更多的事情
- 你不用擔心虛擬記憶體會吃掉你的裝置資源
- 雖然有些問題存在,但製造商都在努力解決它們