虛擬,是不存在的意思,那麼不存在的記憶體如何使用呢。首先假設沒有虛擬記憶體,現有物理記憶體100k,其中載入了部分程式,目前只剩餘50k,但是接著要載入乙個70k大小的程式。程式設計師在開發的時候不可能知道程式會執行在記憶體充足還是不充足的情況下,如果他能夠直接使用100k的所有記憶體,那麼就可以不用考慮這些問題了,而這個直接使用所有記憶體就是虛擬記憶體。那麼怎麼將虛擬記憶體和物理記憶體對應起來呢,這就是os需要做的記憶體管理需要做的事情了。
通俗的說,就是在程式設計人員的眼裡,他們能使用的記憶體大小是所有物理記憶體,甚至是更大的記憶體,而計算機只有固定的物理記憶體,卻需要為每個程式提供空間,os就是這兩者之間的協調者。
早期對虛擬記憶體的實現方式主要有兩種,這兩種各有優缺點,現代使用的正式結合這兩種方式的優點進行改造的技術。
第一種稱為交換式,顧名思義,就是當記憶體不夠時將未被使用的程序交換到硬碟中,為即將執行的程式騰出空間,至於具體要交換哪乙個程序則是由具體的演算法決定的。
第二種稱為覆蓋式,當前準備執行的程式不可能每一部分都需要同時執行,那麼就可以將其中不能同時執行的**統一放到同一塊記憶體空間中執行,當需要載入它們的時候將空間中的直接覆蓋即可。使用此種方式可以實現共享庫的功能。
其中覆蓋式需要開發者將程式分解為多個獨立的模組,交換式則需要操作整個程序。
將覆蓋式和交換式的優點結合,可以每次交換部分頁,將程序分為多個大小相等的頁,將需要載入的頁覆蓋到未被使用的頁空間中,通過這種方式就可以實現每個程序好像擁有所有記憶體的假象了,這種技術被稱為虛擬記憶體技術。
要想實現虛擬記憶體技術,兩個原理是必不可少的,那就是時間區域性性和空間區域性性。
時間區域性性是指當程式的某一塊被執行後,在不久的將來此塊還會被執行
空間區域性性是指當程式的某一塊被執行後,那麼其周圍的其餘部分也將被執行
通過這兩個原理,將程式劃分為多部分就可以保證不會出現每部分只被執行一次後就被換出
基於虛擬記憶體技術實現的方式是虛擬頁式記憶體管理,首先是記憶體被劃分為1k大小的塊,虛擬記憶體也被劃分為1k大小的塊,給程序分配空間時按照虛擬記憶體的位址進行分配,然後通過mmu硬體的支援將虛擬位址轉換為物理記憶體位址,如果對應的物理頁不存在就會引起缺頁中斷,如果記憶體空間不足則會引起置換操作,具體要置換的頁由各種置換演算法決定。
作業系統 虛擬記憶體
1.虛擬記憶體術語 虛擬記憶體 程式引用記憶體使用位址與記憶體系統用於識別物理儲存站點的位址是不同的,程式生成的位址會自動轉換成機器指令。虛擬記憶體的大小收到定址機制和可用的備用記憶體量的限制,而不受記憶體儲存位置實際數量的限制。虛擬位址 在虛擬記憶體中分配給某一位置的位址使該位置可以被訪問,彷彿它...
作業系統虛擬記憶體
虛擬記憶體是計算機作業系統提供的一種記憶體管理技術,它使得應用程式認為它擁有連續可用的記憶體 乙個連續完整的位址空間 而實際上,它通常是被分隔成多個物理記憶體碎片,還有部分暫時儲存在外部磁碟儲存器上,在需要時進行資料交換。與沒有使用虛擬記憶體技術的系統相比,使用這種技術的系統使得大型程式的編寫變得更...
作業系統 虛擬記憶體
虛擬記憶體介紹 虛擬記憶體是計算機系統記憶體管理的一種技術。虛擬記憶體的重要意義是定義了乙個連續的虛擬位址空間,並且把記憶體擴充套件到硬碟空間。虛擬記憶體使得應用程式認為它擁有連續的可用記憶體,但實際上它通常被分隔成多個物理記憶體碎片,還有部分暫時儲存在外存上,在有需要時進行資料交換。虛擬記憶體技術...