記憶體與作業系統記憶體管理
文章目錄
- 記憶體與作業系統記憶體管理
- 一、記憶體的基礎知識
- 二、記憶體管理
- 2.1 記憶體空間擴充
- 2.2 記憶體空間的分配與回收**
一、記憶體的基礎知識
??記憶體是用于存放資料的硬體,程式執行前需要將資料放入記憶體中才能被CPU處理,記憶體通過對內部的存盤單元編地址來解決并發執行下各個程式的資料區分,根據計算機字長的不同,存盤單元大小不同(如64位計算機每個字大小為64位,8個位元組),
??記憶體存放的相對尋址:編譯語言編譯后的指令尋址,是通過相對地址實作的,實際存入記憶體時再根據行程在記憶體中的起始地值得到絕對地址,編譯生成的機器語言中的地址實際都是邏輯地址,在通過鏈接(形成完整邏輯地址)后,通過裝入模塊裝入記憶體運行,這時將邏輯地址轉換成物理地址(主要使用動態重定位裝入方法:CPU內有重定位暫存器保存了程式存放記憶體的起始位置,結合邏輯地址可以實作動態重定位),
二、記憶體管理
??作業系統是系統資源的管理者,也需要對記憶體進行管理,作業系統需要負責以下事情:
- 提供某種技術從邏輯上對記憶體空間進行擴充
- 記憶體空間的分配與回收
- 提供地址轉換功能,負責程式從邏輯地址到物理地址的轉換(動態重定位,依賴于重定位暫存器)
- 提供記憶體保護功能,保證各個行程在各自存盤空間內運行,互不干擾,
2.1 記憶體空間擴充
??作業系統對記憶體空間的擴充主要有覆寫技術、交換技術和虛擬存盤技術(后面詳細介紹):
- 覆寫技術:用于早期作業系統中,
- 交換技術:實際就是行程調度中的記憶體調度,行程在記憶體和磁盤間動態調度(行程未結束前記憶體中始終保留PCB資訊),行程從記憶體中被換出是保存在磁盤的對換區中(這個區域I/O速度比檔案區快,詳細在檔案部分講解),
2.2 記憶體空間的分配與回收**
??記憶體空間分配分為連續分配管理方式和非連續分配管理方式:
(1)連續分配管理方式中又分為單一連續分配、固定磁區分配和動態磁區分配,
- 單一連續分配,只適用于單任務作業系統,
- 固定磁區分配,將記憶體中除了系統區外的用戶空間分為固定大小或大小不等的磁區,并建立磁區說明表的資料結構(陣列或鏈表)記錄每個磁區大小、起始地址、狀態等資訊,缺點在于用戶程式過大需要覆寫技術支持,且會產生內部碎片,
- 動態磁區分配,在行程裝入記憶體時,動態地建立磁區,作業系統使用空閑磁區表或空閑磁區鏈來記錄記憶體使用情況(磁區號、磁區大小、起始地址等),

而當新的行程要裝入記憶體時,需要用動態磁區分配演算法來選擇出一個合適的磁區,
(2)非連續分配管理方式為用戶行程分配的可以是一些分散的記憶體空間,主要管理方式有分頁存盤管理、分段存盤管理和段頁式存盤管理: - 分頁存盤管理:將記憶體空間分為大小相等的小磁區,每個磁區稱為頁框,編號從0開始,相應地,將用戶行程的地址空間也分為 與頁框大小相等 的一個個區域,每個部分稱為頁,編號同樣從0開始,(注:行程的最后一個頁可能沒有一個頁框那么大,因此頁框不能過大,否則可能產生過大的內部碎片)
??那么分頁存盤是離散存盤的,如何實作邏輯地址到物理地址的轉換?
??將動態重定位的思想使用到分頁存盤中,首先計算邏輯地址對應的頁號,得到該頁號在記憶體中存放的起始地址,計算邏輯地址在頁內的“偏移量”,由此物理地址=頁面地址+頁內偏移量,而要知道行程的每個頁在記憶體中存放的位置,作業系統需要為每個行程建立一張頁表,

- 分段存盤管理:按照程式自身邏輯關系劃分為若干個段,每個段有一個段名,每段從0開始編址,每個段在記憶體中占據連續空間,但各個段之間可以不相鄰,與分頁存盤類似,作業系統在分段存盤時為每個行程建立一張段表來保存各個段離散裝入記憶體對應的段長、基址(與分頁相似,段表項長度相同,可以通過段表計算段號,所以段號是隱含的不占存盤空間,)等資訊,分段存盤管理邏輯地址到物理地址的轉換如下圖:

可以看出分段存盤中由于每個段的長度都不同,因此對比分頁存盤多了段內地址越界檢查, - 分段與分頁的對比:
- 頁是資訊的物理單元對用戶不可見,段是資訊的邏輯單元對用戶可見,
- 頁的大小固定且由系統決定,段的長度不固定且決定于用戶撰寫的程式,
- 分頁的用戶行程地址是一維的(只需要一個記憶符),分段的用戶行程地址是二維的(需要給出段名和段內地址),
- 分段更容易實作資訊的共享和保護(只能共享不屬于臨界資源的代碼),當需要讓記憶體中的某個片段共享給多個行程,只需要將各個行程的段表指向同一個段即可,
- 加快分頁程序:
- 如何提高邏輯地址和物理地址的映射速度?(快表)
??系統一旦訪問了某一個頁,就會在一段時間內穩定作業在這個頁上,所以為了提高訪問頁表的速度,計算機配備了一組能容納部分頁表的硬體暫存器,當系統再次需要將地址轉換時,先訪問這組硬體暫存器(即,快表), - 頁表過大怎么解決?
??頁表存在的問題是,頁表必須連續存放在過個連續的頁框中,頁表過大時離散存盤失去了其本質意義,所以可以再建一級索引(二級頁表)來讓原頁表連續頁表項分組離散存盤,
傳送門 —>作業系統全知識點總結傳送門
參考:《王道考研作業系統》
地址:https://www.bilibili.com/video/BV1YE411D7nH
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/265113.html
標籤:其他
下一篇:網路編程那些躲不過的小基礎
