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