2010-12-13 60 views
6

所以我在計算機體系結構類中,我想我很難區分緩存和頁面。緩存與分頁

我能想出的惟一解釋是頁面是操作系統欺騙程序的方式,它只是在指定的內存區域內完成它的工作,而高速緩存則是硬件欺騙操作系統的方式,從一個特定的記憶區域讀取,當它不是真正的時候。

操作系統是否指示它需要一個「新頁面」的硬件,或者由操作系統負責讀取當前高速緩存「頁面」的「超出範圍」的地址(缺少一個更好的術語)。

我在正確的軌道上還是我完全瘋了?

回答

6

緩存和頁面是正交的概念。

緩存是一種高速「內存」,它可以最大限度地減少訪問大量低速「內存」的次數。從一般意義上講,高速「內存」可能是您的硬盤,用於緩存從網頁(低速「內存」)提取的網頁。當然,在計算機體系結構的情況下,術語「緩存」更可能指用於加速訪問速度較慢的RAM或磁盤的物理RAM。

頁面OTOH只是RAM或磁盤內容的管理單位。

這兩個概念一起實現虛擬內存系統。一個進程可能會分配500 MB的內存。這可能更多的是可用於物理內存的進程,因此操作系統在磁盤上分配塊稱爲頁面,這將在進程的地址空間中保存某些邏輯頁面的內容。

當進程訪問其地址空間中的某個位置,並且關聯的頁面當前未映射到物理內存中時,CPU發出頁面錯誤信號,操作系統通過在進程爲處於暫停狀態。一旦頁面被映射,該過程將恢復並能夠訪問該內存位置,就好像它一直存在一樣。

虛擬內存是一種欺騙流程的方式,認爲它擁有大量的RAM並不是考慮此問題的唯一方法。您還可以將進程的地址空間視爲邏輯存儲在磁盤頁面上,而OS輔助映射到RAM只是一種緩存這些頁面內容的方式,這樣進程不會持續訪問硬盤驅動器。從這個意義上講,緩存和分頁虛擬內存在邏輯上是相同的。請記住,雖然這個觀點可能有助於理解這兩個概念之間的關係,但這並不完全準確,因爲它可能完全沒有虛擬內存運行,只是物理內存(事實上,大多數嵌入式系統運行這條路)。

+0

好的,我想我的腦海裏基本上是一個頁面駐留在一個緩存「集合」(假設集合關聯緩存,其中有多個緩存塊)。因此當程序調用一個地址給OS時,如果地址超出了「範圍」,操作系統會調用地址到緩存中,這會導致未命中,然後強制它從主內存中獲取它,但是什麼我收集你說的是,頁面通常駐留在RAM中,但程序定義不是硬件定義的......我認爲這有幫助!非常感謝。 – onaclov2000 2010-12-13 14:11:52

+0

那麼這是否意味着如果一個頁面在RAM上不存在,並且發生頁面錯誤,它會從邏輯上從緩存中獲取它,或者仍然會有磁盤訪問? (緩存不會「預測」下一個將需要哪個頁面) – onaclov2000 2010-12-13 14:13:00

+0

在虛擬內存的上下文中,RAM頁面和後備存儲(磁盤頁面)之間沒有緩存。物理RAM本質上充當駐留在磁盤上的頁面的高速緩存。如果發生頁面錯誤,那麼它就離開了你要去的拼盤(或者現在可能是SSD芯片)。 – 2010-12-13 14:41:46