虛擬地址是什么?什么是虛擬地址空間?如何對其做定義?
常常接觸計算機的人也可能會被一些計算機的相關(guān)定義搞得頭尋目眩。但是理解這些定義卻是對我們使用計算機有很大的幫助。那么下面新網(wǎng)小編就為大家介紹一下虛擬地址是什么?什么是虛擬地址空間?如何對其做定義?
虛擬地址又叫虛擬內(nèi)存,虛擬內(nèi)存是內(nèi)存管理的一種方式, 它在磁盤上劃分出一塊空間由操作系統(tǒng)管理,當物理內(nèi)存耗盡是充當物理內(nèi)存來使用。它將多個物理內(nèi)存碎片和部分磁盤空間重定義為連續(xù)的地址空間,以此讓程序認為自己擁有連續(xù)可用的內(nèi)存。當物理內(nèi)存不足時,操作系統(tǒng)會將處于不活動狀態(tài)的程序以及它們的數(shù)據(jù)全部交換到磁盤上來釋放物理內(nèi)存,以供其它程序使用。
虛擬地址空間的定義
虛擬地址空間(virtual address space)是2018年公布的計算機科學技術(shù)名詞。
是由進程的虛地址構(gòu)成的地址空間。
在多任務(wù)操作系統(tǒng)中,每個進程都運行在屬于自己的內(nèi)存沙盤中,這個沙盤就是虛擬地址空間(virtual address space)。虛擬地址空間由內(nèi)核空間(kernel space)和用戶模式空間(user mode space)兩部分組成。
虛擬地址會通過頁表(page table)映射到物理內(nèi)存,頁表由操作系統(tǒng)維護并被處理器引用,每個進程都有自己的頁表。內(nèi)核空間在頁表中擁有較高特權(quán)級,因此用戶態(tài)程序試圖訪問這些頁是會導致一個頁錯誤(page fault)。其中內(nèi)核空間是持續(xù)存在的,并且在所有進程中都映射到同樣的物理內(nèi)存。與此相反,用戶模式空間的映射隨進程切換的發(fā)生而不斷變化。
對虛擬地址空間的理解
1、創(chuàng)建一個進程時,操作系統(tǒng)會為該進程分配一個 4GB 大小的虛擬 進程地址空間。之所以是 4GB ,是因為在 32 位的操作系統(tǒng)中,一個指針長度是 4 字節(jié),而 4 字節(jié)指針的尋址能力是從 0x00000000~0xFFFFFFFF ,最大值 0xFFFFFFFF 表示的即為 4GB 大小的容量。
2、每個進程只能訪問自己虛擬地址空間中的數(shù)據(jù),無法訪問別的進程中的數(shù)據(jù),通過這種方法實現(xiàn)了進程間的地址隔離。
3、4GB 的虛擬地址被分成了 4 部分: NULL 指針區(qū)、用戶區(qū)、 64KB 禁入?yún)^(qū)、內(nèi)核區(qū)。應(yīng)用程序能使用的只是用戶區(qū)而已,大約 2GB 左右 ( 最大可以調(diào)整到 3GB) 。內(nèi)核區(qū)為 2GB ,內(nèi)核區(qū)保存的是系統(tǒng)線程調(diào)度、內(nèi)存管理、設(shè)備驅(qū)動等數(shù)據(jù),這部分數(shù)據(jù)供所有的進程共享,但應(yīng)用程序是不能直接訪問的。
4、目前PC上頁面大小為4K,程序運行到哪頁就為哪頁分配內(nèi)存,并建立虛擬地址空間頁和剛剛建立的物理內(nèi)存頁間的映射。
5、一個PE是一些編譯好的數(shù)據(jù)和指令的集合,也被分為很多頁。4G的地址空間并非真正創(chuàng)建,只是創(chuàng)建虛擬地址空間到物理地址空間映射的頁表。
6、PE文件中所有的段會一一映射到虛擬地址空間中相應(yīng)的頁。
7、當CPU訪問某一個虛擬地址時,發(fā)現(xiàn)該地址并沒有相關(guān)聯(lián)的物理地址時,產(chǎn)生一個缺頁錯誤,于是CPU將控制權(quán)交回OS,OS為該頁面映射物理內(nèi)存。
8、當CPU要訪問的數(shù)據(jù)在內(nèi)存中時,可以直接訪問。
當CPU要訪問的數(shù)據(jù)不再內(nèi)存中,而位于頁交換文件中,OS會在內(nèi)存中找到一個閑置的頁面,如果找不到閑置的頁面,先釋放一個已分配的頁面。
9、頁交換文件的左右時物理內(nèi)存不夠時,將部分數(shù)據(jù)從內(nèi)存中移到頁交換文件中,否則要釋放物理內(nèi)存,刪除頁面映射關(guān)系。
什么是虛擬地址空間?相信對于這個問題你已經(jīng)有了自己的答案。這些都是我們在使用計算機時需要學習的進階內(nèi)容,了解這些可以幫助我們更好的使用計算機,做到更多事情。想要學習更多有關(guān)知識,歡迎長期關(guān)注新網(wǎng)!
<div>
聲明:免責聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認相關(guān)法律責任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)
送郵件至:operations@xinnet.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時
需注明出處:新網(wǎng)idc知識百科