作業系統筆記 儲存管理(2)

2022-09-07 09:48:15 字數 4158 閱讀 1838

位址重定位

快表兩級頁表

分段儲存管理

位址變換

資訊共享

分段與分頁比較

段頁式儲存管理

目的:減少分割槽式分配的內外零頭浪費的問題。

思想:將目標程式分為若干的頁(頁面),這裡的頁是對於邏輯位址而言的線性位址。記憶體也要劃分為若干的頁框,頁框是對具體的實體地址進行的劃分,頁(頁面)與頁框的大小相同,這保證了頁面與頁框之間可以進行對映裝載。每個頁框都可以被任意的頁面裝載,通過頁框與頁的劃分確定了程式執行時對於空間的最小劃分單位。

重點問題:頁面/頁框尺寸;邏輯位址結構;記錄每個頁面儲存在哪個頁框;程式如何正確執行(位址重定位)?指令跨頁時的執行問題;儲存(記憶體)保護問題

實現從頁號物理塊號的位址對映。

每乙個程序都擁有乙個自己的頁表,頁表儲存在記憶體;頁表起始位址儲存在pcb;

程序控制塊(pcb)是系統為了管理程序設定的乙個專門的資料結構。系統用它來記錄程序的外部特徵,描述程序的運動變化過程。同時,系統可以利用pcb來控制和管理程序。

頁面尺寸

頁面太小:記憶體利用率(內零頭)高,頁面數量增加。頁表占用的空間也會變大,占用記憶體。

頁面太大:記憶體利用率(內零頭)低,頁面數量減少。頁表占用的空間也會變小大,節省記憶體。

正常尺寸:2的整數次方,1kb~8kb

位址結構

頁號+頁內位址2部分

位址變換機構/位址對映機制:

在實際的執行中邏輯位址與實體地址之間,相同的部分是頁內或頁框內的偏移位址,所以在實現邏輯位址到虛擬位址的對映時只要將對應的頁號轉換為對應的頁框號就可以了。

上圖中邏輯位址中獲取對應的頁號,在從頁表獲取對應的頁框號,首先對其是否越界進行判斷,如果沒有超出頁表的長度即在頁表中,通過頁表位址暫存器獲取頁表的起始位置,相加後得到對應的頁框號,用頁框號與頁內位址即可合成實體地址。

頁表中還有對應的訪問控制的資訊。

頁表的作用

記錄程式各頁面所在的頁框位置,支援進行位址重定位(位址對映)

實現頁面訪問控制,儲存保護,限制程式在作業系統指定的記憶體區域內執行。

別名:聯想儲存器(相聯儲存器)(associative memory);intel術語:tlb( translation lookaside buffers)

目的:為了適應cpu與記憶體的速度差距,改善頁表訪問的效能問題,對與頁表的訪問需要訪問1次記憶體變數(頁表),涉及2次位址訪問(邏輯位址與實體地址的處理):頁表+變數。

實現:設定在cpu內部;具有並行查詢能力;暫存當前正在使用的頁表項;尺寸:16-512 。可達到90%以上命中率。

快表就是存放在高速緩衝儲存器的部分頁表。

這樣當其進行位址對映時,首先會檢視快表中是否含有相關的記錄,如果有直接進行位址對映,如果沒有再訪問記憶體中的頁表來進行位址對映。

當記憶體非常大的時候,我們會劃分出許多的頁來,這時頁表的尺寸也會變得非常大,如果要在記憶體中尋找乙個連續的空間來存放這麼大的頁表就會降低利用率,為應對這一情況,我們使用二級頁表。對頁表進行分頁,對離散了的頁表產生乙個外層頁表,每次讀取時,只取需要的部分頁表項,將其讀入記憶體。

兩級頁表位址結構:

具體讀取時先從外層頁表中讀取相應的頁表位址,再加上對應的頁號讀取到相應的頁框號,最後根據頁內偏移位址對映實體地址。

當記憶體的數量更大時可以擴充套件出多級頁表,但是隨著頁表的級數增加,相應的位址對映時間也會隨之增加。

在分頁儲存中,最小的劃分單位是以頁來劃分的,但是在實際的程式設計中,我們習慣使用程式段來進行相關的資料保護,或者資訊共享,所以為了方便這一操作提出了分段儲存。

主要問題:分段劃分;邏輯位址結構;記錄每個分段儲在記憶體位置;程式如何正確執行(位址重定位)?指令跨分段時的執行問題?儲存(記憶體)保護問題

分段(segment):分段是一段有意義的資訊集合分段的劃分由程式設計師完成;分段的長度不定指令不存在跨分段情況

段表:主要在記憶體中找到每個邏輯段所對應的位置,每個段在段表都有乙個表項,記錄了該段在記憶體中的起始位址(又稱為 「基址」 )和段的長度。起始位址是指邏輯位址對映到記憶體起始位址,段長是指段的長度,可以檢查位址是否越界。段表中也包含了相應的訪問控制資訊。

段表儲存在記憶體;段表起始位址儲存在pcb;

位址結構

包括段號和段位址2部分。

與上面的分頁分配類似,段內的位址在邏輯位址與實體地址中是對應一致的,所以實際執行時,先是通過段號對快表中進行搜尋,如果找不到在對段表進行訪問,首先對段表進行越界判斷,如果沒有越界就讀出段的起始位址,再將起始位址作為物理段的起始位址,加上段內的偏移量就是實際的實體地址了。

段表的作用

記錄程式各分段所在的記憶體位置;支援進行位址重定位(位址對映)

實現分段訪問控制;儲存保護,限制程式在作業系統指定的記憶體區域內執行。

分頁資訊共享

設定乙個或多個頁框儲存共享資料。

分段資訊共享

設定乙個或多個段來存放共享資料。

儘管分段式的儲存管理解決了程式的邏輯空間劃分,但是分段儲存的劃分存在許多的內零頭碎片。我們可以通過對段式的分配方案再進行分頁劃分。

分段+分頁

分頁系統:負責解決主存分配問題,記憶體按頁分配;

分段系統:負責解決邏輯位址空間管理問題,按段為應用程式分配邏輯位址空間;

在段頁式儲存中同時設定段表與頁表,段表中包含著對於邏輯段的劃分,每個邏輯段會被劃分為若干的頁,所以段表處了記錄了段的劃分狀況,還記錄了各個段內部的劃分資訊的頁表情況。對應的多個頁表記錄了每個段中的頁與記憶體中頁框的對應情況。實際的程式中還是以段來劃分邏輯位址,而記憶體中是以頁為最小單位劃分,再通過段表將各段的資訊對映到頁表,再由頁表將各段中的頁對映到記憶體中的頁框中。

由段號與頁號加偏移位址組成。

首先,段表的相關資訊在執行時由程序控制塊(pcb)讀到段表暫存器中,段號與段表長度進行比較,判斷是否越界,如果沒有越界,讀取對應的頁表資訊,通過頁表的長度與頁號來判斷是否越界,如果沒有越界就根據段表中的頁表資訊讀出頁表的位置,在加上頁號讀出對應的頁框號來進行位址對映(頁框號加頁內位址)。

對與含有快表的結構來說,快表中儲存著段號與頁號對應的頁框號,在對段表進行訪問時先對快表進行訪問,如果找到對應的項就可以進行位址對映,否則就進行上面的段頁表訪問(三次訪問記憶體)。

作業系統筆記 儲存管理(2)

位址重定位 快表兩級頁表 分段儲存管理 位址變換 資訊共享 分段與分頁比較 段頁式儲存管理 目的 減少分割槽式分配的內外零頭浪費的問題。思想 將目標程式分為若干的頁 頁面 這裡的頁是對於邏輯位址而言的線性位址。記憶體也要劃分為若干的頁框,頁框是對具體的實體地址進行的劃分,頁 頁面 與頁框的大小相同,...

作業系統 儲存管理(2)

為了解決上述的問題,主要是解決記憶體不夠的問題,現代作業系統採用了虛擬記憶體的方式。基於區域性性原理,在程式裝入階段,可以將程式的一部分裝入記憶體,其餘部分留在外存,就可以讓程式啟動起來了。在程式執行過程中,當訪問的資訊不在記憶體時,由作業系統將所需要的部分調入記憶體,然後繼續執行程式。另一方面,作...

作業系統 儲存管理2

非連續儲存分配 概念 將程序儲存在非連續的記憶體空間 進而需要將程序劃分成小的部分 根據劃分粒度的大小可以分為 段式 頁式記憶體分配方式 1.頁式儲存管理 前提 程序並不要求邏輯位址必須連續 注意 其實程序被分為許多片段,零散的分布在記憶體中不存在確定的順序 頁式儲存管理具體操作 將物理空間等分為固...