虛擬地址
虛擬地址是用于標(biāo)識虛擬對象的地址,通常用于虛擬存儲管理和網(wǎng)絡(luò)管理。當(dāng)程序執(zhí)行一條指令時,它將部分地址內(nèi)容復(fù)制到REG中,這樣就可以通過索引、基址寄存器、段寄存器或其他方式生成地址。這些由程序生成的地址稱為虛擬地址。
虛擬地址的內(nèi)容是通過將信息映射到特定的虛擬地址來定義的,這是利用物理空間和虛擬空間之間的映射來實現(xiàn)的。通過使用虛擬地址,操作系統(tǒng)可以隔離不同進(jìn)程的資源訪問,確保系統(tǒng)的安全性和穩(wěn)定性。
虛擬地址的基本原理和研究范圍涵蓋了計算機(jī)科學(xué)和工程的多個方面,對深入理解計算機(jī)內(nèi)存管理的工作原理、提高系統(tǒng)的安全性和穩(wěn)定性、促進(jìn)移動透明IP技術(shù)等相關(guān)領(lǐng)域的發(fā)展和應(yīng)用具有重要意義。
發(fā)展起源 編輯本段
20世紀(jì)60年代,IBM的兩個獨立開發(fā)的虛擬機(jī)管理程序SIMMON和CP-40促進(jìn)了虛擬化技術(shù)的發(fā)展,并間接推動了虛擬地址技術(shù)的探索。虛擬地址技術(shù)允許操作系統(tǒng)抽象物理內(nèi)存地址,并為每個進(jìn)程提供獨立的地址空間,從而增強系統(tǒng)的安全性和隔離性。
20世紀(jì)80年代,隨著個人電腦的普及,虛擬地址技術(shù)變得更加重要。它使操作系統(tǒng)能夠更有效地管理內(nèi)存資源,并提高系統(tǒng)的穩(wěn)定性和性能。通過使用虛擬內(nèi)存,即使物理內(nèi)存有限,應(yīng)用程序也可以使用更多的地址空間。
從20世紀(jì)90年代到2000年代,隨著虛擬化技術(shù)的發(fā)展,虛擬地址技術(shù)的可擴(kuò)展性和靈活性受到了廣泛關(guān)注。在此期間,虛擬地址技術(shù)在提高系統(tǒng)資源利用率和支持多任務(wù)多用戶環(huán)境方面發(fā)揮了關(guān)鍵作用。
2010年代,云計算和容器技術(shù)的興起進(jìn)一步推動了虛擬地址技術(shù)的發(fā)展。現(xiàn)代操作系統(tǒng)使用虛擬地址技術(shù)來實現(xiàn)內(nèi)存保護(hù)、內(nèi)存映射文件和共享內(nèi)存等高級功能,這對于構(gòu)建大規(guī)模、高效的云平臺和容器化應(yīng)用非常重要。
工作原理 編輯本段
地址映射
定義進(jìn)程時,操作系統(tǒng)為每個進(jìn)程創(chuàng)建一個虛擬地址空間。編譯器將用戶源程序鏈接到以地址0為起始地址的線性或多維虛擬地址空間。這里的鏈接可以是鏈接程序在程序執(zhí)行前完成的靜態(tài)鏈接,也可以是程序執(zhí)行過程中需要完成的動態(tài)鏈接。每個進(jìn)程都有這樣一個空間(這個空間是一維的還是多維的取決于存儲管理方法)。每個指令或數(shù)據(jù)單元在這個虛擬空間中都有一個確定的地址,稱為虛擬地址。
虛擬地址空間中的地址并不直接對應(yīng)于物理內(nèi)存中的實際地址,而是通過頁表進(jìn)行映射。頁表存儲在內(nèi)存中,提供了虛擬地址到物理地址的映射關(guān)系。該空間中進(jìn)程的地址排列可以是不連續(xù)的。當(dāng)程序試圖訪問虛擬地址時,處理器將通過查找頁表將虛擬地址轉(zhuǎn)換為相應(yīng)的物理地址。一個虛擬地址唯一地映射一個物理地址,但是一個物理地址可以映射多個虛擬地址。虛擬地址和物理地址之間的映射關(guān)系是多對一的。
虛擬地址空間
處理器在執(zhí)行內(nèi)存讀寫操作時使用虛擬地址。在這些操作中,處理器將虛擬地址轉(zhuǎn)換為物理地址。不同進(jìn)程的虛擬地址空間是隔離的,這意味著一個進(jìn)程不能直接訪問或修改另一個進(jìn)程或操作系統(tǒng)的物理內(nèi)存。每個進(jìn)程擁有的虛擬地址范圍稱為進(jìn)程的虛擬地址空間。
每個用戶模式進(jìn)程都有自己專用的虛擬地址空間。對于32位進(jìn)程,虛擬地址空間通常限制為2GB,即從0x00000000到0x7FFFFFFF。在64位Windows系統(tǒng)上,64位進(jìn)程的虛擬地址空間可以達(dá)到128TB,范圍從0x 000‘00000000到0x 7
每個虛擬地址空間中的地址被分成幾個大小相等的單元,稱為“頁面”(通常大小為4KB)。在Notepad.exe進(jìn)程中,從0x7f 7‘93950000開始有三個連續(xù)的虛擬頁面。這些虛擬頁面通過內(nèi)存管理機(jī)制映射到物理內(nèi)存中的不連續(xù)頁面。盡管這些虛擬地址在進(jìn)程的地址空間中是連續(xù)的,但它們在物理內(nèi)存中可能不相鄰。類似地,盡管Notepad.exe和MyApp.exe進(jìn)程都使用從0x7f 7‘93950000開始的虛擬頁面,但是這些頁面被映射到物理內(nèi)存中的不同位置。
共用存儲器
共享內(nèi)存是實現(xiàn)進(jìn)程間通信的重要方式,其基本特征是通信量大。作為一種高效的進(jìn)程間通信機(jī)制,共享內(nèi)存通過將不同進(jìn)程的虛擬地址映射到同一個物理地址來共享內(nèi)存數(shù)據(jù)。這種機(jī)制不僅節(jié)省了物理內(nèi)存資源,還允許進(jìn)程通過共享物理內(nèi)存區(qū)域高效地交換數(shù)據(jù)。共享虛擬內(nèi)存的本質(zhì)是實現(xiàn)內(nèi)存的共享訪問,為不同進(jìn)程提供一個通用的數(shù)據(jù)交換平臺。
相關(guān)技術(shù) 編輯本段
內(nèi)存管理單元技術(shù):內(nèi)存管理單元技術(shù)是一個關(guān)鍵的硬件組件,它將虛擬地址空間映射到物理地址空間,使程序可以使用連續(xù)的虛擬地址空間,而無需關(guān)心實際的物理內(nèi)存布局。
MMU的主要功能包括地址轉(zhuǎn)換、內(nèi)存保護(hù)和訪問控制。地址轉(zhuǎn)換是指將虛擬地址轉(zhuǎn)換為物理地址,這是MMU最基本的任務(wù)。內(nèi)存保護(hù)是指防止程序訪問非法或未經(jīng)授權(quán)的內(nèi)存區(qū)域,以確保系統(tǒng)的穩(wěn)定性和安全性。訪問控制進(jìn)一步細(xì)化了內(nèi)存保護(hù),可以控制不同用戶對內(nèi)存的訪問權(quán)限。
應(yīng)用領(lǐng)域 編輯本段
操作系統(tǒng)設(shè)計:東南大學(xué)國家ASIC系統(tǒng)工程中心高級工程師姚郭亮帶領(lǐng)團(tuán)隊講解了805plus微處理器平臺上虛擬地址空間映射的具體實現(xiàn)方案。該內(nèi)核可以在虛擬地址空間中完成對RAM寄存器和GPIO端口的數(shù)據(jù)訪問,并已應(yīng)用于805plus平臺。
附件列表
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。
如果您認(rèn)為本詞條還有待完善,請 編輯
上一篇 Microsoft Edge 下一篇 書生通用大模型

