2017-08-03 108 views

回答

3

TL; DR:是的,虛擬內存可以不用分頁而存在。


一個非常簡單的搜索將產生this

虛擬內存是一種內存管理技術,它將被稱爲虛擬地址的程序使用的內存地址映射到計算機內存中的物理地址中。

這些地址不一定是固定的大小。


Paging:

是存儲器管理方案,通過該計算機存儲並從主存儲器中使用輔助存儲器中檢索數據。在這種方案中,操作系統從輔助存儲中以相同大小的塊(稱爲頁面)檢索數據。

+0

我知道這些概念。但我想知道他們是否可以單獨存在。 – helloansuman

+0

@helloansuman分頁不能存在沒有虛擬內存,但虛擬內存可以存在沒有分頁。 –

+0

你能解釋一下怎麼可能? @Tony – helloansuman

2

您的問題的答案取決於您如何定義「虛擬內存」。如果您將其定義爲「應用程序可以看到的地址」,那麼虛擬內存是可以在沒有分頁的情況下存在的。

分頁之前,系統使用分段來隔離用戶進程。簡單地說,每個進程都有它自己的部分。它「看到」的所有地址只是該段內的偏移量。硬件隱含地將段基址添加到應用程序請求的地址以獲取物理地址。就像頁表一樣,段基只能被內核修改,並且它可以同時有效地爲進程隔離內存,從而允許在進程間共享某些內存部分。

段在每次訪問之前也會檢查限制,以確保用戶不會使用非常大的偏移量並溢出到其他進程中。

分段支持已從英特爾X86_64架構中刪除,其中段寄存器確實存在但始終設置爲0.只有兩個段寄存器%fs%gs繼續存在。但是對它們的限制檢查不是由硬件執行的。這些段現在被OS用於線程本地存儲。

+0

謝謝。這個答案有幫助。 – helloansuman