作業系統第四章 儲存管理子系統

2021-10-09 03:30:44 字數 3680 閱讀 7792

重點:分頁、分段技術

1.儲存器層次結構

(滿足不同位置資料需求-速度快、不易失)

你比如說直接跟cpu對接的 暫存器 cache 記憶體 外存(常理解為硬碟)他們讀取的速度不一樣、易失性也不一樣。

負責管理上面的結構的—儲存管理器。

—程序的換進換出和頁面置換都是記憶體不足造成的。—

2.單道程式儲存管理

把整個記憶體劃分為系統區和使用者區,使用者區負責執行使用者程式,系統區用於執行作業系統程式。

大概有三種實現方式

(上面的模型已經不再採用,現代作業系統一般都能同時執行多個程序。)

3.固定分割槽的多道程式系統

將記憶體劃分出多個記憶體塊,用來裝載不同的程序。

多道程式增加了cpu的利用率。

4.重定位和儲存保護

多道程式技術引發了兩個很重要的問題:位址重定位和儲存保護。

(當乙個程式被鏈結時,聯結器必須知道程式將在記憶體的什麼位址開始執行。)

1.重定位—既定的記憶體位置發生改變(比如說檔案內的相對位址到記憶體中的絕對位址)(如果簡單解決會產生一部分安全問題,會讓很多程式訪問不屬於他的位址)(從實際的實體地址,到記憶體中的虛擬位址)

另一種解決方案,在機器中增加兩個特殊的硬體暫存器。

(基位址暫存器和邊界暫存器)

基位址加偏移量,先判斷是否在邊界暫存器範圍內(就是說在不在可訪問位址之內),然後就能找到實際位址。(時至今日,又沒有人用了。。。。)

儲存保護:就是設定好邊界,讓不該訪問其他絕對位址的程序無法訪問它不該訪問的位址。

5.交換技術

5.1交換策略策略

它把各個程序完整地調入記憶體,執行一段時間,然後再放回到磁碟上(解決記憶體不夠大的問題)

5.2虛擬儲存器策略

交換技術圖圖—這裡面每一塊的記憶體大小,都是浮動的。

浮動記憶體塊大小就涉及到浮動記憶體分配策略。(動態分配)

(以下是基於交換策略)

5.1.1.基於點陣圖的儲存管理和基於鍊錶的儲存管理

簡單描述一下,位圖管理中1代表被占用了,0表示空閒。

鍊錶的話 p代表被程序占用 h代表空閒

7.基於鍊錶的儲存管理的五種記憶體分配演算法我們

目的:我們希望找到一種分配策略,滿足以下要求的若干。

1.快速放入檔案 2.檔案無論大小能被放下 3.檔案之間間隙夠小,不至於很大浪費。檔案間間隙夠大,可以再放下檔案。

1.最先匹配法

只要有大於等於程序所需要的空閒記憶體,給他!

2.下次匹配演算法

在最先匹配演算法的基礎上,如果下次有另乙個程式進來,會從上次那個點的下乙個點開始最先匹配。而不是像最先匹配,每次都從端點開始匹配。這種演算法,較大的空閒分割槽不容易,儲存,速度雖然快,但是效能比最先匹配演算法差一點。

3.最佳匹配演算法

搜尋整個磁碟,找到最小的空間能裝下檔案的地方。

但是它會把空間切割的很小。

4.最壞匹配演算法

找到最大的空間分給他。(可以盡可能保證,被切割的空間足夠大,可以裝下下乙個程序)

5.快速匹配演算法

將常用的程序的記憶體,為他們設定各自的鍊錶。鍊錶指向,被切割成固定大小,直接找到常用的、專用的記憶體。

邏輯位址和實體地址

------上面說的都是交換技術,這是基於每一次都都已把程式全部裝進記憶體中。我們還要解決記憶體不能一次把程式全部裝進的問題。------虛擬儲存技術。區別:交換的話,把每乙個程序完整的先拿進來,然後來回換。虛擬的話,需要哪部分先掉進來哪部分(程式和資料的一部分),包括資料。

8.虛擬儲存技術

基本思路:程式的**、資料和棧的總大小可以超過實際可用的物理記憶體大小,等我們需要用到那一塊的時候再說。(多出那部分,先存在硬碟裡,先把需要的放在記憶體裡。)

—>前期是用覆蓋塊的思想實現虛擬儲存技術的。

—名詞解釋:覆蓋塊—覆蓋塊指的不是記憶體要被覆蓋的塊,而是程式被劃分的塊,就是執行完可以覆蓋掉的程式,然後下乙個覆蓋塊再進來覆蓋掉。

—>後期這個技術從程式設計師手動完成,變為由虛擬儲存器來完成。

9.虛擬頁式儲存管理

大部分虛擬儲存系統採用的是一種稱為-分頁-的技術。

我們在程式中或者大多數計算機本身使用的就是虛擬位址,並不是實際的實體地址。

mmu (儲存管理單元)—它負責把虛擬機器對映為實體地址

10.頁框—把物理記憶體劃分為許多個固定的記憶體塊-物理頁

11.頁面-把虛擬空間也劃分為大小相同的塊—虛擬頁面

(頁面一般多餘頁框)(頁面大小必須是2的整數次冪)

頁面中儲存著對應的物理頁面也就是頁框號

12.有效位-也就是說不是所有的頁面

(虛擬位址在實際記憶體中都能找到位置對應)—有效位來描述每個虛擬頁面是否在記憶體中。

13.如果不在引起-缺頁中斷

(頁表-存著頁面和頁框的對應關係)

–頁表–

—整體梳理下這個虛擬技術的流程,首先我們先預訂號虛擬記憶體和好實際記憶體的對應關係-這會產生乙個–頁表

頁表裡面儲存的結構-左邊一般是頁面一列,右邊一般是頁框一列。(這塊要注意,頁面和頁框大小都是一一對應的,所以實際位址(實體地址)就是等於頁面位址的偏移量+頁面對應的實體地址的開始。

(但是我們前期說過一般來說頁面的大小大於頁框的大小,所以說有一部分是沒有與實體地址對應的,造成缺頁,等我們要使用到相應的頁面的時候再去改,再去生成相應的對應,也就是把沒有對應實體地址的頁面再裝入頁表中。(頁表中的頁面都是有對應關係的))

頁表還存在多級頁表(並不把所有頁表放在記憶體中,需要再換進來)

分頁 頁面裝入

因為缺頁的存在,我們要有相應的頁面置換演算法

最優頁面置換演算法

所有現在已經換進的頁面,計算下次訪問之前還要多長時間,換出最長時間才能被訪問的頁面。(這種演算法無法實現,可以用來做與其他演算法的評價)

2.最近未使用頁面置換演算法

將最近使用最少的頁面置換出去。

3.先進先出置換演算法

誰是現在已經換進來頁面中最先進來的頁面,將它換出。

但是有可能換出的頁面是經常訪問的頁面。

4.第二次機會頁面置換演算法

二次機會,在先進先出的基礎上,標記曾經被訪問過的頁面為1,再給他一次機會,先不出局,移動到頁面隊尾。

(如果引用都是1都被引用過,那就是先進先出了)

5.時鐘頁面替換演算法—加入指標(原理一樣,只是指標實現,而不是鍊錶)(因為對於二次機會演算法,用鍊錶實現的過程中,需要頻繁移動頁面,開銷很大。用指標解決這種問題)

6.最久最少使用頁面替換演算法(選擇最近很少訪問)(lru)

每乙個頁面進來以後,如果訪問這個剛進來的頁面標記為加1,其他標記為減1,當需要去換出頁面的時候,我們把標記位最小(最少訪問換出去)

作業系統第四章 儲存器管理

1.儲存器的層次管理 訪問速度從上往下依次降低 可重定位裝入方式 多道程式環境下的起始位址是0開始,根據記憶體 當情況,將裝入模組裝入合適位置 3.連續分配方式 對換 將記憶體上暫時不能執行的程序或者暫時不用的程式和資料調出到外存上。提高記憶體利用率。可分為程序對換 頁面對換 分段對換。為了實現程序...

作業系統第四章

2 分割槽分配演算法 動態分割槽方式,分割槽多 大小差異各不相同,此時把乙個新作業裝入記憶體,更需選擇乙個合適的分配演算法,從空閒分割槽表 鏈中選出一合適分割槽 首次適應演算法ff 迴圈首次適應演算法 最佳適應演算法 最差適應演算法 快速適應演算法 4 動態重定位分割槽分配 有緊湊功能的動態分割槽分...

作業系統第四章

常用排程演算法 先來先服務演算法 fcfs 短程序優先演算法 spf 短剩餘時間優先演算法 srt 最高響應比優先演算法 hrrn 時間片輪轉演算法 rr 和多級反饋演算法 mfq 先來先服務演算法 fcfs 基本思想是按照程序進入就緒佇列的先後次序來分配處理機.採用不可剝奪方式 fcfs演算法很少...