2013-10-13 174 views
1

如果頁面出現在虛擬內存中,但不在主內存中,會發生什麼情況? 它是如何執行的?虛擬內存的使用

程序是否從虛擬內存加載到主內存中?如果它從虛擬內存加載到主內存中,那麼這將是一個IO操作,因爲它在磁盤上。那麼如果使用虛擬內存,我們必須執行IO操作才能執行它。

而當使用程序生成的邏輯地址,和MMU其映射到物理地址,如果該地址不存在於主存儲器,那麼確實OS檢查在虛擬存儲器中??

在此先感謝

回答

0

讓我說,這是一個很簡單的解釋,而不是確定指導虛擬內存啓動;

虛擬內存基本上給你的進程一種錯覺,即它是在計算機的內存空間中運行的唯一東西。當進程訪問虛擬內存頁面時,MMU將其轉換爲物理內存訪問。如果物理內存頁面尚不存在(或不在物理內存中),則會暫停該進程並通知操作系統,並且可以在重新啓動該進程之前將頁面添加到內存(例如,通過從磁盤獲取內存) 。

虛擬內存的一個原因是,該過程不必過於擔心它使用的內存,沒有如果,例如擴大機上的物理內存換了,可剛工作,就好像它擁有它可以解決的所有內存,並讓操作系統解決實際內存的使用方式。

它不(通常)慢計算機抓取的原因是,很多過程不會在任何時候使用他們的記憶的大部件,如果一個內存頁是不是在一個小時訪問,物理在那個小時內,內存可以更好地使用,而不是保持活動狀態。當然,您的流程不斷積極使用的內存越多,您的流程似乎運行得越慢。