關於虛擬存儲器、虛擬內存和交換空間的理解

虛擬存儲器、虛擬內存和交換空間這三個概念從看CSAPP開始很長一段時間都在困擾着我,網上各說紛雲,等快上完操作系統和計組課纔算明白了!

先說虛擬存儲器,CSAPP上介紹的是虛擬存儲器是對主存的抽象概念,爲每一個進程提供了一致的地址空間形式,也就是虛擬地址空間(這個地址空間不是用什麼數組存起來的,而是CPU要訪問內存就產生一個虛擬地址,不斷累積組成的虛擬地址空間),它是一種機制,一種將主存抽象成磁盤高速緩存的技術。當初構造虛擬存儲器的兩個主要動機:允許在多道程序之間有效而安全地共享存儲器;消除一個小而受限的主存容量對程序設計造成的影響。40年後,第一條變成了主要設計動機。現代操作系統都支持虛擬存儲器,所有的應用程序訪問內存都需要地址翻譯。

虛擬內存和交換空間,這兩個概念要和操作系統一起說,window下的“虛擬內存”實際上是存在磁盤上的頁面文件,和linux的交換空間概念一樣,都是物理上實際存在的東西,如果內存夠用,沒有缺頁,你禁掉這兩個東西不會影響虛擬存儲器;然而撇開操作系統,只談理論,虛擬內存還是一種技術,它允許執行進程不必完全放在內存中。這兩種其實都屬於交換技術,交換技術除了因爲內存緊張要使用之外,還有在一些操作系統如分時系統中爲了改善進程組合(CPU密集型和IO密集型)也要用它進行中期調度。

總結一下,傳統意義上的虛擬內存和交換空間就是指能實際分配的磁盤空間,而虛擬存儲器是一種機制,是整個CPU訪問內存過程的體現。其實內存管理、虛擬內存技術、虛擬存儲器都是密不可分的概念,你可以說虛擬存儲器就是虛擬內存技術,也可以說內存管理機制就是虛擬存儲器,摳字眼都是無意義的,因爲可能書的翻譯不同,理解不同。但是隻要知道它們只是內存管理分頁機制的體現,從CPU生成虛擬地址到MMU翻譯生成物理地址,到查找PTE,再到缺頁,頁置換,這整個過程需要CPU、內存和磁盤的參與,只要理解了這些就理解了內存分頁管理機制,不必摳字眼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章