2013-04-25 74 views
1

如何理解這句話如何理解虛擬內存?

我們可以概括,並允許每個數據對象有多個獨立的地址,每個從不同的地址sapce選擇。這是虛擬內存的基本思想(「CSAPP」)

爲什麼數據對象沒有唯一地址?

回答

4

虛擬內存通常用於簡化計算機上的編程,其中多個程序正在運行。

如果您的計算機上有多個程序正在運行,它們每個都會看到適合其需求的虛擬內存空間。就該方案而言,生活很簡單。他們可以使用任何他們想要的內存,在任何特定的地址,並且他們不需要努力避免其他程序使用的內存。

此外,爲了安全起見,他們不能查看其他程序使用的內存,即使他們想要。他們的內存地址空間完全是他們自己想要的。

所以,在簡單情況下,每個數據對象只屬於一個程序,那麼每個數據對象確實有只有一個地址。

但是,程序可能會引用公共資源。例如,兩個拼寫檢查器可能需要使用磁盤上拼寫完整的大文件。操作系統通常會加載一次,而不是將其加載到內存中,但它可能會在兩個使用它的程序的不同虛擬地址中看到。因此,在這種情況下,一個數據對象可能確實有幾個虛擬地址。

+0

示例:程序A在地址1分配一塊內存。程序B在地址1分配一塊內存。現在程序B決定它要共享與程序A在地址1上相同的內存,但它可以不要將它放在自己的虛擬地址空間中的同一個地址,因爲其他地方已經存在,所以它請求操作系統將其映射到地址2中。現在程序A的地址1和程序B的地址2指的是相同的物理存儲塊。 – 2013-04-25 17:08:20