作業系統——第五章筆記(三)
阿新 • • 發佈:2018-11-26
請求分段儲存管理方式
在請求分段系統中,程式執行之前,只需先調入若干個分段(不必調入所有的分段),便可啟動執行。當所訪問的段不在記憶體中時,可請求OS將所缺的段調入記憶體。
1.請求分段中的硬體支援
1.1段表機制
- 存取方式 :用於標識本分段的存取屬性。R,R/W,W
- 訪問欄位A :用於記錄本段被訪問的頻繁程度。
- 修改位M :表示該段在調入記憶體後是否被修改過。
- 存在狀態位P :指示該段是否已調入記憶體。
- 增補位 :特有欄位,表示該段執行中是否做過動態增長.
- 外存地址:用於指出該段在外存上的起始地址(盤塊號)。
1.2缺段中斷機構
發現執行程序所訪問段尚未調入記憶體
由缺段中斷機構產生一缺段中斷訊號
進入OS,由缺段中斷處理程式將所需的段調入記憶體。
缺段中斷同樣在一條指令的執行期間產生和處理中斷,一條指令執行可能產生多次缺段中斷。但不會出現一條指令被分割在兩個分段中或一組資訊被分割在兩個分段中的情況。
1.3地址變換機構
基於分段系統地址變換機構的基礎
段調入記憶體
修改段表
再利用段表進行地址變換。
2.分段的共享和保護
分段在邏輯意義上劃分,實現共享和保護都較方便。以下討論具體實現:
2.1實現共享:共享段表
在記憶體中配置一張共享段表,每個共享段都佔有一表項,記錄如下內容:
共享計數count:
共享段為多個程序所需要,當某程序不再需要它而釋放它時,系統並不回收該段所佔記憶體區,僅當所有共享該段的程序全都不再需要它時,才由系統回收該段所佔記憶體區。設定count用於記錄有多少個程序需要共享該分段。
存取控制欄位:一個共享段給不同的程序以不同的存取許可權。
段號:對一個共享段,不同的程序可用不同的段號。
2.2共享段如何分享與回收
1)共享段的分配
第一個請求使用該共享段的程序A:系統為該共享段分配一物理區,再把共享段裝入該區;
將該區的始址填入A的段表相應項;
共享段表中增加一表項,填寫有關資料,count置1;
其他程序B也呼叫該共享段時,無需再為該段分配記憶體,只需在B的段表中增加一表項,填寫該共享段的實體地址;在共享段的段表中,填上呼叫程序的程序名、存取控制等,再執行count:=count+1操作。
2)共享段的回收
包括撤消在程序段表中共享段所對應的表項,執行count:=count-1。
如果count為0,則由系統回收該共享段的實體記憶體,並取消共享段表中該段所對應的表項。
2.3分段保護
1)越界檢查
段表暫存器存放了段表長度;段表中存放了每個段的段長。
在進行儲存訪問時,將段號與段表長度比較,段內地址與段長比較。
2)存取控制檢查
尤其表現在不同程序對共享段的不同使用上。段表每個表項都設定“存取控制”欄位,規定該段的訪問方式:只讀,只執行,讀/寫。
3)環保護機構
規定:低編號的環具有高優先權。
遵循的原則:一個程式可以訪問駐留在相同環或較低特權環中的資料。一個程式可以呼叫駐留在相同環或較高特權環中的服務。