虛存技術(上)

虛擬內存的出現是爲了緩解內存不足的問題,

覆蓋技術:

目標:是爲了在較小的內存中運行較大的程序,常用於多道程序系統,與分區存儲管理配合使用。

 

原理:把程序按照其自身邏輯結構,劃分爲若干個功能上相對獨立的程序模塊,那些不會同時執行的模塊共享同一塊內存區域,按照時間先後來運行。

1、必要部分(常用功能)的代碼和數據常駐內存。

2、可選部分(不常用功能)在其他程序模塊裝載到內存。

3、不存在調用關係的模塊不必同時裝入到內存,從而可以相互覆蓋,即這些模塊共用一個

分區。

 

總結:覆蓋技術就是把程序拆分,常用模塊常駐內存,不常用模塊放在外存,當使用到對應的模塊時,將對應的模塊載入到某個特定的內存塊中,當另一個程序執行調用到不常用的模塊時,裝

載該程序的模塊到這個特定的內存塊中,後面載入到這個特定的內存塊中的模塊覆蓋前一個程序

裝載到這個特定內存塊中的模塊。(即特定內存塊中不同程序的模塊實現覆蓋載入,提供對應的程序調用。)

A調用B和C,但是B和C之間不存在調用關係,那麼B和C就可以放在同一個覆蓋區內,而D和EF相互之間又不存在調用關係,所以D、E、E可以放在同一個覆蓋區內。同時還可以通過調整不存在調用關係的模塊之間的分組關係來優化總的佔用空間。

缺點:

分模塊比較複雜(可以編程的時候指定可以被覆蓋的模塊)。

換入換出費時。

交換技術:

目標:多道程序在內存中時,讓正在運行的程序或需要運行的程序獲得更多的內存資源。

方法:

1、可將暫時不能運行的程序送到外存,從而獲得空閒內存空間。

2、操作系統把一個進程的整個地址空間的內容保存到外存中(換出swap out),而將外存中的某個進程的地址空間讀入到內存中(swap in),換入換出內容的大小爲整個程序的地址空間。

 

交換技術實現中的幾個問題:

1、交換時機的確定:何時要發生交換?只當內存空間不夠或有不夠的危險時換出。

2、交換區的大小:必須足夠大以存放所有用戶進程的所有內存映像的拷貝:必須能對這些

內存映像進行直接存取。

3、程序換入時的重定位:換出後再換入的內存位置一定要在原來的位置上嗎?最好採用動態映射的方法。

交換技術和覆蓋技術的比較:

1、覆蓋技術只能發生在那些相互之間沒有調用關係的程序模塊之間,因此程序員必須給出程序內各個模塊之間的邏輯覆蓋關係(發生在同一個程序內)。

2、交換技術是以內存中的程序大小爲單位來進行的,他不需要程序員給出各個模塊之間的邏輯覆蓋結構,換言之,交換髮生在內存中程序之間,而覆蓋則發生在運行程序的內部。

虛存技術:

局部性原理:包括時間局部性和空間局部性,可以根據內存的局部性原理來優化代碼,提高代碼執行效率。

時間局部性:如果程序中的某一條指令一旦執行,則不久後該指令可能再次被執行;如果某數據被訪問,則不久之後該數據可能再次被訪問。

空間局部性:一旦程序訪問了某個存儲單元,則不久之後,其附近存儲單元也將被訪問。

 

虛存技術--基本特徵

1、大的用戶空間:通過把物理內存與外存相結合,提供給用戶的虛擬內存空間通常大於實際的物理內存,即實現了這兩者的分離。如32位的虛擬內存地址理論上可以訪問4GB,而可能計算機上僅有256M的物理內存,但硬盤容量大於4GB.

2、部分交換:與交換技術相比,虛擬存儲的調入和調出是對部分虛擬地址空間進行的。

3、不連續性:物理內存分配的不連續性,虛擬地址空間使用的不連續性(如上圖彩色部分)。

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