1. 程式人生 > >作業系統之儲存管理

作業系統之儲存管理

今天我們來看一下作業系統的儲存管理。

目的

儲存器是計算機結構中必不可少的一部分,每個使用者程式都需要向作業系統申請儲存資源,那麼作業系統在儲存管理髮揮怎樣的作用呢?
主要有一下三點:
1、為使用者使用儲存空間提供方便。使用者只需要在自己的邏輯空間內程式設計,使用者只需要跟作業系統說我要用這麼大的記憶體空間,你分給我。至於我分到哪裡(具體在記憶體中的實體地址),別人分到哪裡,我不用管。
2、充分發揮記憶體的利用率。 作業系統的作用是讓儘可能多的使用者程式調入記憶體、儘量快地分配到記憶體並執行。
3、記憶體保護。 作業系統必須有一個機制,記錄哪些空間用了,哪些空間沒有用。必須保護記憶體不被非法訪問。分給使用者的空間不會被其他使用者(包括系統自己)非法訪問。

記憶體分配

連續分配至為一個使用者程式分配一個或多個連續記憶體空間。
主要的分配方式有下面幾種:

  1. 單一連續分配
    這種分配方式的運用場景是:一個使用者獨佔連續的記憶體使用者去,只能用於單使用者、單任務的作業系統中。
    這時的記憶體區包含系統區和使用者區,可以要求對系統區進行保護(給一個基址,只能使用基址後面的記憶體空間,0到基址範圍都歸系統),也可不對系統進行保護。
  2. 固定分割槽分配
    固定分割槽的意思是將一整個大的記憶體區域分成多塊,每塊只能給一個使用者程式。使用場景適合多使用者、多工的環境。
    分割槽方法大小劃分包括:
    分割槽大小一定:
    雖然這種分配方法簡單,但是有可能會出現大程式裝不下,小程式浪費的尷尬場面。
    分割槽大小不等:
    根據使用者程式所申請記憶體空間大小的分佈,可以將記憶體區分成多個較小的分割槽,適量的中等分割槽,少量的大分割槽。
    雖然這種方法較好處理了分割槽大小相等的尷尬場景。但是這種方法有一個問題就是不知道分割槽的大小如何設定比較好,每個大小分割槽的比例是多少也不清楚。可能會導致特別大的程式可能還是裝不進記憶體區。
    固定分割槽的分配有兩種演算法:
    1、首次適應演算法(FF):按序選擇第一個滿足要求的記憶體區。
    2、最佳適應演算法(BF):找一個與程式大小最匹配的空閒分割槽分配給使用者。這樣做的好處可以提供記憶體空間的利用率,不會出現小程式佔有大空間的情況,比較好。
  3. 動態分割槽分配
    那就把分割槽的大小不固定吧,於是就來個動態分割槽分配。
    作業系統根據使用者程式的大小,動態地分配連續的記憶體空間,當沒有使用者程式執行時,記憶體只有一個連續分割槽。當用戶程式要求分配記憶體時,依次分配與使用者程式大小相等的記憶體,剩下的是空閒區。當用戶程式執行完成,回收記憶體,留給其他使用者程式使用。
    要實現動態分割槽分配,必須考慮一下三個問題:
    1、我用什麼資料結構來記錄空閒區的地址與大小;
    陣列、連結串列、紅黑樹都可以。
    2、怎麼分給使用者程式;
    (1)首次適應演算法(FF):從空閒分割槽表首開始查詢,找到第一個合適的分割槽即分配。
    該演算法傾向於使用記憶體中低地址的空閒分割槽,保留了高地址部分的空間,為以後分配大的記憶體空間創造了條件。但是低地址部分的記憶體空間不斷被切割,留下許多小碎片(比較小的空閒區),提高了分配時查詢空閒分割槽的開銷。
    (2)迴圈首次適應演算法:它跟首次適應演算法的區別在於它不是從表首開始查詢,而是從上次找到的空閒分割槽開始查詢,直到找到一個能滿足需求的空閒分割槽。這樣做使得空閒分割槽的分佈比較均勻,但是缺乏大的空閒分割槽。
    (3)最佳適應演算法:該演算法尋找最合適的分割槽給使用者程式。為了快速查詢,一般會使用紅黑樹來按分割槽大小排序。這種演算法空間利用率比較高,但同樣會產生小碎片,而且每次分配必須重新排序,帶來一定的開銷。
    (4)最差適應演算法:與最佳適應演算法相反,最差適應演算法將最大的空閒分割槽分配給使用者程式,這樣會產生比較少的小碎片,但是大的空閒分割槽就被破壞了,維護順序也帶來開銷。
    3、使用者程式使用完後,怎麼回收。
    其實回收也挺簡單,主要參照下面的策略:
    如果回收區前面的分割槽空閒,就合併這兩個分割槽,大小改成它們的大小之和;
    如果回收區後面的分割槽空閒,同樣合併這兩個分割槽,大小為它們之和,將起始地址改成回收區的地址。
    如果回收區前後的分割槽都空閒,那麼將他們合併成一塊,總的塊數減一,大小為三者之和。
    如果不是上面的情況,就新建一個表項,在合適的位置插入到空閒分割槽(鏈)表。
  4. 動態重定位分割槽分配
    該分配演算法基本上與動態分割槽分配演算法相同,差別在於動態重定位分割槽分配多了一個緊湊的功能。
    緊湊:對記憶體中正在使用的分割槽進行搬遷,使得多個小的空閒分割槽(小碎片)合併為一個大的空閒分割槽。
    要實現緊湊功能,由於分給使用者程式的實體地址已經被修改,所以需要一個重定位暫存器,來儲存程序的首地址。那麼使用者程式在訪問記憶體空間的時候,用的是相對地址,這時硬體會將相對地址加上重定位暫存器的值變成實際的實體地址。

地址對映

記憶體保護

記憶體擴充

相關推薦

作業系統儲存管理

今天我們來看一下作業系統的儲存管理。 目的 儲存器是計算機結構中必不可少的一部分,每個使用者程式都需要向作業系統申請儲存資源,那麼作業系統在儲存管理髮揮怎樣的作用呢? 主要有一下三點: 1、為使用者使用儲存空間提供方便。使用者只需要在自己的邏輯空間內

作業系統-1-儲存管理LFU頁面置換演算法(leetcode460)

LFU快取 題目:請你為 最不經常使用(LFU)快取演算法設計並實現資料結構。它應該支援以下操作:get 和 put。    get(key) - 如果鍵存在於快取中,則獲取鍵的值(總是正數),否則返回 -1。    put(key, value) - 如果鍵不存在,請

作業系統檔案管理

  一 檔案和檔案系統           檔案管理:把所管理的程式和資料組織成一系列的檔案,並能進行合理的儲存、使用等操作。          1 基本概念            資料項:描述物件某種屬性的字符集;是資料組織中可以命名的最小邏輯資料單位。      記錄:一組相關資料項集合,描述物件

liteos實時作業系統時間管理

概述 基本概念 時間管理以系統時鐘為基礎。時間管理提供給應用程式所有和時間有關的服務。 系統時鐘是由定時/計數器產生的輸出脈衝觸發中斷而產生的,一般定義為整數或長整數。輸出脈衝的週期叫做一個“時鐘滴答”。系統時鐘也稱為時標或者Tick。一個Tick的時長可以靜態配置。

作業系統磁碟管理

磁碟儲存器具有容量大、存取速度快、支援隨機存取的特點,因此被廣泛應用於計算機系統中。對於作業系統來說,管理好磁碟的三大要求和目標是: (1)合理有效利用磁碟:採用合理的檔案儲存空間分配演算法,儘量減少磁碟碎片,提高硬碟的利用率; (2)提高磁碟

作業系統儲存管理

3.虛擬記憶體的實現 一. 分頁的概念         大部分虛擬記憶體系統中都是用了一種叫分頁的技術。程序的虛擬地址空間按照固定大小劃分成頁面的若干單元,在實體記憶體中相應的單元稱為頁框,且它們的大小通常是一樣的。頁面與頁框形成一一對映關係,這種對映關係的建立有賴於一種存在於記憶體中的資料結構----頁表

校招季——作業系統儲存管理

第3章 儲存管理 現在的儲存器體系為分層儲存器體系,作業系統的工作是將這個儲存體系抽象為一個有用的模型並進行管理。 3.1無儲存器抽象 每個程式都直接訪問實體記憶體。這種情況下,想在記憶體中同時執行兩個程式是不可能的。這種系統中實現並行的一種方法是使用多執行緒來程式設計。 執行多道程式的方法是作業系統將當

Linux作業系統基礎操作總結 Linux作業系統基礎操作基礎知識 Linux作業系統基礎命令介紹 Linux作業系統基礎操作目錄操作 linux作業系統基礎操作檔案操作 Linux作業系統許可權管理

Linux作業系統基礎操作之基礎知識 Linux的組成 Linux核心:系統心臟,是作業系統的核心,實現作業系統的基本功能。 Linux shell:系統的使用者介面,提供使用者與核心互動的一種介面,解釋使用者輸入的命令並將其送入核心執行。 Linux應用程式:Linux作業系統中應用程式集合,包括:

作業系統儲存管理的基本原理

儲存管理的基本原理 記憶體管理方法 記憶體管理主要包括記憶體分配和回收、地址變換、記憶體擴充、記憶體共享和保護等功能。 下面主要介紹連續分配儲存管理、覆蓋與交換技術以及頁式與段式儲存管理等基本概念和原理。 1.連續分配儲存管理方式 連續分配是指為一個使用者程式分配連續的記憶體空間。連續分配有單一

七、作業系統裝置管理

七、裝置管理 概述 1.    裝置型別:計算機系統中,除了CPU及儲存器之外,還有一類比較重要的硬體資源——I/O裝置。I/O裝置是計算機與外界進行資訊交換的裝置。 2.    裝置管理的任務                                                   

作業系統儲存器管理

儲存器的層次結構 儲存器的層次如下圖: 上圖中,暫存器和主儲存器稱為可執行儲存器。快取記憶體的作用是緩和CPU與記憶體之間的速度差異,主要由硬體實現。磁碟快取的出現是由於記憶體容量不夠,需要引入磁碟,然而磁碟的I/O速度遠低於主存的訪問速度,為了緩和兩者

作業系統儲存器管理方式

儲存器管理 儲存器的層次結構 儲存器設計為層次結構的原因 雖然儲存器的容量不斷擴大,但是隨著軟體在功能、規模、種類上的急劇增加,儲存器仍然是一種比較稀缺的資源;對它的管理常常影響到儲存器的利用效率,而且對系統性能也有一定的影響。一般的,對儲存

ARM裸機程式儲存管理器控制SDRAM

本文講的是s3c2440A晶片的儲存管理器,配套的開發板是友善之臂mini2440,首先貼出程式碼 head.s的程式碼: .equ MEM_CTL_BASE, 0x48000000 @定義13個暫存器的首地址 .equ SDRAM_BASE

作業系統——分割槽儲存管理

分割槽儲存管理是把主儲存器中的使用者區作為一個連續區或分成若干個連續區進行管理,每個連續區中可裝入一個作業。 多道程式系統一般都採用多個分割槽的儲存管理,具體可分為固定分割槽和可變分割槽兩種方式。 一、固定分割槽儲存管理 把主存中可分配的使用者區域預先劃分成若干個連續的分割槽,每個連續區的大小可以相同,

作業系統虛擬儲存管理

  虛擬儲存器 邏輯上擴充記憶體 1. 虛擬儲存器的基本概念    所謂“虛擬儲存器”,是指具有請求調入功能和置換功能,能從邏輯上對記憶體容量加以擴充的一種儲存器系統。          (1) 虛擬儲存管理下 &nbs

作業系統儲存管理頁式儲存管理深入淺出

用分割槽方式管理的儲存器,每道程式總是要求佔用主存的一個或幾個連續儲存區域,作業或程序的大小仍受到分割槽大小或記憶體可用空間的限制,因此,有時為了接納一個新的作業而往往要移動已在主存的資訊。這不僅不方便,而且開銷不小。採用分頁儲存器既可免去移動資訊的工作,又可儘

作業系統儲存管理分段儲存

需求 從固定分割槽到動態分割槽,從分割槽方式到分頁方式發展提高了主存空間利用率。 而分段儲存管理的引入,則滿足使用者(程式設計師)程式設計和使用上的要求,這些要求其它各種儲存管理技術難以滿足。 需求解析: 在分頁儲存管理中,經連結編輯處理得到了一維

作業系統儲存管理分段式與段頁式虛擬儲存系統

分段式虛擬儲存系統 分段式虛擬儲存系統把作業的所有分段的副本都存放在輔助儲存器中,當作業被排程投入執行時,首先把當前需要的一段或幾段裝入主存,在執行過程中訪問到不在主存的段時再把它們裝入。因此,在段表中必須說明哪些段已在主存,存放在什麼位置,段長是多少。哪些段

網站運維技術與實踐資料採集、傳輸與過濾 談談運維人員謹慎作業系統環境和管理

一、採集點的取捨 說到資料分析,首先當然是資料越全面越詳細越好。因為這有助於分析得出比較正確的結果,從而做出合理的決策。 1.伺服器資料 採集的伺服器資料主要圍繞著這麼幾個? (1)伺服器負載 (2)磁碟讀寫 (3)網絡卡流量 如何採集這些資料,可以通過zabbix監控獲取。 關於zabbix

易學筆記-系統分析師考試-第3章 作業系統基本原理/3.3 記憶體管理/3.3.4 虛擬儲存管理

虛擬儲存管理 背景:固定式、分頁式、分段式儲存一個共同的特點是要求的儲存空間必須足夠大裝載入作業的全部資訊,但由於作業在執行過程中,作業中所有的記憶體不是一次全部使用的,甚至有些記憶體塊根本就不是使用,這樣就造成了記憶體資源的極度浪費 虛擬儲存工作過程:當作業載入到記憶體時