《計算機操作系統》學習筆記(三)---存儲器管理

一、程序的裝入和鏈接

程序的裝入分絕對裝入方式和可重定位裝入方式兩種;

程序的鏈接可分爲:靜態鏈接,即程序運行之前,已將各目標模塊及它們所需的函數庫連接成一個完整的裝配模塊;裝入時動態鏈接,即 程序裝入時,將各目標模塊及它們所需的函數庫連接成一個完整的裝配模塊;運行時動態鏈接,即程序運行時,將各目標模塊及它們所需的函數庫連接成一個完整的 裝配模塊;

二、儲存器的分配方式

 

1、單一連續分配

把內存分爲系統區和用戶區兩部分,系統區僅提供給OS使用,用戶區提供給用戶使用;這種方式只用於單用戶、單任務的操作系統。

2、固定分區分配

把內存的用戶空間劃分爲若干個固定大小的分區,併爲之建立一張分區使用表,當一用戶程序要裝入時,由內存分配程序檢索該表,從中找出一個能滿足要求的、尚未分配的分區,將其分配之。

3、動態分區分配

根據進程的是以需要,動態的爲之分配內存空間,大小剛適,因而不會浪費存儲空間。分區分配中的數據結構包括空閒分區表和空閒分區鏈兩種。分區分配算法包括首次適應算法、循環首次適應算法、最佳適應算法。

4、可重定位分區分配

由於動態分配會造成許多不能使用的小的空閒區,稱爲“零頭”或“碎片”,這時,可以將多個分散在內存中的作業的地址重定位,將它們“拼接”或“緊 湊”起來,這樣,那些“零頭”或“碎片”也就會連接成更大的連續存儲空間以便分配之。可重定位分區分配與動態分區分配基本相同,僅僅是前者增加了緊湊功 能。

5、對換與覆蓋

對換技術:把內存中暫時不能運行的進程或暫時不用的程序和數據,調出到外存上,以便騰出足夠的內存空間;

覆蓋技術:一個程序被分爲若干功能上相對獨立的程序段,讓那些不會同時執行的程序段共享一塊內存。

三、儲存器的管理方式

 

1、分頁管理方式

頁面與頁表:將一個進程的邏輯地址空間分成若干個大小相等的片,稱爲頁面;系統又爲每個進程建立一張頁面映射表,簡稱頁表。

地址變換機構:

基本的:通過邏輯地址的頁號與頁表寄存器的頁表始地址相加,得出該頁號在頁表中的頁表項,從而得出該頁號相對應的物理塊號,根據物理塊號與通過邏輯地址的頁內地址可得出物理地址。

有快表的:在基本的地址變換機構中增加了“聯想寄存器”或“快表”,將頁表放在快表中,如果快表中沒有該頁號對應的頁表項,再從內存中的頁表查找,之後再將此快表項加入快表中。

2、請求分頁管理方式

請求分頁是建立在基本分頁基礎上的,爲了能支持虛擬存儲器功能而增加了請求調頁功能和頁面置換功能。

(1)硬件支持

頁表機制:比基本頁表增加了(狀態位P,訪問字段A,修改位M,外存地址位);

缺頁中斷機構:與一般中斷不同,它是在指令執行期間產生和處理中斷信號的,並且一條指令在執行期間可能要產生多次缺頁中斷;

地址變換機構:比基本分頁系統地址變換機構增加了某些功能,如:產生和處理缺頁中斷,以及從內存中換出一頁功能等等。

(2)內存分配策略

物理塊的分配策略包括:

固定分配局部置換,即爲每個進程固定分配一定數目的物理塊,頁面置換時,只能從該進程在內存的n個頁面中選出一個進行置換;

可變分配全局置換,即先爲每個進程固定分配一定數目的物理塊,OS也保持一個空閒物理塊隊列,當哪個進程缺頁時,OS再爲之分配,直至用完再進行置換,置換時,可以選擇全部進程的所有頁中的一頁進行置換;

可變分配局部置換,即先爲每個進程固定分配一定數目的物理塊,OS也保持一個空閒物理塊隊列,當哪個進程缺頁時,OS再爲之分配,直至用完再進行置換,置換時,只能選擇請求調頁的那個進程的其中一頁進行置換。

(3)內存分配算法

物理塊的分配算法包括:

平局分配算法,即將系統中所有可供分配的物理塊,平均分配各個進程;

按比例分配算法,即根據進程的大小按比例分配物理塊給各個進程;

考慮優先權的分配算法,一部分按比例地分配給各進程,另一部分即根據各進程的優先級,適當地增加相應份額後,分配給各進程。

(4)頁面置換策略

在請求分頁系統中的外存分爲兩部分:用於存放文件的文件區和用於存放對換頁的對換區,通常由於對換區常使用連續分配方式,而文件區採用離散分配方式,所以對換區的磁盤I/O速度比文件區的高。

*系統有足夠對換區空間,可以全部從對換區調入所需頁面;

*系統沒有足夠對換區空間,不會被修改的頁面,從文件區調入,會被修改的,從對換區調入;

*UNIX方式,未運行過的頁面,從文件區調入,曾經運行過的,從對換區調入。

(5)頁面置換算法

*最佳置換算法(Optimal):所選擇的被淘汰頁面,將是以後永不使用或最長時間不被訪問的頁面;

*先進先出置換算法(FIFO):先進的頁面先被置換;

*最近最久未使用置換算法(LRU):每個頁面增加一個訪問字段,記錄該頁面有多久沒被訪問過了,最近最久未使用的頁面先被置換;

*Clock置換算法:每個頁面增加兩個訪問字段A和M,A記錄最近是否被訪問(0表示未被訪問),M記錄是否被修改(0表示未被修改);分三步尋 找淘汰頁面:第一步首先尋找(A=0,M=0)的頁面,第二步尋找(A=0,M=1)的頁面,並將所有A置0,第三步重複第一步,必要時重複第二步,此時 一定能找到淘汰頁面(A=0,M=0)或(A=0,M=1);

3、分段管理方式

段與段表:將一個作業按照邏輯關係分成若干個段,稱爲段;系統又爲每個進程建立一張段映射表,簡稱段表。

地址變換機構:通過邏輯地址的段號與段表寄存器的段表始地址相加,得出該段號在段表中的段表項,從而得出該段號相對應內存的基址,根據內存的基址與通過邏輯地址的段內地址可得出物理地址。

4、請求分段管理方式

請求分段也是建立在基本分段基礎上的。

(1)硬件支持

段表機制:比基本段表增加了(狀態位P,訪問字段A,修改位M,外存地址位,存取方式,增補位);

缺段中斷機構:同樣是在指令執行期間產生和處理中斷信號的,並且一條指令在執行期間可能要產生多次缺段中斷,但分段信息是邏輯單位,不可能出現一條指令或一組信息被分割在兩個分段中;

地址變換機構:比基本分段系統地址變換機構增加了某些功能,如:產生和處理缺段中斷,以及從內存中換出一段功能等等。

(2)分段的共享和保護

可在系統中配置一張共享段表,所有共享段在該段表中佔有一個表項,每個表項包括共享進程計數,即該段有多少個進程在共享;存取控制字段,即不同進程可以有不同的存取權限;段號,即不同進程可以以不同的段號去共享該段;還有段長,內存始地址,存在位等信息。

分段保護包括越界檢查和存取控制檢查。

5、分頁與分段的主要區別

(1)頁是信息的物理單位,而段則是信息的邏輯單位;

(2)頁的大小固定且有系統決定,而段的長度不定,用戶編寫的程序不同而不同;

(3)分頁的作業地址是一維的,而分段的作業地址空間則是二維的,程序員在標識一個地址時,既得給出段名,又得給出段內地址。

6、段頁式管理方式

段頁式既能夠像分頁系統一樣有效地提高了內存的利用率,又能夠像分段系統一樣很好地滿足用戶需要:如圖

地址變換機構:

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