OS- -请求分页系统、请求分段系统和请求段页式系统(二)
OS- -請求分頁系統、請求分段系統和請求段頁式系統(二)
文章目錄
- OS- -請求分頁系統、請求分段系統和請求段頁式系統(二)
- 一、基本分段存儲管理方式
- 1.分段系統的組成:
- 2.段表
- 3.查找過程
- 4.分段和分頁的對比
- 二、段頁式內存管理方式
- 1.分頁, 分段管理的優缺點分析
- 2.段頁式管理的結構
- 3.段表, 頁表
- 4.查找過程
- 三、虛擬內存
- 四、請求分頁管理方式
- 1.頁表機制
- 2.缺頁中斷機構
- 3.頁面置換算法
- 四、頁面分配策略
- 1.駐留集
- 2.幾種分配策略
- 3.何時調入頁面
- 4.何處調入頁面
- 5.抖動(顛簸)現象
- 6.工作集
一、基本分段存儲管理方式
- 分段 : 進程的地址空間會按照自身的邏輯關系劃分為若干個段, 每個段都有一個段名, 每段從0開始編址
- 內存分配規則 : 以段為單位進行分配, 每個段在內存中占據連續空間, 但各段之間可以不相鄰
1.分段系統的組成:
- 段號------ 段號的位數決定了每個進程最多可以分為幾個段
- 段內地址------段內地址的位數決定了每個段的最大長度是多少
2.段表
- 程序分為多個段, 各個段離散地裝入內存, 為了保證程序能正常運行, 就必須能從物理內存中找到各個邏輯段的存放位置. 為此,需為每個進程建立一張段映射表, 簡稱 " 段表 " .
- 關于段表 :
- 每個段對應一個段表項, 記錄著該段在內存中的起始位置 ( 基址 ) 和 段長
- 各個段表項的長度是相同的, 因此和頁號一樣, 段號是" 隱含"的, 不占據存儲空間
3.查找過程
4.分段和分頁的對比
- 頁是信息的物理單位, 分頁的主要目的是為了實現離散分配, 提高內存利用率. 分頁僅僅是系統管理上的需要, 完全是系統行為,對用戶是不可見的
- 段是信息的邏輯單位, 分段的主要目的是更好地滿足用戶需求. 一個段通常包含著一組屬于一個邏輯模塊的信息, 分段對用戶是可見的,用戶編程時需要顯式地給出段名
- 頁的大小是固定且由系統決定, 段的長度卻不固定, 決定于用戶編寫的程序
- 分頁的用戶進程地址空間是一維的, 分段的用戶進程是二維的.
- 分段比分頁更容易實現信息的共享和保護
二、段頁式內存管理方式
1.分頁, 分段管理的優缺點分析
2.段頁式管理的結構
- 先分段 , 再分頁
- 段頁式管理的邏輯地址結構 :由段號, 頁號, 頁內偏移 組成
- 段號的位數決定了每個進程最多可以分為幾個段
- 頁號位數決定了每個段最大有多少頁
- 頁內偏移量決定了頁面大小和內存塊的大小
-
注意 :
-
"分段"對用戶是可見的, 而將各段"分頁"對用戶是不可見的, 系統會根據段內地址自動劃分頁號和段內偏移量,
-
因此段頁式管理的地址結構是"二維"的.
3.段表, 頁表
- 每一個進程對應一個段表, 每一個段又對應一個頁表, 因此一個進程可能對應多個頁表.
4.查找過程
三、虛擬內存
- 傳統存儲管理方式的特征, 缺點:
- 一次性 : 作業必須一次性全部裝入內存才能開始運行
- 作業很大時, 無法裝入導致大作業無法運行
- 大量作業要求運行時內存無法容納所有作業, 導致多道程序并發度下降
- 駐留性 : 一旦作業被裝入內存, 就會一直駐留在內存中, 直到作業運行結束, 這樣會導致內存中駐留大量的, 暫時用不到的數據,浪費內存資源
虛擬內存—基于局部性原理
注意 :
- 虛擬內存的最大容量是由計算機的地址結構 ( CPU的尋址范圍 ) 確定的,
- 虛擬內存的實際容量 = 𝑚𝑖𝑛(內存容量+外存容量,𝐶𝑃𝑈尋址范圍)
-
虛擬內存的實現 :
-
請求分頁存儲管理
-
請求分段存儲管理
-
請求段頁式存儲管理
-
操作系統需要提供的功能 :
-
請求調頁 ( 段 )
-
頁面置換 ( 段置換 )
-
缺頁時請求掉頁不一定頁面置換, 若還有可用的內存塊, 就不用進行頁面置換
四、請求分頁管理方式
1.頁表機制
2.缺頁中斷機構
-
在請求分頁操作系統中, 每當要訪問的頁面不在內存時, 便產生一個缺頁中斷, 然后由操作系統的缺頁中斷處理程序處理中斷
-
此時缺頁的進程阻塞, 放入阻塞隊列, 調頁完成后再將其喚醒, 放回就緒隊列
-
如果內存中有空閑塊, 則為進程分配一個空閑塊, 將所缺頁面裝入該塊, 并修改頁表中相應的頁表項
-
如果內存中沒有空閑塊, 則由頁面置換算法選擇一個頁面淘汰, 若該頁面在內存期間被修改過, 則要將其寫回外存, 未修改過的頁面不用寫回外存
-
缺頁中斷是因為當前執行的指令想要訪問目標頁面未調入內存而產生的, 因此屬于內中斷 :
3.頁面置換算法
-
最佳置換算法OPT
-
每次選擇淘汰的頁面是以后永不使用或者在最長時間內不會使用的頁面, 保證最低的缺頁率 . 但是操作系統無法預判頁面訪問序列, 這種算法是無法實現的
-
先進先出置換算法 FIFO
-
每次淘汰的頁面是最早進入內存的頁面
-
實現 : 將調入內存的頁面根據調入的先后順序排成一個隊列, 需要置換頁面的時候選擇隊首的頁面.
-
實現簡單, 算法性能差, 不適應進程實際運行時的規律
-
最近最久未使用算法 LRU
-
當需要淘汰一個頁面的時候, 選擇現有頁面中t值最大的, 即最近最久未使用的頁面.
-
需要淘汰頁面時, 逆向檢查此時在內存中的幾個頁面號, 最后一個出現的頁號就是需要被淘汰的
-
LRU算法的特點 : 性能好, 但實現起來需要專門的硬件支持, 算法開銷大
-
時鐘置換算法 ( CLOCK ) / 最近未用算法 ( NRU )
他們是同一種算法.
- 簡單的CLOCK算法的實現方法 :
- 簡單的時鐘置換算法僅考慮到了一個頁面最近是否被訪問過
- 但是事實上, 如果被淘汰的頁面沒有被修改過, 就不需要執行I/O操作寫回外存. 只有被淘汰的頁面被修改過時, 才需要寫回外存
- 因此, 除了考慮一個頁面最近有沒有被訪問過之外, 操作系統還應該考慮頁面有沒有被修改過.
- 在其他條件都相同時, 應該優先淘汰沒有修改過的頁面, 避免I/O操作, 這就是改進型的時鐘置換算法的思想.
利用 (訪問位, 修改位) 的形式表示各頁面狀態
- 特點 : 開銷小, 性能也不錯
四、頁面分配策略
1.駐留集
-
請求分頁存儲管理器中給進程分配的物理塊的集合. ( 系統給進程分配了n各物理塊 ----的另一種表述 : 駐留集大小為n)
-
在采用虛擬存儲技術的系統中, 駐留集的大小一般小于進程的總大小
-
如果駐留集太小, 會導致缺頁頻繁, 系統要花大量的時間來處理缺頁, 實際用于進程推進的時間很少
-
如果駐留集太大, 會導致多道程序并發度下降, 資源利用率降低
2.幾種分配策略
- 固定分配全局置換不存在, 因為進程物理塊固定后不會再分配給別人
- 可變分配全局置換 : 只要缺頁就給分配新物理塊
- 可變分配局部置換 : 根據發生缺頁的頻率來動態地增加或減少進程的物理塊
3.何時調入頁面
- 預調頁策略
- 請求調頁策略
4.何處調入頁面
- 文件區用于調入不會被修改的數據, 對換區用用于調入可能被修改的數據
5.抖動(顛簸)現象
6.工作集
- 一般來說 駐留集的大小不能小于工作集的大小, 否則進程運行過程中將頻繁缺頁.
總結
以上是生活随笔為你收集整理的OS- -请求分页系统、请求分段系统和请求段页式系统(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OS- -请求分页系统、请求分段系统和请
- 下一篇: OS- -操作系统概念