隨著應用程式的不斷公升級,其在電腦中所佔的記憶體也急劇增大,但是計算機記憶體大小的增長速度難以跟上,為了能在有限的記憶體中執行盡可能多的程式,計算機科學家提出了各種記憶體管理技術來盡可能適應這種情況。
覆蓋技術目的是使得單個程式盡可能少的占用記憶體資源,要求程式設計師在**中指定記憶體的使用與釋放,對**要求較高。其具體實現有點類似union結構體的功能,同一塊記憶體實現分時復用,不過必須是沒有相互呼叫關係的子程式段才能對同一塊記憶體進行分時使用。
缺點:對程式設計師要求太高,需要對程式進行合理的劃分;
缺點:對整個程式的換入換出,操作粒度較大,資源消耗嚴重。
優點:由作業系統完成,對程式設計師透明。
由於前兩種方案都有著明顯的缺點,迫切地需要提出一種能夠繼承二者優點但克服致命缺陷的新方案,由此,虛擬記憶體技術應運而生。
①虛擬記憶體技術的具體實現由作業系統完成
②像覆蓋技術一樣,不是把整個程式都放入記憶體中,而是把當前執行階段所需的部分載入到記憶體,實現了對單個程式記憶體開銷的壓縮。
虛擬技術裡用到了程式區域性性原理
程式的區域性性好才能更好的發揮虛擬記憶體的作用!!!這是由於區域性性好的程式在執行時不容易出現缺頁中斷
程式的區域性性原理指程式在執行過程的乙個較短的時間內,所執行的指令位址和指令運算元位址,分別集中在乙個小的區域內,具體表現為時間區域性性和空間區域性性。
時間區域性性:指令的一次執行和下一次執行,資料的一次訪問和下一次反訪問都集中在乙個較短的時間內
空間區域性性:當前執行的指令和臨近的幾條指令,當前訪問的資料和臨近幾次訪問的資料,都集中在乙個較小的區域內
最後,簡單總結一下虛擬記憶體的優點:虛擬記憶體技術為每個程序提供了乙個大的、一致的、私有的位址空間。
①它將主存看作是磁碟的高階快取,在主存中只保留活躍部分,並根據需要在主存與磁碟間來回傳送資料,高效地利用主存
①為每個程序提供一致的記憶體位址空間,從而簡化了記憶體管理
②保護每個程序的位址空間不被其他程序所破壞
虛擬記憶體技術的實現
虛擬記憶體技術的實現需要建立在離散分配的記憶體管理方式的基礎上。虛擬記憶體的實現有以下三種方式 1.請求分頁儲存管理 建立在分頁管理之上,為了支援虛擬儲存器功能而增加了請求調頁功能和頁面置換功能。請求分頁是目前最常用的一種實現虛擬儲存器的方法。請求分頁儲存管理系統中,在作業開始執行之前,僅裝入當前要...
作業系統 虛擬記憶體技術
本文介紹作業系統裡的虛擬記憶體技術,它是目前最常用的記憶體擴充技術。本文先介紹了虛擬記憶體的概念,再介紹如何實現虛擬記憶體,只以請求分頁管理方式為例來表示如何實現 再比較各種頁面置換演算法,用以確定將哪個頁面換出到外存 最後是作業系統如何給程序頁面分配 置換的策略 從以上幾個方面來理解虛擬記憶體技術...
虛擬記憶體技術背景下的分頁技術
隨著軟體的膨脹,需要執行的程式往往大到記憶體無法容納,而且需要系統能夠支援多個程式同時執行,為了解決這個問題,曾經出現過交換技術和覆蓋技術,但都不是特別有吸引力的解決方案。交換技術換出效率太慢,而且程式一但程式大小超過記憶體,交換技術也無能為力 覆蓋技術需要程式設計師把程式分割成片段,這對程式設計師...