繼續作業系統的整理,每天看一節課,然後整理。保持這個節奏,每天都做一些無害的事情,就挺好的呢。
請求分頁便成為目前最常用的一種實現虛擬儲存器的方式。
請求分頁系統是建立在基本分頁基礎上的,為了能支援虛擬儲存器功能而增加了請求調頁功能和頁面置換功能。相應地,每次調入和換出的基本單位都是長度固定的頁面,這使得請求分頁系統在實現上要比請求分段系統簡單(後者在換進和換出時是可變長度的段)。
1.頁表機制
在請求分頁系統中所需要的主要資料結構是頁表。其基本作用仍然是將使用者位址空間中的邏輯位址變換為記憶體空間中的實體地址。
由於只將應用程式的一部分調入記憶體,還有一部分仍在盤上,故須在頁表中再增加若干項,供程式(資料)在換進、換出時參考。在請求分頁系統中的每個頁表項如下所示:
修改位 m:表示該頁在調入記憶體後是否被修改過。由於記憶體中的每一頁都在外存上保留乙份副本,因此,若未被修改,在置換該頁時就不需再將該頁寫回到外存上,以減少系統的開銷和啟動磁碟的次數;若已被修改,則必須將該頁重寫到外存上,以保證外存中所保留的始終是最新副本。簡言之,m 位供置換頁面時參考。
2.缺頁中斷機構
在請求分頁系統中,每當所要訪問的頁面不在記憶體時,便產生一缺頁中斷,請求 os 將所缺之頁調入記憶體。
缺頁中斷作為中斷,它們同樣需要經歷諸如保護 cpu 環境、分析中斷原因、轉入缺頁中斷處理程式進行處理、恢復 cpu 環境等幾個步驟。但缺頁中斷又是一種特殊的中斷,它與一般的中斷相比,有著明顯的區別,主要表現在下面兩個方面:
(1) 在指令執行期間產生和處理中斷訊號。通常,cpu 都是在一條指令執行完後,才檢查是否有中斷請求到達。若有,便去響應,否則,繼續執行下一條指令。然而,缺頁中斷是在指令執行期間,發現所要訪問的指令或資料不在記憶體時所產生和處理的。
(2) 一條指令在執行期間,可能產生多次缺頁中斷。系統中的硬體機構應能儲存多次中斷時的狀態,並保證最後能返回到中斷前產生缺頁中斷的指令處繼續執行。
3.位址變換機構
請求分頁系統中的位址變換機構,是在分頁系統位址變換機構的基礎上,再為實現虛擬儲存器而增加了某些功能而形成的,如產生和處理缺頁中斷,以及從記憶體中換出一頁的功能等等。
在為程序分配記憶體時,將涉及到三個問題:第一,最小物理塊數的確定;第二,物理塊的分配策略;第三,物理塊的分配演算法。
1.最小物理塊數的確定
這裡所說的最小物理塊數,是指能保證程序正常執行所需的最小物理塊數。當系統為程序分配的物理塊數少於此值時,程序將無法執行。程序應獲得的最少物理塊數與計算機的硬體結構有關,取決於指令的格式、功能和定址方式。
對於某些簡單的機器,若是單位址指令且採用直接定址方式,則所需的最少物理塊數為 2。其中,一塊是用於存放指令的頁面,另一塊則是用於存放資料的頁面。如果該機器允許間接定址時,則至少要求有三個物理塊。對於某些功能較強的機器,其指令長度可能是兩個或多於兩個位元組,因而其指令本身有可能跨兩個頁面,且源位址和目標位址所涉及的區域也都可能跨兩個頁面。正如前面所介紹的在缺頁中斷機構中要發生 6 次中斷的情況一樣,對於這種機器,至少要為每個程序分配 6 個物理塊,以裝入 6 個頁面。
2.物理塊的分配策略
在請求分頁系統中,可採取兩種記憶體分配策略,即固定和可變分配策略。在進行置換時,也可採取兩種策略,即全域性置換和區域性置換。於是可組合出以下三種適用的策略。
1) 固定分配區域性置換(fixed allocation,local replacement)
這是指基於程序的型別(互動型或批處理型等),或根據程式設計師、程式管理員的建議,為每個程序分配一定數目的物理塊,在整個執行期間都不再改變。採用該策略時,如果程序在執行中發現缺頁,則只能從該程序在記憶體的 n 個頁面中選出乙個頁換出,然後再調入一頁,以保證分配給該程序的記憶體空間不變。
實現這種策略的困難在於:應為每個程序分配多少個物理塊難以確定。若太少,會頻繁地出現缺頁中斷,降低了系統的吞吐量;若太多,又必然使記憶體中駐留的程序數目減少,進而可能造成 cpu 空閒或其它資源空閒的情況,而且在實現程序對換時,會花費更多的時間。
2) 可變分配全域性置換(variable allocation,global replacement)
這可能是最易於實現的一種物理塊分配和置換策略,已用於若干個 os 中。
在採用這種策略時,先為系統中的每個程序分配一定數目的物理塊,而 os 自身也保持乙個空閒物理塊佇列。當某程序發現缺頁時,由系統從空閒物理塊佇列中取出乙個物理塊分配給該程序,並將欲調入的(缺)頁裝入其中。這樣,凡產生缺頁(中斷)的程序,都將獲得新的物理塊。僅當空閒物理塊佇列中的物理塊用完時,os 才能從記憶體中選擇一頁調出,該頁可能是系統中任一程序的頁,這樣,自然又會使那個程序的物理塊減少,進而使其缺頁率增加。
3) 可變分配區域性置換(variable allocation,local replacement)
這同樣是基於程序的型別或根據程式設計師的要求,為每個程序分配一定數目的物理塊,但當某程序發現缺頁時,只允許從該程序在記憶體的頁面中選出一頁換出,這樣就不會影響其它程序的執行。如果程序在執行中頻繁地發生缺頁中斷,則系統須再為該程序分配若干附加的物理塊,直至該程序的缺頁率減少到適當程度為止;反之,若乙個程序在執行過程中的缺頁率特別低,則此時可適當減少分配給該程序的物理塊數,但不應引起其缺頁率的明顯增加。
3.物理塊分配演算法
在採用固定分配策略時,如何將系統中可供分配的所有物理塊分配給各個程序,可採用下述幾種演算法。
1) 平均分配演算法
這是將系統中所有可供分配的物理塊平均分配給各個程序。
例如,當系統中有 100 個物理塊,有 5 個程序在執行時,每個程序可分得 20 個物理塊。這種方式貌似公平,但實際上是不公平的,因為它未考慮到各程序本身的大小。如有乙個程序其大小為 200 頁,只分配給它 20 個塊,這樣,它必然會有很高的缺頁率;而另乙個程序只有 10 頁,卻有 10 個物理塊閒置未用。
2) 按比例分配演算法
這是根據程序的大小按比例分配物理塊的演算法。
3) 考慮優先權的分配演算法
在實際應用中,為了照顧到重要的、緊迫的作業能盡快地完成,應為它分配較多的記憶體空間。通常採取的方法是把記憶體中可供分配的所有物理塊分成兩部分:一部分按比例地分配給各程序;另一部分則根據各程序的優先權,適當地增加其相應份額後,分配給各程序。在有的系統中,如重要的實時控制系統,則可能是完全按優先權來為各程序分配其物理塊的。
《作業系統》學習筆記 儲存管理
目錄早期的記憶體管理方式 分頁分段 分頁和分段的區別 段頁式虛擬記憶體 請求分頁 頁面置換演算法 記憶體塊的分配和抖動 動態執行時裝入方式 程序的記憶體映像在不同時候處於不同位置 將邏輯位址轉變為記憶體實體地址的過程 缺點 動態重定位 在程式執行期間,每次訪問記憶體之前進行重定位 缺點 需要硬體支援...
作業系統學習
看了幾天的資料,今天終於有時間把測試環境搭建起來。模擬機bochs nasm ultraiso 模擬機bochs的設定不難,在網上搜了些資料和參考了bochs的說明檔案,基本上就可以組建並執行起來。在網上下了個dos的映象,執行bochs從a盤啟動,之後把硬碟分割槽格式化,乙個最基礎的測試環境就完成...
作業系統學習
1 處理器硬體故障中斷事件 由處理器,記憶體儲器,匯流排等故障引起 程式性中斷事件 2 處理器執行機器指令引起 1.1 除數為零,運算元溢位等算術異常 1.3 終止程序指令 終止程序 3 自願性中斷事件 1.1 處理器執行陷入指令請求os服務引起 1.2 請求分配外設,請求io等 1.3 處理流程是...