1. 程式人生 > >軟體設計師5--儲存管理

軟體設計師5--儲存管理

儲存管理

儲存管理的物件時主存(記憶體)。儲存管理的主要功能包括回收主存空間、提高主存利用率、擴充主存、對主存資訊實施有效保護。

1. 基本概念

1.1 儲存器的機構

一般儲存器的機構有“暫存器-主存-外存”結構和“暫存器-快取-主存-外存”結構。如下圖所示,儲存組織的功能時在儲存技術和CPU定址技術允許的範圍內組織合理的儲存結構,使得各個層次的儲存器都處於均衡的繁忙狀態。
在這裡插入圖片描述
(一)虛擬地址。對於程式設計師來說,資料的存放地址是由符號決定的,並不是主存中的真實地址。虛擬地址也稱為相對地址、程式地址、邏輯地址
(二)地址空間。虛擬地址的空間稱為虛擬地址空間、相對地址空間或邏輯地址空間,相對地址經過地址重定向轉換為絕對地址空間,也稱實體地址空間。
(三)儲存空間。

1.2 地址重定位

地址重定位是把邏輯地址變為主存實體地址的過程。在可執行檔案裝入時,需要解決可執行檔案地址(指令和資料)與主存地址的對於關係,這個個由作業系統的loader和地址重定位機構來完成。地址重定位分為靜態地址重定位和動態地址重定位。
(一)靜態地址重定位。程式裝入主存時完成邏輯地址到實體地址的變換,在程式執行期間將不會再變化。無需硬體的支援,早期作業系統都用這種重定位方案。缺點是必須給作業分配一個連續的儲存空間,作業執行期間不能擴充空間,不能在主存中移動,多個作業難以共享主存中的同一程式的副本和資料。
(二)動態地址重定位。在程式允許期間完成邏輯地址到實體地址的變換。依賴硬體地址變換機構來完成,如基地址暫存器BR。優點是作業執行期間程式和資料可以換入和換出主存,解決主存空間不足問題;可在主存中移動,把主存中的碎片集中起來,可以充分利用空間;不必連續的主存空間,可利用小的主存塊;可以實現多作業資料共享。

2. 儲存管理方案

儲存管理方法是解決多用使用主存的問題。

2.1 分割槽儲存管理

分割槽儲存管理是早期的儲存管理方案,把主存的使用者區劃分為若干個區域,每個區域分配給一個作業使用,並限定它們只能在自己的區域中執行。根據分割槽的劃分方式不同,可分為固定分割槽、可變分割槽和可重定位分割槽。

標題 描述
內碎片 儲存管理中,把分配給了使用者而使用者未用的儲存區稱為“內部碎片”
外碎片 儲存管理中,把那些無法分配出去滿足作業儲存請求的空閒區稱為“外部碎片”

(一)固定分割槽。是一種靜態分割槽方式。在作業系統啟動時就已經將主存劃分為若干個分割槽,每個分割槽大小可不等。作業使用的空間不小不一定剛好等於分割槽的大小,造成了一定的浪費。
(二)可變分割槽。是一種動態分割槽方式。可變分割槽 儲存管理 不是預先把記憶體中的使用者區域劃分成若干固定分割槽,而是在作業要求裝入記憶體時,根據使用者作業的大小和當時記憶體空間使用情況決定是否為該作業分配一個分割槽。因此分割槽大小不是預先固定的,而是按作業需求量來劃分的;分割槽的個數和位置也不是預先確定的。它有效地克服了固定分割槽方式中,由於分割槽內部剩餘記憶體空置造成浪費的問題。

  1. 採用地址動態重定位技術,使程式能在記憶體中移動,為空閒區合併提供保證。
  2. 記住各分割槽的使用情況,當一個分割槽被釋放時,要能判定它的前、後分區是否為空閒區。若是空閒區,就進行合併,形成一個大的空閒區
  3. 給出分割槽分配演算法,在有多個空閒區都滿足作業的儲存請求時,決定分配哪一個

(三)可重定位分割槽。解決碎片化問題的有效方法。基本思想是移動已經分配好的分割槽,使之成為一個連續區域。移動的時機可以是申請分割槽得不到滿足時或作業執行完畢時,移動分割槽的代價很大,一般時申請分割槽無法滿足時才進行。

分割槽保護

分割槽保護的目的是防止未經允許的使用者訪問分割槽,常用如下兩種方式。

  1. 採用上界/下界暫存器保護。上界暫存器存放作業的裝入地址,下界暫存器存放作業的結束地址,形成的實體地址滿足如下條件:
上界暫存器 <= 實體地址 <= 下界暫存器
  1. 採用基址/限長暫存器保護。基址暫存器存放作業的裝入地址,限長暫存器存放作業的長度,形成的實體地址滿足如下條件:
基址暫存器 <= 實體地址 <= 基址暫存器+限長暫存器

2.2 分頁儲存管理

在上面的分割槽儲存管理可以解決多道程式共享主存的問題,但是該方案的使用者程式必須裝入連續的一段空間,當空間不足時需要進行分割槽靠攏操作,而分割槽靠攏時非常耗費系統時間的。下面引入分頁儲存方案。
(一)分頁原理。將一個程序的地址空間劃分為若干個大小相等的區域,稱為頁。相應的,在主存空間中劃分出相同大小的若干個物理塊,成為塊或頁框。為程序分配主存時,將程序的若干也分別裝入多個不相鄰的塊中。
(二)地址結構。分頁系統的地址結構由頁號和偏移量(頁內地址)兩部份組成。地址總共32位,0-11位為頁內地址(每頁大小為4KB),12-31位為頁號,得出一個程序最多可以分配1MB個頁。
在這裡插入圖片描述
(三)頁表