為什麼提出覆蓋技術?
倘若我有乙個程序要執行,它需要10k的記憶體分配,但是現在擁有的資源是記憶體大小只有6k,那我們該怎麼辦?覆蓋技術就可以解決這樣乙個問題。即在較小的可用記憶體中執行較大的程式。
看圖:
覆蓋技術又是怎麼實現的呢?
依據整個程式的邏輯結構,把不相關,不會相互呼叫的模組劃分一組來進行記憶體的共享。
#**如圖所示,左邊為**邏輯結構例如可以看出a,b之間沒有相互呼叫關係,其他的關係自己可以看懂,左邊是**實際的分布。
我們可以進行分組。(main)/3k,(a,b)/2k,(c,d)/2k這是一種分法
(後面的/3k,2k,代表分組獲得的記憶體大小,以最大的乙個為實際分配大小)這樣一分在乙個組內的函式就可以共用一片**塊。因為他們之間沒有相互呼叫關係。
如圖:
除了以上分組還可以有以下分組(main)/3k,(a,d)/2k,(b,c)/2k,兩種分組哪種能提高記憶體的利用率,這是我們開發人員要考慮的事情。
那覆蓋技術又存在著那些問題:
因為覆蓋技術中的分配是由程式設計師自己分配,自己考慮程序間的邏輯結構,哪些是無關的,哪些是有關的,把無關的分在一組,把有關的分開,還要考慮不同分組的優差別,這無疑會增加程式設計的難度。
那為什麼又提出交換技術?看圖:
假若記憶體裡的a程式不止乙個》=1,而且這裡的程式a是處於暫停狀態的程序,可以把它提出記憶體暫時儲存到外訪問,把記憶體空間讓b來使用。
交換技術就是在上面這種情況下提出。
交換技術又是如何實現的?
前面已經說了,是把符合一定條件的程式踢到外存去也就是程序掛起,這裡的一定條件是由作業系統來篩選,通俗的就是沒有執行但是仍然在記憶體中的程序。讓後把需要執行的程式載入到記憶體中來。
儲存管理 覆蓋技術和交換技術
1.對於乙個程序,不需要一開始就把程式的全部指令和資料都裝入記憶體再執行。2.程式劃分為若干個功能上相對獨立的程式段,按照程式邏輯結構讓那些不需要同時執行的程式段共享同一塊記憶體區 3.當有關程式段的先頭程式段已經執行結束後,再把後續程式段從外存調入記憶體覆蓋前面的程式段 程式設計師提供乙個清楚的覆...
作業系統 覆蓋與交換
覆蓋與交換技術是在多道程式環境下用來擴充記憶體的兩種方法。覆蓋的基本思想 由於程式執行時並非任何時候都要訪問程式及資料的各個部分 尤其是大程式 因此可把使用者空間分成固定區和若干覆蓋區。將經常活躍的部分放在固定區,其餘部分按照呼叫關係分段。首先將這些即將訪問的段放入覆蓋區,其他段放在外存中,在需要呼...
作業系統課堂筆記七 交換技術
虛擬儲存 軟體相關策略 頁面置換演算法 其他相關技術參考 不能交換的程序 等待i o的程序 調頁方法 總結 頁目錄 頁表頁由於在記憶體中不連續存放,因此需要引入頁表頁的位址索引表,這樣的表叫做頁目錄 二級頁表位址轉化過程 反轉頁表 總結 快表很容易理解,就理解為乙個小型的redis就行。缺頁異常 分...