儲存管理的主要模式@
邏輯位址:又稱相對位址,即使用者程式設計所使用的程式設計位址
從0開始編號
段氏程式設計:把乙個程式設計成多個段
使用者可以應用段覆蓋技術擴充記憶體空間使用量
實體地址:
主儲存器的復用:
1.按照分割槽復用(分割槽固定/可變)
2.按照頁架復用(頁架固定)
儲存管理的基本模式:
儲存管理的功能@
位址轉換:又稱重定位,將邏輯位址轉換為絕對位址。
主儲存器空間的擴充:
1.對換技術;
2.虛擬技術;
虛擬儲存器儲存管理的硬體支撐@
單連續分割槽儲存管理@
固定分割槽儲存管理(會產生記憶體內零頭)
可變分割槽儲存管理(最常用)
可變分割槽儲存管理@
按程序的記憶體需求 來動態劃分分割槽
記憶體分配:
最先適應分配演算法
鄰近適應分配演算法
最優適應分配演算法(最容易產生記憶體外零頭問題)
最壞適應分配演算法
位址轉換與儲存保護
移動技術(程式浮動技術)
1.解決記憶體外零頭問題
2.需要動態重定位支撐
頁式儲存管理
頁表放在主存中:每次位址轉換必須訪問兩次主存
1.按頁號獨處頁表中的相應頁架號
2.按計算出來的絕對位址進行讀寫
存在問題:降低了訪問速度
解決辦法:利用cache存放部分頁表
快表:頁號,頁架號。(聯想儲存器,按照內容定址)
基於快表的位址轉換流程:
頁式虛擬儲存管理:
頁面排程:
缺頁中斷率=不成功訪問次數/總訪問次數
影響缺頁中斷率的因素:可用頁架數越多,越低;頁面越大,越低;使用者程式設計方式。
opt頁面排程演算法(最佳演算法):
先進先出fifo頁面排程演算法:總是淘汰最先調入主存的那一頁。
最近最少用lru頁面排程演算法:淘汰最近一段時間較久未被訪問的那一頁。既考慮了迴圈性又兼顧了順序性。
模擬實現:每頁件乙個引用標誌,供硬體使用;設定乙個時間間隔中斷;
最不常用lfu頁面排程演算法:
時鐘clock頁面排程演算法:
反置頁表:
原來的頁表是以頁號為索引,記錄頁架號;但是反置頁表是以頁架號為索引,記錄程序號和頁號
針對記憶體中的每個頁架建立乙個頁表
表項包含:正在訪問該頁架的程序標識,頁號及特徵位,和雜湊鏈指標。
段式儲存管理@
分段儲存器的邏輯位址由兩部分組成:
段號:單元號
儲存管理需要增加設定乙個段表,每個段占用乙個段表項:段始址,段限長,以及儲存保護,可移動,可擴充等標誌位。
位址轉換流程:
段的共享:
段式虛擬儲存管理:
將程序的所有分段都存放在輔存中,需要時,動態調入主存。
段表擴充:特徵位,訪問許可權,擴充位,標誌位
段頁式儲存管理:
基本思想:
段式儲存管理可以基於頁式儲存管理實現
每一段不必佔據連續的儲存空間,可存放在不連續的主存頁架中
能夠擴充位段頁式虛擬儲存管理
裝入部分段,或者段內部分頁面
c 3 隨機函式
以下為c常見隨機數生成方法 include include include void main srand函式和rand函式在vc庫的實現如下 include include include include ifndef mt static long holdrand 1l endif mt voi...
c 3 繼承和組合
class c5 c6.h include c5.h class c6 class c3 class c4 class c9 class c10 class c7 class c8 視問題域而定的,例如在關心汽車的領域裡,輪胎是一定要組合在汽車類中的,因為它離開了汽車就沒有意義了。但是在賣輪胎的店鋪...
C 3的分部方法
作用是乙個可選的鉤子,如果沒有實現,則不會有任何的開銷。比如 myform.cs partial class myform public myform partial void custominitialize partial void setup myformhandwritten.cs part...