2.3存儲管理
存儲器管理的對象是主存儲器(主存、記憶體)。
主要功能包括:配置設定 回收主存空間 提高主存使用率擴充主存 對主存資訊實作有效保護
2.3.1 基本概念
1. 存儲器的結構
一般結構有兩種:寄存器—主存—外存
寄存器—緩存—主存—外存
存儲組織的功能:是在存儲技術和cpu尋址技術許可的範圍内組織合理的存儲結構,
使得各層次的存儲器都處于均衡的繁忙狀态
(1) 虛拟位址:對程式員來說,資料的存放位址是由符号決定的,故稱為符号名位址
他是從0号單元開始編址,并順序配置設定所有符号名所對應的位址單元。由于符号名位址不是主存中的真實位址,是以也稱為相對位址,程式位址,邏輯位址,虛拟位址。
(2) 位址空間。把程式中由相對位址組成的空間叫做邏輯位址空間。相對位址空間通過
位址再定位機構轉換到絕對對位址空間,絕對位址空間也叫實體位址空間。
總結:邏輯位址空間是邏輯位址的集合,實體位址空間是實體位址的集合。
2. 位址重定位。
将邏輯位址轉換成主存實體位址的過程稱為位址重定位。
位址重定位分為 靜态位址重定位和動态位址重定位。
(1) 靜态位址重定位。就是程式裝入主存時已經完成了變換。
優點:無須硬體位址變換機構的支援。它隻要求程式本身是可重定位的
缺點:必須給作業配置設定一個連續的存儲區域,在作業的執行期間不能擴充存儲空間,也不能在主存中移動,多個作業難以共享主存中的同一程式副本各資料。
(2) 動态位址重定位。就是程式運作期間完成交換。
優點:程式執行期間可以換入和換出主存,程式可在主存中移動,可以充分利用空間。可買實作共享。
2.3.2存儲管理方案
存儲管理的主要目的是解決多個使用者使用主存的問題。
主要包括 分區存儲管理、分頁存儲管理、分段存儲管理、段頁式存儲管理、虛拟存儲管理
(1) 分區存儲管理,早期的方案,
按分區的劃分方式分為 固定分區、可變分區 、 可重定位分區
固定分區:一種靜态分區方式
可變分區:一種動态分區方式
可重定們分區。解決了碎片問題,基本思想是,移動所有已配置設定好的分區,使之成為連續區域,有代碼,位址發生變化,是以有位址重定位問題。
分區的保護:通常采用上界和下界寄存器
上界寄存器存放作業的裝入位址。下界寄存器裝入作業的結束位址
形成的實體位址必須滿足
上界寄存器<=實體位址<=下界寄存器
或者采用基址寄存器和限長寄存器,
基址寄存器存放作業的裝入位址,限長寄存器存入作業的長度,
形成的實體位址必須滿足:
基址寄存器<=實體位址<=基址寄存器+限長寄存器
2.3.3 分頁存儲管理
解決使用者程式必須裝入連續的位址空間中,在分區管理方案中,如果滿足不了,則需要進行分區靠攏操作,這樣耗費系統時間,為此,引入分頁存儲管理方案
1. 純分頁存儲管理
1) 分頁原理
将一個程序的位址空間劃分成若幹個大小相等的區域,稱為頁,相應地,将主存空間劃分成與頁相同大小的若幹個實體塊,稱為塊或頁框,為程序配置設定主存時,可将程序中若幹頁分别裝入多個不相鄰接的塊中。
2) 位址結構
分頁系統的位址結構圖2-10所示
特點:32位,注意看圖
1) 頁表
将程序的每一頁離散地配置設定到記憶體的多個實體塊中後,系統就保證能在記憶體中找到每個頁面所對應的實體塊,為此,系統為每個程序建立了一張頁面射表,簡稱頁表
2.快表
2.3.4分段存儲管理
段是資訊的邏輯機關。是以分段系統的一個突出優點是易于實作段的共享,即允許若幹個程序共享一個或多個段,可簡單地實作段的保護。在實作程式和資料的共享時,常常以資訊的邏輯機關為基礎,分頁系統中的每一頁隻是存放資訊的實體機關,其本身沒有完整的意義,因而不便于資訊共享,而段卻是資訊的邏輯機關,有利于資訊的共享和保護。
1. 分段的基本原理
在分段存儲管理方式中,作業的位址空間被劃分為若幹段,每段是一組完整的邏輯資訊,
都是從零開始編址的一段連續的位址空間,各段長度不等,允許一個作業最多有64k段,
每段的最大長度為64kb
在分段式存儲管理系統中,為每段配置設定一個連續的分區,程序 中和段可以離散地配置設定到記憶體的不同分區,在系統中為每個程序建立一張段映射表,段表。每段在表中占有一表項,其中記錄了該段在記憶體中的起始位址(基址)。和段的長度。利用段表寄存器中段表長度與邏輯位址中的段号比較,若段号超過段表長度則産生越界中斷。
2.3.4虛拟存儲管理
前面介紹的存儲管理方案中,必須為每個作業配置設定 足夠的空間,裝入全部資訊,當主存空間不能滿足作業要求時,作業便無法裝入主存執行。虛拟存儲管了解決了這一問題。
即裝入部分内容便可運作,其餘部分暫時留在磁盤上,需要時再裝入主存。
1. 虛拟存儲器的實作
虛拟存儲器具有請求調入功能和置換功能,可以把作業的一部分裝入主存使其開始運作,能從邏輯上對主存容量進行擴充。虛拟存儲器的邏輯容量由主存和外存容量之和以及cpu可尋址的範圍來決定,其運作的速度接近于主存速度。虛拟存儲器實作主要有以下三種方式。
(1)。請求分頁系統。
在分頁系統的基礎上,增加了請求調頁功能和頁面置換功能形成的頁式虛拟存儲系統。它允許隻裝入若幹頁的使用者程式和資料(而非全部程式),就可以啟動運作,以後再通過調頁功能和頁面轉換功能,陸續把将要使用的頁面調入主存,同時把暫不運作的頁面置換到外存上,置換時以頁面為機關。
(1) 請求分段系統。在分段系統的基礎上。。。以請求分頁系統雷同,隻不過它是以段為機關的,注意是段,而不是頁。
(2) 請求段頁式系統,在段頁式系統的基礎上,增加了請求調頁和頁而置換功能 所形成的段頁式虛拟存儲系統。
2. 請求分頁管理的實作
請求分頁是在純分頁系統的基礎上,增加了請求調頁功能、頁面轉換功能所形成的頁式虛拟存儲系統,是目前常用的一種虛拟存儲器的方式。
請求分頁的是在純分頁系統的基礎上,增加了請求調頁功能、頁面置換功能所形成的頁式虛拟存儲系統,是目前常用的一種虛拟存儲器的方式。
請求分頁的頁表機制是在純分頁的頁表機制上形成的,由于隻将應用程式的一部分調入主存,還有一部分仍在外存上,故需在頁表中再增加若幹項,如狀态位、通路字段、輔存位址等供程式在換進、換出參考。
***在請求分頁系統中,每當所要通路的頁面不在主存時,便産生一個缺頁中斷,請求調入所缺的頁,缺頁中斷與一般中斷的主要差別在于,缺頁中斷在指令執行期間産生和進行中斷信号,而一般中斷在一條指令執行結束後,下一條指令開始執行檢查和進行中斷信号,缺頁中傳回到被中斷指令的開始重新執行該指令,而一般中斷傳回到下一條指令執行,一條指令在執行期間,可能會産生多次缺頁中斷。
3. 頁面置換算法
在程序運作過程中,如果發生缺頁而記憶體又無空閑塊時,為了保證程序能正常運作,不必須從記憶體中調出一頁程式或資料送入磁盤的對換區。但究竟将哪個頁面調出,需要一個頁面置換算法來确定,常用的頁面轉換算法如下:
1) 最佳(optimal)置換算法
該算法選擇那些不使用的,或是在最長時間内不再被通路的頁面置換出去,但要确定哪一個頁面是未來最長時間不再被通路的,很難估計。
分析:當程序通路頁面5時,産生缺頁中斷,根據最佳置換算法,頁面0将在第18次才通路,是三頁中将最久不被通路的頁面。是以被淘汰。依此類推。
1) 先進先出(fifo)置換算法
該算法總是淘汰最先進入記憶體的頁面,即選擇在記憶體中駐留時間最入的頁面予以淘汰,該算法實作簡單,隻需把一個程序中已調入記憶體的頁面按先後次序連結成一個隊列即可,但是性能差,會發生belady異常現象,所謂belady現象,是指如果對一個程序未配置設定它所要求 的全部頁面,有時就會出現配置設定的頁面數增多但缺頁率反而提高的異常現象,例:對頁面通路序列為 abcdabeabcde,實體塊從3塊增加到4塊,缺頁次數增加.
1) 最近最少未使用(least recently used,lru)置換算法
選擇最少使用的頁面予以淘汰,系統在每個頁面設定一個通路字段,用以記錄這個頁面自上次被通路以來所經曆的時間t,當要淘汰一個頁面時,選擇t最大的頁面。
4)最近未用(not used recently,nur)置換算法
最近一段時間未引用過的頁面換出,與lru近似,該算法為每個頁面設定一位通路位,将記憶體中的所有頁面通過連結指針連成一個循環隊列,當某頁被通路時,其通路位置1,在選擇一頁淘汰時,就檢查其通路位,如果是0,就選擇該頁換出。