【重學計算機】操做系統D3章:存儲管理

1. 存儲管理的基本概念html

  • 邏輯地址:用戶地址,從零開始編號
    • 一維邏輯地址:(地址)
    • 二維邏輯地址:(段號: 段內地址)
  • 主存儲器的複用方式
    • 按分區:主存劃分爲多個固定/可變分區,一個程序佔一個分區
    • 按頁架:主存劃分爲多個固定頁架,一個程序佔多個頁架
  • 存儲管理的模式
    • 單連續:一維邏輯地址程序,佔一個固定/可變分區
    • 段   式:二維邏輯地址程序,佔多個可變分區
    • 頁   式:一維邏輯地址程序,佔多個頁架
    • 段頁式:二維邏輯地址程序,佔多個頁架
  • 地址轉換:邏輯地址 --> 物理地址
    • 靜態重定位:程序裝入內存時轉換(早期OS)
    • 動態重定位:CPU執行時轉換,效率考慮須要硬件幫助
  • 虛擬存儲器
    • 因爲程序的局部性順序性等,能夠考慮只將部分程序調入主存,其餘的隨用隨調
    • 達到了面對程序員主存擴容的目的

2. 單連續分區存儲管理程序員

  • 單用戶連續分區管理:主存區劃分爲系統區和用戶區,採用靜態重定位進行地址轉換,通常適用於單用戶單任務操做系統(DOS)
  • 固定分區管理:一個程序佔一個分區,有主存分配表,容易產生內零頭
  • 可變分區管理:按進程內存需求動態分配內存空間,容易產生外零頭

3. 頁式存儲管理 **算法

  • 概念:
    • 主存分頁架,程序分
    • 不一樣程序頁可放在不一樣主存頁架中,不須要連續
    • 頁和頁架關係由頁表維護
    • 位示圖表示主存分配與去配,用進程頁表維護進程邏輯完整性
  • 地址:
    • 邏輯地址:頁號 + 單元號
    • 物理地址:頁架號 + 單元號
  • 快表
  • 頁式虛擬存儲
    • 頁表:標識位 + 主存塊號 + 輔存地址
    • 實現
      • 查頁表,若頁在內存,則生成絕對地址
      • 若不在內存,發起缺頁中斷
      • OS響應缺頁中斷,若內存有空閒頁架,則從輔存中調入頁。更新頁錶快表
      • 若無空閒頁架,先淘汰頁,再調入
  • 頁面調度算法

5. 其餘緩存

  • 段式存儲管理:基本不用,略
  • 段頁式存儲管理:基本不用,略
  • 內存管理單元MMU:
    • 做用:管理虛擬存儲器的硬件控制線路,把虛擬地址映射爲物理地址,並提供內存保護,必要時淘汰頁面
    • 實現:用一種數據結構 反置頁表IPT

PS:許多年之前,當人們還在使用DOS或是更古老的操做系統的時候,計算機的內存還很是小,通常都是以K爲單位進行計算,相應的,當時的程序規模也不大,因此內存容量雖然小,但仍是能夠容納當時的程序。但隨着圖形界面的興起還有用戶需求的不斷增大,應用程序的規模也隨之膨脹起來,終於一個難題在程序員的面前,那就是應用程序太大以致於內存容納不下該程序,一般解決的辦法是把程序分割成許多稱爲覆蓋塊(overlay)的片斷。覆蓋塊0首先運行,結束時他將調用另外一個覆蓋塊。雖然覆蓋塊的交換是由OS完成的,可是必須先由程序員把程序先進行分割,這是一個費時費力的工做,並且至關枯燥。人們必須找到更好的辦法從根本上解決這個問題。不久人們找到了一個辦法,這就是虛擬存儲器(virtual memory).虛擬存儲器的基本思想是程序,數據,堆棧的總的大小能夠超過物理存儲器的大小,操做系統把當前使用的部分保留在內存中,而把其餘未被使用的部分保存在磁盤上。好比對一個16MB的程序和一個內存只有4MB的機器,操做系統經過選擇,能夠決定各個時刻將哪4M的內容保留在內存中,並在須要時在內存和磁盤間交換程序片斷,這樣就能夠把這個16M的程序運行在一個只具備4M內存機器上了。而這個16M的程序在運行前沒必要由程序員進行分割。數據結構

相關文章
相關標籤/搜索