作業系統總結之虛存

2021-08-25 20:41:13 字數 2980 閱讀 7816

虛擬記憶體

前一章記憶體管理介紹了幾種技術如分頁分段把乙個程序分成多個頁,分開存放,在pcb中維持乙個頁表。程序執行的前提是程序的全部頁都已經在記憶體中了。

虛擬記憶體技術就解決了這個問題,不需要乙個程序把全部的頁都放在記憶體才能執行。

動態載入雖然也解決了這個問題,但是需要程式設計師完成,非常麻煩。

其實我們發現,乙個程式包含了很多條件語句還有異常處理等,這些**肯定要選擇執行的。所以全部調入會顯得冗餘,增加了磁碟到記憶體的傳輸時間。並且減少乙個程序的空間可以使得記憶體容納更多的程序,增加

增加多道程式的度數會有「過度分配」的情況,當頁錯誤發生,需要調入頁面,但是記憶體中沒有空閒幀,那麼必須頁置換。頁置換是將頁錯誤的時間加倍了,因為要換入和換出。

基本頁置換:

按需調頁中需要在記憶體中有一塊空閒幀來存放調入的頁,如果沒有空閒幀,就要發生頁置換。

頁置換過程:挑乙個犧牲幀,並更新幀表和頁表。

可以用修改位或髒位降低開銷,當修改位被設定,則意味著這個頁從磁碟讀入後已被修改,那麼就需要寫回,如果修改位沒被修改,則不需寫回。

引用串用來評估乙個頁置換演算法的效能:記憶體引用的頁號序列。如1,2,3 表示引用頁號1,2,3。

當不考慮記憶體幀的數量的情況下,只有頁的第一次引用發生頁錯誤,但是如果幀的數量限制,則會複雜的多。

1.fifo頁置換:

將記憶體的頁看成是乙個fifo佇列,替換的頁是最舊的頁即最先調入記憶體的頁,加入的頁放到佇列的尾部。這不是乙個好辦法,因為最先進入的頁可能是一直要用到的頁,如果替換的是活動頁,則此頁會馬上又一次頁

錯誤,換回記憶體。

belady 異常:頁錯誤數隨著記憶體幀數的增加而增加。

2.最優置換 opt

不會產生belady異常,並且頁錯誤率是最低的。因為他替換的是將來最久才被用到的頁。

3.lru置換

選擇的頁是最近最少使用的頁。

對於引用串,如果倒轉,lru置換和opt置換的頁錯誤率是一樣的。

lru實現需要硬體支援:

1.計數器。每個頁幀會附帶乙個最近使用時間,置換出的頁就是時間最小的。

2.棧。棧頂加入頁,棧尾寫出頁。

4.近似lru置換

因為lru實現需要許多硬體支援,因此可能只能近似的實現lru。

通過新增引用位,每當乙個頁被引用,該為就置1.通過檢查該位,可以知道哪些頁未被使用。

(1)附加引用位演算法。

在乙個頁的引用位保留8位,初始為0000 0000,第一次被使用,則1000 0000,第二次未被使用,則0100 0000.以此類推。找到這8位化為10進製後最小的頁置換。

(2)二次機會演算法。

也是在頁中保留乙個引用位,如果為1,則給予第二次機會,如果為0,則直接置換。

(3)增強型二次機會演算法。

將引用位和修改位作為有序對,(0,0)表示未被引用和修改,則說明是最佳的lru置換頁。

5.基於計數的頁置換

(1)least frequently used lfu:保留乙個計數器,記錄引用次數。缺點是以前一直用,但是現在不用,則仍會留在記憶體。

解決方法:定期將計數右移一位。

(2)mfu:最常使用頁置換,即把計數最大的頁換出。

6.頁緩衝演算法

7.應用程式:不需要提供虛擬記憶體。

生磁碟:沒有檔案系統的磁碟。

接下來講幀分配,幀分配的最小數量是根據計算機體系結構,最大數量是根據物理記憶體數量。

分配方法:

1.平均分配。

2.比例分配。根據優先順序和程序大小。

幀分配和頁置換是相關聯的。

全域性置換:乙個程序從任意幀中選擇乙個置換,不管該幀是否已分配。 缺點是不能控制頁錯誤率。

區域性置換:僅從自己的分配幀中置換。

顛簸:頻繁調頁。

顛簸發生情景:

當cpu使用率降低時,cpu匯入更多程序,如果用全域性置換,如果乙個程序需要很多幀,因此發生頁錯誤會從其他程序中拿一點,而如果其他程序也頁錯誤,則會從其他程序中拿幀,因此程序都到程序的等待調頁裝置

佇列,cpu使用率降低,惡性迴圈。

採用區域性置換也不能防止系統顛簸。因此我們必須要預先就分配足夠多的幀。因此引入了區域性模型。

區域性模型是那些經常使用的幀,因此程序分配的幀一定要大於區域性模型的幀大小。

1.工作集合模型:working-set model 。基於區域性性。

工作集合視窗:預設△是最近用到的頁。對於△的取值很關鍵。

工作集合:在工作視窗中使用的頁的集合。

如果總的可用幀數量為w,程序i的工作集合為wsi,則w-wsi為其餘的可用幀,直到<0就不分配。

如果在記憶體中的程序的工作集合之和大於可用幀數量,則系統顛簸。

2.頁錯誤頻率pff。

預先設定頁錯誤率的上下界。當頁錯誤率大於上界,則為程序分配更多的幀。這樣非常直接。

當對於乙個新的區域性進行按需調頁時,頁錯誤率達到波峰。

如果呼叫open(),需要先找目錄,再找檔案,因此需要記憶體訪問+磁碟訪問。如果將檔案i/o作為記憶體的普通訪問,則稱為檔案的記憶體對映。

在記憶體中的檔案可以修改就不立即寫回。

前面講到記憶體對映檔案,下面是記憶體對映i/o,一組記憶體專門對映到裝置暫存器,讀取該塊位址如同讀取裝置暫存器。

核心記憶體的分配與使用者程序的分配記憶體不同,使用者程序都是按頁分配,但是核心分配需要從空閒記憶體池中獲取,而不是通過空閒幀鍊錶中獲取。

1.buddy系統。

通過對於連續物理頁進行二分,以至於能夠最小包容核心需求記憶體即可。如如果核心需求23kb空間,則最小得到的空間為32kb,因為要是2的冪。

優點:快速合併。

缺點:內部碎片。

2.slab分配。

slab是由乙個或多個物理頁組成。

cache都有乙個或多個slab。而乙個核心資料結構都有乙個cache。

cache儲存核心。核心需要空間就直接從cache中獲得。

slab三種狀態:滿,空,部分滿。

slab先從部分滿的slab中分配,再從空的slab中分配。否則,分配新的slab,並賦給cache。

slab沒有內部碎片而且能夠快速分配。因為已經cache中建立好了空間。

作業系統原理學習總結 虛存技術

虛存技術的基本概念 可以在頁式或段式記憶體管理的基礎上實現 在裝入程式時,不必將其全部裝入到記憶體,而只需將當前需要執行的部分頁面或段裝入到記憶體,就可以讓程式開始執行 在程式執行過程中,如果需要執行的指令或訪問的資料尚未在記憶體 稱為缺頁或缺段 則由處理器通知作業系統將相應的頁面或段調入到記憶體,...

作業系統之作業系統引論

掌握作業系統的概念 特徵 功能和提供的服務,作業系統的發展與分類 作業系統是計算機硬體與使用者的橋梁,是計算機硬體上的的第一層軟體,是對硬體系統的首次擴充.作業系統是一組控制和管理計算機硬體和軟體資源.合理地對各類作業 job 進行排程,以及方便使用者的程式的集合.無作業系統 單批道作業系統 多批道...

作業系統總結

老師每次都要求我們考試之後,要再次看書,去做到真正的學習。我們在前一段時間的學習都是都是在積累,還沒有真正的收穫,這次我嚴格按照要求做到,也算是督促自己能夠養成好的習慣吧。這次我看書花費了乙個小時,但感覺很有收穫。先說一下再看之後的總體感受吧,考完之後忽然就覺得世界亮了 這裡說的有點誇張了 心裡總算...