今天沒有**,因為我還沒想明白怎麼寫!
因為不知道今天的**應該怎麼寫,所以決定先寫一寫記憶體分配的原理。
先忽略掉教材裡面眾多有關於記憶體管理的知識點,只簡單介紹一下頁式和段式儲存兩種記憶體管理方式。為之後引入保護模式和長模式進行一下鋪墊。
在我個人的觀念裡,引入記憶體管理主要有一下兩個原因:
隨著cpu從開始的20位增加到32位再到現在的64位cpu,可以直接訪問的記憶體從最初的只有1m增加到4g再到16eg(理論值,目前支援到128g)。為了管理如此大量的儲存空間,要設計一些管理模式(演算法)去管理這樣基數的記憶體,使得記憶體的分配有程式可尋。
現代程式對記憶體的需求逐漸加大,加之分時系統的記憶體中可能會有大量程式正在執行,如何合理給每個程式分配記憶體才能將計算機各部件的利用率提高成為了乙個需要深入研究的問題。
孫子曰:凡治眾如治寡,分數是也。總而言之,記憶體管理就是通過設計一種合理的資料結構,來進行記憶體的管理,以降低系統的複雜度,並提高系統的效率。
今天暫且只介紹頁式儲存和段式儲存。
段式儲存是為了解決以上兩種問題所提出的一種演算法。段式儲存將記憶體分割為若干長度不同或相同的資料段;要求每個段內的記憶體連續,段間位址不必連續。
在學習的過程中發現,有兩種分段機制,一種是在作業系統進行載入時的對記憶體進行的分段,另一種是使用者程序中按自然段進行分段。具體還需要在以後學習中查閱資料理解。
每個段的描述資訊,包括段基址、段長等資訊將以下圖的形式進行組成,形成乙個段表項,由多個段表項組成組成一張段表,儲存在記憶體中。
在對記憶體進行分段之後,需要通過以下的方式來訪問記憶體位址。
31 … 16
15 … 0
段號s段內偏移量w
程式在訪問記憶體位址時,分別給出段號s和段內偏移量w,再根據段號s查詢段表獲得段基址,然後計算得到要訪問的實際位址。
在這裡僅提及基礎頁式儲存的原理,並不涉及有關虛擬記憶體的內容。
31 … 16
15 … 0
頁號p段內偏移量w
和段式儲存的邏輯位址結構基本相同。因此,也同樣需要引入一張頁表進行位址的對映。由於每一頁的長度l固定,所以可以根據邏輯位址a計算得到頁號p和段內偏移量w。
p =a
/lp = a / l
p=a/lw=a
modl
w = a \mod l
w=amod
l再根據p查詢頁表,獲得頁的起始位址f,即可以求得實際位址。
隨著頁表項的增加,為了提高查詢速度,以及降低記憶體占用,可以引入多級頁表,在此不再深入,有興趣可以自行查閱教材。
需要注意的是,在頁式儲存中,每個程序都有自己的頁表。
儘管頁式儲存和段式儲存原理上相近,但是這兩種儲存方式有一些差異:
在頁式和段式儲存方式出現以後,又有牛人將其進行了結合,形成了段頁式管理方式。目前還用不到,所以懶得寫了,可以自行查閱教材。
作業系統記憶體管理 簡單 頁式 段式 段頁式
一 記憶體管理的目的和功能 記憶體一直是計算機系統中寶貴而又緊俏的資源,記憶體能否被有效 合理地使用,將直接影響到作業系統的效能。此外,雖然物理記憶體的增長現在達到了n個gb,但比物理記憶體增長還快的是程式,所以無論物理記憶體如何增長,都趕不上程式增長的速度,所以作業系統如何有效的管理記憶體便顯得尤...
作業系統 分段式記憶體管理
從計算機的角度出發,提高了記憶體的利用率,提公升了計算機的效能,以分頁通過硬體機制實現,對使用者透明 考慮到使用者和程式設計師,已滿足方便程式設計 資訊保護和共享 動態增長 動態鏈結等多方面需求 分段式記憶體管理 分段 按照使用者程序中的自然段劃分邏輯空間,例如 使用者的程序由主程式 兩個子程式 棧...
作業系統之分段式記憶體管理1
1.分頁作業系統的缺點?1 頁表太大,我們用多級頁表克服了。2 多級頁表速度慢,我們用tlb翻譯快表解決了絕大部分。3 頁面來回更換所帶來的缺頁中斷的問題,我們用各類頁面更換演算法解決了大部分。4 內部碎片相對於交換系統的外部碎片,還是可以忍受的。最大的缺陷是 共享困難。2.分段管理系統?3.邏輯分...