內存管理,外存(文件/磁盤)管理,IO管理


第三章  內存管理

3.1,多層次的存儲系統:緩和存儲器的訪問速度與處理機運行速度差異大的問題。

  • CPU寄存器          速度與處理機相當,很貴
  • 主存(內存)

高速緩存         緩和處理機與內存訪問速度不匹配。

主存儲器

磁盤緩存         緩和內存與外存(磁盤IO)速度不匹配。

  • 輔存

3.2,程序的裝入與連接:

3.2.1,程序在系統上運行的步驟:

①編譯:將源程序編譯成若干目標模塊

②連接:將一組模塊與所需庫函數連接形成裝入模塊

③裝入:將裝入模塊裝入內存--將邏輯地址轉化為邏輯地址

  • 絕對裝入
  • 可重定位裝入:早期批處理系統
  • 動態運行時裝入:【重定位寄存器】,現代操作系統,

3.3,內存管理的功能:

內存空間的分配與回收

內存空間的擴充(虛擬內存)

地址轉換:邏輯地址->物理地址

  • 絕對裝入
  • 可重定位裝入
  • 動態運行時裝入

存儲保護

  • 保證各進程在自己內存空間運行,不會越界。
  • 方式:<1>上下限寄存器<2>利用重定位寄存器,界地址寄存器。

3.4,物理內存分配:

3.4.1,連續地址分配與管理:

①單一連續分配:單道程序,單任務操作系統。

②固定分區算法:(多道程序系統)

將整個用戶空間划分若干固定大小區域,每個區域只裝入一道作業。【不產生外部碎片,產生內部碎片】

③動態內存分配:--可變分區分配。

<1>數據結構:空閑分區表,空閑分區鏈。

<2>內存的分配與回收:

  • 分配:若一個分區大小>=需要大小,則此空閑分區可分配給調用者,剩余空間如果小於事先規定的最小切割單位,

則不切割。剩余空間放回空閑鏈。

  • 回收:因為分配時存在分割,避免內存碎片化,回收時要合並
  • 若回收分區與前一個空閑分區相鄰,合並。
  • 若回收分區與后一個空閑分區相鄰,合並。
  • 若與前后空閑分區都相鄰,合並。

④動態分區算法:

  • 順序搜索:

<1>首次適應算法:

  • 空閑分區按地址遞增排列
  • 按空閑鏈首地址遍歷,遇到第一個能容納的分區就分配
  • 傾向於用內存地址部分

<2>循環首次適算法:

  • 每次不從空閑鏈首開始遍歷,從上一次分配分區的以一個分區開始遍歷。
  • 缺乏大分區

<3>最佳適應算法:

  • 將鏈或表按從小到大遞減方式排序
  • “最佳”指所有滿足分配分區(空間>=所需空間)中空間最小的。
  • 留下很多難以利用的碎片

<4>最壞適應算法:

  • 將鏈或表按從大到小排序
  • 從滿足分配的分區中挑一個最大的。
  • 大進程(需要內存多的)不友好。
  • 索引分配:

<1>快速適應算法:

  • 又稱為分類搜索法,根據分區大小划分不同的空閑列表,分配時先找到能容納的最小空閑列表,再區列表中

找分區。

  • 空間換時間

 

3.4.2,非連續物理內存分配:

①分頁式儲存管理:

<1>結構

  • 頁可以裝入不連續的物理塊中
  • 頁面大小要適中,太小--頁表過長,換頁頻繁。太大--頁內碎片。(2的冪次方,1K-8K)
  • 地址結構:  【頁號|偏移量】
  • 頁表:記錄頁號和內存中的物理塊號。【頁表是順序結構的(數組),頁號即下標表示了,邏輯地址/頁面大小】

<2>地址變換:

將邏輯地址轉換為邏輯地址,通過邏輯地址計算出頁號,從頁表中找到快號,物理地址:塊號+偏移量。

<3>TLB:快表,具有塊表(高速緩存,)的地址轉換結構。

<4>多級頁表:所管理的內存大,頁表過長,無夠大連續空間存放頁表,對頁表進行分頁。

②分段式儲存管理:

<1>結構:

  • 段:連續空間,不同段分散在不連續的地址塊。根據模塊將程序分為若干段,每段段內地址從0-段長-1。
  • 地址結構:【段號|段內地址-偏移量】
  • 段表:記錄段長和和段起始地址。
  • 尋址方式:根據段號在段表中找到起始地址,判斷有無越界,加上偏移量,得到物理地址。

<2>與分頁式存儲的區別:

  • 頁是信息的物理單位,實現內存的離散分配,減少碎片,完全是系統行為。

   段是信息的邏輯單位,更好的滿足用戶需求。

  • 頁的大小是固定的,由系統決定,段長是不固定的,決定於程序。
  • 分頁的用戶程序地址空間是一維的,分頁是系統行為。分段的用戶程序地址空間是二維的,需給出段號和偏移量。
  • 分段的用戶程序容易實現信息的共享和保護。

③段頁式存儲管理:

<1>先對程序分若干個段,再對每個段分頁,邏輯地址【段號|頁號|頁內地址】

<2>段表:【段號|頁表大小|頁表始址】

3.4,虛擬存儲器:

  • 具有請求調入功能和置換功能,能從邏輯上對內存容量加以擴充的一種存儲器系統,其邏輯容量由內存容量和外出容量之和所決定

其運行速度接近於內存速度,而每位成本卻又接近於外存。

  • 傳統存儲管理方式的特征:

①一次性:作業必須一次性全部裝入內存后才開始運行。

②駐留性:一旦作業裝入內存,會一直駐留在內存,直至作業運行結束。

  • 局部性原理:

①時間局部性:如果執行了程序中某條指令,不久之后這條指令很可能再次執行。

某個數據訪問,不久后很可能再次被訪問。(因為程序中有大量循環)

②空間局部性:一旦程序訪問了某個存儲單元,不久之后其附近的存儲單元很可能被訪問。(因為很大數據是連續存放的)

③局部性原理的應用:

<1>高速緩存技術思想,將近期會頻繁訪問的到的數據放到更高速的存儲器中,暫時用不到的數據放在更低的存儲器中。

<2>TLB快表,

  • 特性:

①多次性:一個作業的數據和程序允許分成多次調入內存。

②對換性:一個作業中的程序的數據,無需在作業運行時一直常駐內存,可換進換出

③虛擬性:從邏輯上擴充內存容量

  • 請求分頁式存儲管理方式:

①請求頁表機制:【頁號|物理塊號|狀態|訪問字段|修改為位|外存地址】

狀態標識該頁是否在內存,訪問字段記錄一段時間內被訪問次數,修改位,若被修改換出內存時需要寫回外存。

②缺頁中斷機制:

  • 當訪問某頁時,若該頁不在內存中,產生缺頁中斷。
  • 中斷處理:將目標頁調入內存或換出頁面。
  • 缺頁中斷為內中斷
  • 一條指令可能產生多次缺頁中斷

③地址轉換機構

  • 訪問塊表,命中則分獲取物理地址
  • 未命中,查頁表,在頁表,則計算物理地址
  • 未查到,缺頁中斷,進行相應置換。
  •  頁面置換算法:

①最佳置換算法:理論上的,無法實現,所選取的淘汰頁面將是以后永遠不使用的。

②先進先出置換算法FSFO:最直觀,性能最差,應用極少

③LRU,(最近最久未使用)算法:賦予每個頁面對應頁表項中,用訪問字段記錄該頁面自上次被訪問以來經歷的時間t,當需要淘汰時,

選一個最大的t淘汰。

④Clock置換算法,將所有頁面,當頁面被分為后,訪問位設1,置換算法選擇淘汰頁時,遍歷隊列檢測訪問位,若是0,則換成。

若是1,將其置0,循環遍歷直到找到0;

最多經歷兩輪即可找到淘汰頁。

⑤改進Clock置換算法:增加一個因素:置換代價。將一個頁面換出時,若頁面數據已修改,需要重新寫回外存。

訪問位A,修改位:M

<1>A=0,M=0,最近未被訪問,也沒被修改,最佳淘汰頁。

<2>A=0,M=1,表示最近未被訪問,被修改,並不是很好的淘汰頁

<3>A=1,M=0,最近已被訪問,未被修改,該頁可能再被訪問。

<4>A=1,M=1,最近已被訪問,已被修改,該頁可能再被訪問。

【1】遍歷隊列,尋找第一類頁面,找到則換出。

【2】1未找到,則進行第二輪,尋找第二類,並將掃描過的頁面的訪問A該為0,找到則換出

【3】2未找到,重復第一步,若失敗,重復第二步,這一步一定能找到A=0,M=1的頁面。

最多經過4輪能找到。

 

第四章  外存管理(磁盤管理+文件管理) 

4.1,相關名詞:

  • 磁盤:外存的主要構成,存放大量文件,磁盤IO速度高低,直接影響系統性能。
  • 盤面:磁盤設備(硬盤)中包括多個物理盤片,每個盤片有一個或兩個盤面。
  • 磁道:每個盤面有若干磁道,磁道間有“間隙”Gap。
  • 柱面:所有盤面的相同位置磁道構成的一個住面。
  • 扇區:每條磁道又被從邏輯上划分成若干扇區,一個扇區稱為一個盤塊或數據塊。

4.2,磁盤訪問時間:

①尋道時間:將磁頭移到指定磁道所花費的時間。

②旋轉延遲時間:將指定扇區移動到磁頭下面的時間,不同磁盤旋轉速度不一樣。

③傳輸時間:指把數據從磁盤讀出或向磁盤寫入所經歷的時間,--和磁盤旋轉速度有關。

  • 其中①和②占了絕大多時間。

4.3,磁盤調度算法:

  • 為了減少對文件的訪問時間,由於磁盤訪問時間主要花在尋道上,即調度算法目的是使磁盤平均尋道時間最短。

①先來先服務FCFS:

②最短尋道時間優先SSTF:保證每次尋道時間是當前隊列中最短的,但無法保證平均尋道時間最短。

  • 貪心,只選擇眼前最優的,可能導致飢餓。

③掃描算法SCAN:最短尋道時間優先實際上是一種優先級算法,優先級低的進程易飢餓。

  • 掃描算法不僅考慮下一個訪問磁道與當前磁道的距離,還考慮磁頭當前的移動方向。如:當前磁頭正由里向外移動

應當是再本磁道外,且距離最近的優先。掃描到最外再向里掃描。

  • 電梯調度算法。

-:對各個部分磁道響應頻率不同,邊緣部分,折返時又會遍歷一遍,而中部的遍歷時間相對較久。

④Lock算法:掃描算法中,磁頭每次要遍歷所有磁道,當像一個方向遍歷時,隊列中已經沒有該方向上磁道的訪問了,這時磁頭就可以轉向另一個方向遍歷了。

Lock算法(觀望)就是解決這個問題的。

⑤循環掃描算法C-SCAN:解決SCAN算法中對各個磁道響應頻率不同。規定磁道只沿一個方向移動,到達最端后直接返回起點遍歷。

⑥ C-Look算法:只有磁頭移動的方向上沒有請求了,直接返回起點。

 

4.4,磁盤存儲器(外存)管理:

 4.4.1,外存分配方式(外存的組織/管理方式):

①連續分配方式:將每一個文件分配一組相鄰的盤塊,通常是同一個磁道上。讀寫時不必移動磁頭。

  • 順序文件結構--順序文件

+:易訪問,順序訪問速度快

-:<1>內存碎片化,<2>需要預知文件大小, <3>刪除文件不靈活 <4>不能動態增長文件。

②連接分配:將文件裝入多個離散的盤塊,再通過連接指針連接成鏈表。

  • 隱式連接:文件控制塊 FCB中包含指向第一個和最后一個盤塊的指針。每個盤塊有指向下一盤塊的指針。

--只適合用於順序訪問,即鏈表的隨機訪問問題。

  • 顯示連接:建立一張連接表,將各物理塊的指針都放入,整個磁盤只設置一張。每個文件的第一個

盤塊地址作為文件地址放入FCB中。找第i塊時,在FAT中遍歷找到其物理塊號,再去訪問。

<1>FAT技術(文件分配表),引入卷(CDEF盤,每個)

<2>MFT

③索引分配:顯示連接雖然解決了,離散分配隨機訪問的問題,但也帶來了新問題:<1>不支持高效直接存取。<2>FAT占用較大空間

  • 單級索引:為每個文件分配一個索引塊,順序存放該文件用到的的盤塊號,FCB中存放文件索引塊的地址,不用將FAT調入內存,文件較大時適合。

+:<1>支持直接訪問,如某文件第i塊,在索引塊中找到盤塊號得到物理地址即可。<2>無內存碎片。

-:小文件(只占10幾個塊以內)采用索引分配(一個塊可以存放數百個塊號)

  • 多級索引:每一個索引盤塊,容納的盤塊號數量有限,大文件可能需要很多盤塊號。---多級索引。

+大大加快文件查找速度。

-:<1>所需啟動磁盤的次數隨索引級數的增加而增多,<2>實際情況:小文件居多,大文件較少,采用多級索引分配效果不理想。

  •  增量式索引分配:對小,中,大,特大文件,采用不同分配方式。若盤塊大小為1~4KB。
  • 對於小文件(少於10個盤塊1~10K,4~40K):將所有盤塊地址都放入FCB--直接尋址。
  • 中等文件(11~256K,5~4MB):可采用單級索引分配--一次間址。
  • 大型文件:采用多級索引,--二次/多次間址。

 4.5,文件管理:

4.5.1,文件分類

①系統文件。用戶文件。庫文件。

②源文件(ASCII或漢字)。目標文件(由源文件編譯生成)。可執行文件.exe

③只執行文件。只讀文件。讀文件。

④普通文件。目標文件。特殊文件(指系統中各類IO設備,為統一管理,系統將所有IO設備視為文件。

 4.5.2,磁盤分區:文件區+目錄區。

①文件目錄:一種數據結構,

  • 功能:<1>按名存取<2>提高檢索速度<3>文件共享<4>允許文件重名(不同路徑下)
  • 為構建目錄,需要對文件設置用於描述和控制的文件的數據結構。FCB

②FCB文件控制塊:包含文件基本信息:<1>文件名<2>物理位置<3>類型,大小<4>文件結構

③索引節點:改進FCB,提高索引搜索效率。

  • 存儲除文件名外的所有的信息。
  • 索引時用到的信息較少,不用將目錄加載如內存
  • 目錄中只含有文件名和指向文件索引節點的指針。

 4.5.3,文件的邏輯結構:

  • 無結構文件:由一系列二進制流或者字符流組成的“流文件”。.txt
  • 有結構文件:由記錄組成。如excel,sql。記錄又可分為定長記錄,變長記錄。

       <1>順序文件。<2>索引文件。<3>索引順序文件。

①順序文件:

  • 鏈式存儲:可變長/定長記錄都不能實現隨機存取。
  • 順序存儲:

可變長記錄:無法實現隨機存取

定長記錄:可實現隨機存取

  串結構:無法快速找到某關鍵字對應的記錄。

  順序結構:可以快速找到某關鍵字對應的記錄。

②索引文件:解決可變長記錄文件查找慢的問題。

  • 每個文件建立一張索引表,索引表表項為文件中的記錄。
  • 適用於對信息的及時處理要求比較高的場合。
  • 可以對不同數據項建立不同索引表。

③索引順序文件:

  • 讓每一個記錄對應一個索引表表項太過浪費。
  • 讓一組記錄對應一個索引表項。
  • 多級索引。

4.5.4,文件的物理結構:外存中分配/組織方式

①連續分配:每個文件在磁盤上占用一組連續的塊。

+:<1>讀寫速度快,磁頭移動距離短。<2>可隨機訪問

-:<1>文件擴展不方便,(如文件后無足夠大連續空間只能移動位置)<2>外存碎片。

②連接分配:

  • 隱式連接:FCB中有記錄起始塊號和結束塊號。
  • 每個塊有指向下一塊的指針。(鏈表不支持隨機訪問問題)

+:方便拓展,不產生碎片

  • 顯式連接:維護文件分配表FAT,表項把塊號和下一塊塊號記錄下來。
  • 一個磁盤維護一張FAT,開機后,FAT讀入內存並常駐內存。

+:支持隨機訪問。不產生碎片

-:維護FAT需要空間。

③索引分配:允許文件離散的分配在磁盤中,為每個文件建立一張索引表,記錄文件的各個邏輯塊對應的物理塊號。記錄索引表的盤塊叫索引塊

  • FCB中存放索引塊的地址。

+:支持隨機訪問,拓展方便,

-:索引需要一定空間

  • 若文件太大一個所有塊存不下:

<1>連接方案:每個索引塊有指向下一個索引塊的地址

<2>多級索引

<3>混合索引:避免小文件情況下浪費空間。

 

4.6,文件存儲空間管理:磁盤空閑區管理:

 4.6.1:存儲空間的划分:

①文件卷:(邏輯卷概念)CDEF盤,

  • 一個文件卷可以由多個物理磁盤組成。
  • 一個物理磁盤可以划分為多個卷。

②每個卷可分為

目錄區:存放:FCB,索引節點,空閑表,超級塊等

 文件區:存放文件。

 4.6.2,空閑分區管理方法:

①空閑表法:記錄每一個連續空閑分區的起始塊號和塊數,

  • 適用於文件文件物理結構為連續分配方式
  • 分配與回收時要合並分區,與內存分配類似。

②空閑鏈表法:

  • 空閑盤塊鏈:以盤塊為單位鏈起來。一個鏈表。

+:分配回收簡單

-:鏈很長

  • 空閑盤區鏈:將空閑區鏈成一個鏈,盤區是相鄰的空閑盤塊鏈(標明盤區大小)
  • 分配與回收時要合並分區,與內存分配類似

      

③位示圖法:用一位二進制,表示一個盤塊的使用情況0-空閑,1-已分配

  •  用一個二位數組表示磁盤區的盤塊分配情況。

④成組連接法:linux系統采用。

  • 文件卷的目錄區中設置一個超級塊(鏈表頭,類似索引塊),系統啟動會將超級塊讀入內存。
  • 超級塊中記錄了下一組空閑盤塊的個數和盤塊號。
  • 類似空閑盤區鏈,只是規定每個鏈的長度,如100 個,每個鏈中的盤塊是離散的
  • 盤塊的分配與回收采用頭插法。

 

第五章  IO管理

5.1,IO系統功能:

①方便用戶使用IO設備

②提高CPU和IO設備的利用率

③用戶在共享設備時提高方便

5.2,IO設備分類

①按使用特性:

  • 存儲設備:也稱外存/輔存
  • IO設備,鍵盤,鼠標,掃描儀,視頻攝像,打印機,繪圖儀
  • 網絡通信設備

②按傳輸速率:

  • 低速:鍵盤
  • 中速:打印機
  • 高速:磁帶機,光盤機

5.3,IO控制器

  • 接收識別CPU發出的命令
  • 向CPU報告識別狀態
  • 數據交換
  • 地址識別

5.4,IO控制方式:控制IO設備的讀和寫

①程序直接控制方式:

  • CPU向控制器發出指令,啟動設備,狀態:未就緒
  • (啟動完成之前)輪詢其他控制器狀態,就緒了就可以傳送數據,將數據讀入CPU寄存器
  • 啟動完成,報告自己狀態。(已就緒)
  • 發現設備已就緒,將數據讀入CPU寄存器

+:實現簡單

-:CPU干預頻繁,CPU與IO設備串行工作,利用率低

②中斷驅動方式

  • 由於IO設備速度慢,CPU發出讀寫命令后,將等待IO進程阻塞,先切換其他進程執行。當IO完成后,控制器發出一個中斷信號,CPU檢測中斷信號

進行進程調度,處理等待IO進程。

  • CPU執行完每個指令都會檢查中斷
  • 中斷處理耗時,太頻繁降低利用率。

+:CPU可以與IO並行,降低CPU干預

-:頻繁中斷會消耗CPU時間

③DMA方式:直接存儲器方式

  • 數據傳送以塊為單位
  • 數據的流向從設備直接放入內存,或內存到設備
  • CPU干預少,只在開始和結束時干預

+:以塊為單位傳輸數據,CPU干預進一步降低

-:CPU每發出一條指令,只能讀/寫一個或多個連續的塊。離散的數據塊要多條指令

④通道方式:--一種硬件,“低配CPU”專門處理IO的處理器,能識別通道指令

  • CPU干預低,一次給通道一組讀寫任務,完成后才中斷,請求CPU干預
  • 數據傳輸單位:一組數據塊

+:CPU通道,IO設備可並行工作,資源利用率高。

-:實現復雜,需要專門的硬件支撐

5.5,IO系統的層次結構:

①用戶層IO軟件            實現與用戶交互的接口,用戶可直接調用該層提供與IO相關的庫函數,對設備進行操作

②設備獨立性軟件        用於實現用戶程序與設備驅動器的統一接口

③設備驅動程序           與硬件直接相關,用於具體實現系統對設備發出的操作指令

④中斷處理程序           用於保存被中斷進程的CPU環境

⑤硬件

5.6,IO核心子系統功能:

①假脫機技術:SPOOling

  • 脫機技術:用外圍控制機和磁帶緩解紙帶與CPU之間的速度差
  • 假脫機:用軟件的方式模擬外圍控制機模擬假脫機技術
  • 實現共享獨占設備

②設備分配與回收

<1>設備:

  • 獨占設備:打印機
  • 共享設備:磁盤
  • 虛擬設備:SPOOLing技術的共享打印機

<2>分配方式:

  • 安全分配方式:一個進程一次只能使用一個設備,破壞“請求保持條件”,不死鎖。

分配IO的進程將阻塞,CPU與IO設備只能串行工作

  • 不安全分配方式:一個進程可以使用多個設備

效率高,但可能會引發死鎖

  • 靜態分配:進程運行前為其分配所需的全部資源,不滿足則阻塞,滿足則運行結束釋放所有資源

不發生死鎖

  • 動態分配:動態申請設備資源。

③通道技術

  • 一個通道可以控制多個控制器
  • 一個控制器可控制多個設備

5.7,緩沖區管理:

  • 緩沖區:一個內存區域,可有專門的硬件組成,也可利用內存作為緩沖區。
  • 緩沖區作用:

<1>緩和CPU與IO設備之間速度不匹配的矛盾

<2>減少CPU的中斷頻率,放寬CPU中斷響應時間限制

<3>解決數據粒度不匹配問題

<4>提高CPU與IO設備之間的並行性

  • 單緩沖:在內存中分配一個緩沖區
  • 雙緩沖:交替使用,(防止出現內存或CPU等待緩沖區寫滿)
  • 循環緩沖區:將多個大小相等的緩沖區連接起來
  • 緩沖池:由系統中的公用緩沖區組成

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM