計算機作業系統 儲存器的管理

2021-09-14 03:04:16 字數 4099 閱讀 2270

程式的幾種裝入方式:

1.絕對裝入方式:使用者程式編譯後將產生絕對位址的目標**,絕對裝入程式按照裝入模組的位址將程式和資料裝入記憶體。程式中所使用的絕對位址既可以在編譯或彙編時給出,也可由程式設計師直接賦予,適用於單道程式環境。

2.可重定位裝入方式:多道程式環境下,編譯程式不可能預知經編譯後所得到的目標模組應放在記憶體的何處。因此,對於使用者程式編譯所形成的若干個目標模組,它們的起始位址通常都是從0開始,程式中的其他位址都是相對於其實位址計算的,它可以根據記憶體的具體情況將模組裝入到記憶體的適當位置。

3.動態執行時的裝入:可重定位的裝入方式不執行程式執行時在記憶體中移動位置,因為移動位置需要修改程式和資料的位址。動態執行時的裝入方式在把裝入模組裝入記憶體之後,並不立即把裝入模組中的邏輯位址轉換為實體地址,而是把這種位址轉換推遲到程式真正要執行時才執行。因此,裝入記憶體後的所有位址都仍是邏輯位址。

連續分配記憶體的幾種方式:

1. 單一連續分配:單道程式環境時,整個記憶體的使用者空間由該程式獨佔

2.固定分割槽分配:將整個使用者空間劃分微若干個固定大小區域,在每個分割槽只裝入一道作業。當有乙個空閒分割槽時,便可以再從外存的後備作業佇列中選擇乙個適當大小的作業裝入該分割槽。

3.動態分割槽分配:根據程序的需要,動態地為之分配記憶體空間。在實現動態分割槽分配時,將涉及到分割槽分配中所用的資料結構,分割槽分配演算法和分割槽分配與**操作這樣三方面的問題。

4.基於順序搜尋的動態分割槽分配:

1>首次適應演算法:這個演算法要求空閒分割槽鏈以位址遞增的次序鏈結。在分配記憶體時,從鏈首開始順序查詢,直至找到乙個大小能滿足要求的空閒分割槽為止。然後在按作業的大小,從該分割槽中劃出一塊記憶體空間,分配給請求者,餘下的空閒分割槽仍留在空閒鏈中。若從鏈首至鏈尾都找不到乙個能滿足要求的分割槽,則表明系統中已沒有足夠大的記憶體分配給該程序,記憶體分配失敗,返回。

3>最佳適應演算法:每次為作業分配記憶體時,總是把能滿足要求,又是最小的空閒分割槽分配給作業。為了加速查詢,該演算法要求將所有的空閒分割槽按其容量以從小到大的順序形成一空閒分割槽鏈。

4>最壞適應演算法:它在掃瞄整個空閒分割槽或鍊錶時,總是挑選乙個最大的空閒區,從中分割一部分儲存空間給作業使用,以至於儲存器中缺乏大的空閒分割槽。

5.基於索引搜尋的動態分割槽分配

1>快速適應演算法:又稱分類搜尋法,是將空閒分割槽根據其容量大小進行分類,對於每一類具有相同容量的所有空閒分割槽,單獨設立乙個空閒分割槽鍊錶。同時在記憶體中設立一張管理索引表,其中每乙個索引表項對應了一種空閒分割槽型別,並記錄該型別空閒分割槽煉表表頭指標,空閒分割槽的分類是根據程序常用的空間大小進行劃分的。

2>夥伴系統(後面講)

3>雜湊演算法:利用雜湊快速查詢的優點,以及空閒分割槽在可利用空閒分割槽表中的分布規律,建立雜湊函式,構造一張以空閒分割槽大小為關鍵字的雜湊表,該錶的每乙個表項記錄了乙個對應的空閒分割槽煉表表頭指標。

6.動態可重定位的分割槽分配:

1>緊湊:將記憶體中所有的作業程序移動,使它們全都鄰接。這樣,即可把原來分散的多個空閒小分割槽拼接成乙個大分割槽,可將乙個作業裝入該區。這種通過移動記憶體中作業的位置,把原來多個分散的小分割槽拼接成乙個大分割槽的方法稱為緊湊。緊湊會造成記憶體位址發生變化。

3>動態重定位分割槽分配演算法:與動態分割槽分配演算法基本相同,差別僅在於:在這種分配演算法中,增加了緊湊的功能。

對換:把記憶體中暫時不能執行的程序或者暫時不用的程式或資料換出到外存上,以便騰出足夠的空間,再把已具備執行條件的程序或程序所需要的程式和資料換入記憶體。

對換的型別:

1.整體對換:以整個程序為單位程序對換

2.頁面對換:以程序的乙個"頁面"或"分段"為單位進行的

程序的換出和喚入:

1.程序的喚出:首先選擇處於阻塞和睡眠狀態的程序,然後從中選出優先順序較低最低的,有時還需要考慮程序在記憶體中駐留的時間。如果系統中已無阻塞程序,便選擇優先順序最低的。在對程序喚出時,只能喚出非共享的程式和資料段,然後申請記憶體,啟動磁碟,將該程序的程式和資料傳送到磁碟的對換區上。若傳送過程未出現錯誤,便可**該程序所占用的空間。

2.程序的喚入:首先檢視pcb集合中所有程序的狀態,從中找出就緒狀態和喚出的程序。當有多個這樣的程序時,它將選擇已喚出時間最久的,並未它申請記憶體

分頁儲存管理方式:將使用者程式的位址空間分為若干個固定大小的區域,稱為"頁"或"頁面"。相應地,也將記憶體空間分為若干個物理或頁框,頁和塊的大小相同。這樣可將使用者程式的任一頁放入任一物理快中,實現離散分配。

分段儲存管理方式:它把使用者空間分為若干個大小不同的段,每段定義一組相對完整的資訊。在儲存器分配時,以段為單位,這些段在記憶體中可以不想鄰接。

段頁時儲存管理方式:分頁和分段兩種儲存管理方式結合的產物,它同時具有兩者的優點。

頁面和物理塊:分頁儲存管理將程序的邏輯位址空間分為若干個頁,並未各頁加以編號。相應地,也把記憶體的實體地址空間分成若干個塊,同樣為它們加以編號。在為程序分配記憶體時,以塊為單位,將程序中的若干個頁分別裝入到多個可以不相鄰接的物理快中。

頁面大小:頁面過小,會導致程序的頁表過長,占用大量記憶體。頁面過大,會使頁內碎片增大。頁面大小通常為1kb~8kb

1.基本的位址變換機構:當程序要訪問某個邏輯位址時,分頁位址變換機構會以頁號為索引去檢索頁表(頁表大多存在記憶體中,在系統中只設定了乙個頁表暫存器)。在執行檢索之前,先將頁號與頁面長度進行比較,若未發生越界錯誤,則將頁表位址與頁號和頁表項長度的乘積相加,便得到該表項在頁表中的位置,再將該頁的物理塊號裝入實體地址暫存器中,與此同時,也把有效的位址暫存器中的頁內位址送入實體地址暫存器的塊內位址段中,這樣便完成了轉換

2.具有塊表的位址變換機構:基本的位址變換機構需要二次訪問記憶體,為了提高位址變換速度,可在位址變換機構中增設乙個具有並行查詢能力的特殊高速緩衝暫存器,稱為「塊表」。每次位址變換機構將頁號送入高速緩衝暫存器,並將次頁號與快取記憶體中的所有頁號進行比較,若其中沒有與次相匹配的在去訪問記憶體中的頁表。

兩級頁表:由於頁表占用程序的空間過大(1mb),而且需要連續的記憶體,兩級頁表則可以解決這個問題。可利用將頁表進行分頁的方法,使每個頁面的大小與記憶體物理塊相同,然後離散地將各個頁面分別存放在不同的物理塊中,但要為離散的分配的頁表再建立一張頁表,稱為外層頁表。外層頁表中的每個頁表項中所存放的是某頁表分頁的首址。為了方便位址轉換,同樣需要增設乙個外層頁表暫存器,用於存放外層頁表的始址,並利用邏輯位址中的外層頁號作為外層頁表的索引,從中找到指定頁表的分頁位址,再通過該位址找到對應的頁表項。在程序執行時,每次僅把當前需要的一批頁表項調入記憶體,以後再根據需要陸續調入,這樣能節省空間。

反置頁表:為每乙個物理塊設定乙個頁表項,並將它們按物理塊的編號進行排序,其中的內容則是頁號和其所屬程序的識別符號。在利用反置頁表進行進行位址變換時,是根據程序識別符號和頁號,去檢索反置頁表。若檢索了整個反置頁表仍未找到匹配的頁表項,則表明此頁尚未裝入記憶體。反置頁表中只包含已經調入記憶體的頁面,並未包含尚未調入記憶體的頁面。因此,還必須為每個程序建立乙個外部頁表,該頁表包含了各個頁在外存的物理位置,通過它可將所需之頁面調入記憶體。

分段儲存方式的引入:

2.資訊共享:在實現對程式和資料的共享時,是以資訊的邏輯單位為基礎的。分頁系統中的"頁",只是存放資訊的物理單位,並無完整的邏輯意義,這樣,乙個可被共享的過程可能需要占用數十個頁面。

3.資訊保護: 資訊保護同樣是以邏輯單位為基礎的,而且經常是以乙個過程,函式或檔案為基本單位進行保護的。

4.動態增長:實際應用中,往往存在著一些段,尤其是資料段需要動態增長

分段位址變換機構:系統中設定了段表暫存器,用於存放段表始址和段表長度tl。在進行位址變換時,系統將邏輯位址中的段號與段表長度tl進行比較。若未發生越界,則根據段表的始址和該段的段號,計算出該段對應段表項的位置,從中讀出該段在記憶體的起始位址,然後再檢查段內位址是否超過該段的段長。

分段和分頁的主要區別:

1>頁是資訊的物理單位。分頁是系統為了消減記憶體的外零頭,提高記憶體的利用率,是系統的行為。分段中的段則是資訊邏輯單位,它通常包含一組意義相對完整的資訊,是為了滿足使用者的需要。

2>頁的大小由系統決定,每個系統中只能有一種大小的頁面。而段的長度不固定,通常由編譯程式在對源程式進行編譯時,根據資訊的性質來劃分。

3>分頁的使用者程式位址空間是一維的,是單一的線性位址空間,程式設計師只需利用乙個記憶符即可表示乙個位址。分段是使用者的行為,在分段系統中,使用者程式的位址空間是二維的,程式設計師在標識乙個位址時,即需給出段名,又需給出段內位址。

段頁式儲存位址變換:系統配置乙個段表暫存器,其中存放段表始址和段長tl。進行位址變換時,利用段表始址和段號來求出該段所對應的段表項在段表中的位置,從中得到該段的頁表始址,並利用邏輯位址中的段內頁號來獲的對應頁的頁表項位置,從中讀出該頁所在的物理塊號,在利用塊號和頁內位址來構成實體地址。

計算機作業系統 儲存器管理

1.1 單一連續分配 1.2 固定分割槽分配 1.2.1 分割槽大小相等 1.2.2 分割槽大小不相等 1.3 動態分割槽分配 1.3.1 資料結構 1.3.2 動態分配分割槽演算法 1.3.2.1 基於順序搜尋的動態分割槽分配演算法 1.3.2.1.1 首次適應演算法 first fit 1.3....

計算機作業系統 儲存器管理(4)

基本分頁儲存管理方式 離散分配方式 將乙個程序直接分散地裝入到許多不相鄰接的分割槽中,無需再 緊湊 記憶體。如果離散分配的基本單位是頁,則稱為分頁儲存管理方式 如果離散分配的基本單位是段,則稱為分段儲存管理方式。頁內碎片 在為程序分配記憶體時,以塊為單位將程序中的若干個項分別裝入到多個可以不相鄰接的...

計算機作業系統 儲存器管理(6)

虛擬儲存器 定義 基於區域性性原理,應用程式在執行之前,沒有必要全部裝入記憶體,僅須將那些當前要執行的少數頁面或段先裝入記憶體便可執行,其餘部分暫留在盤上。程式在執行時,如果它所要訪問的頁 段 已調入記憶體,便可繼續執行下去 但如果程式所要訪問的頁 段 尚未調入記憶體 稱為缺頁或缺段 此時程式應利用...