儲存器是計算機系統的重要資源之一,任何程式、資料和各控制資料結構都必須占用一定的儲存空間。因此,儲存器管理直接影響系統效能。儲存器有記憶體(主存
)和外存(輔存
)組成,記憶體由包含相應物理單元的、順序編址的
「儲存塊
」組成。
cpu只有在
啟動相應
io裝置之後,才能使記憶體
與外存交換資訊。
在誕生作業系統以前,對記憶體的使用常採用無管理模式,這是最簡單的記憶體使用方式。記憶體不劃分系統區和使用者區,使用者程式對整個記憶體空間及整個計算機有著完整的控制。其優點在於:純硬體啟動裝入,無其它軟體支援,並提供最大的靈活性,使用者可以採用任何所希望的記憶體控制方式。其缺點在於:沒有提供任何便利性服務,使用者必須整體考慮,必須考慮物理細節,有時還需要採用覆蓋、動態裝入等手段來緩解記憶體容量不足等問題。本章主要討論作業系統中對記憶體的基本管理。
$4.1 內存管理概述
一、相關的基本概念
1、區域性性原理
實驗證明,在乙個程序的執行過程中,在一段時間內,大部分**、資料並不經常被訪問,即
cpu總是集中地訪問其中某一部分,而不是隨機地對所有部分具有平均訪問概率。這種現象稱之為區域性性原理。與
cpu訪問該區域性片段內容的
次數相比,該該區域性片段的
變動速度
是相當緩慢的,這就使得對儲存進行高效的管理成為可能。這樣,儲存管理系統把程序中那些不經常被訪問的內容放入外存中,待需要訪問它們時再將它們調入記憶體。
2、虛擬儲存器
由於區域性性原理的作用,對於部分在記憶體部分在外存的情形,我們應該如何安排它們的位址呢?
(1) 編址方法
① 實體地址法:按照物理儲存器中的位置賦予實際實體地址,即由編譯鏈結決定實際位址
(鏈結到物理空間
)。這樣,目標**執行速度快,但由於物理容量限制,能裝入的併發程序數將會大大減少,而且對於較大的程序來說,所需容量若超出實際容量就不可能執行。
② 虛擬位址法:編譯鏈結到乙個始於0的線性或多維的虛位址空間
(邏輯空間
),包括靜態鏈結和動態鏈結。這樣,每條指令和資料單元在這個邏輯空間中都擁有確定的位址,稱為虛擬位址。顯然,程序在這個邏輯空間中可以是非連續的,由相應的管理機構實現由虛擬位址到實際實體地址的變換。
(2) 虛存技術
虛擬儲存器是儲存管理的核心概念。
我們將程序中的目標**、資料等的
虛擬位址組成的
虛擬空間稱為虛擬儲存器,
僅規定每個程序中相互關聯資訊的相對位置,
而不考慮資訊存放的實際位置及物理儲存器的大小。每個程序都擁有自己的
虛擬儲存器,其容量受計算機的位址結構和定址方式確定。
虛存本質上就是程式的不完整裝入。虛存是為了提高記憶體利用率而提出的一種技術。在乙個作業系統下,如果不要求任一使用者程式所實際占用的物理空間都大於等於該使用者程式的邏輯位址空間,而且這種功能的實現對使用者來說是透明的(即使用者不必知道作業系統是如何實現這一功能的),則稱該作業系統實現了虛存技術,相應的使用者程序空間稱為虛存空間或虛位址空間。
虛存有頁式虛存、段式虛存、段頁式虛存三種。
(3) 虛存技術的作用
虛擬儲存器的主要功能就是,作業系統在相應的硬體支援的支援下,完成虛存到物理儲存器的變換,統一管理記憶體和外存間資料和**自動交換。由於每個程序都擁有不受物理儲存器大小的限制的、自己的虛存,而系統又不可能提供足夠大的記憶體來存放所有內容,所以記憶體中只能儲存那些經常被訪問的內容,將那些不經常被訪問或在一段時間內不會被訪問的資訊存放於外存之中,待到程序執行過程中需要這些資訊時,再從外存中調入記憶體--即交換排程。在作業系統中,引入虛存技術,可以解決很多技術難題,給使用者提供最大的方便,具體來說,採用虛存技術帶來的好處是:
①
可以解決大程式在小空間內執行的問題,即可以在比使用者程式實際的邏輯空間小得多的物理空間上執行該使用者程式。
②
提高了記憶體利用率,增加了多道數,提高了cpu利用率和系統吞吐量(但響應時間或輪轉時間可能並沒增加)。乙個程序的一次執行中,沒有執行或訪問到的那些**頁和資料頁,永遠不會進入記憶體。
③
相對於交換技術,虛存減少了裝入或交換所需的io量。虛存每次換入換出時是以頁(或段)為單位,而單純的交換技術(整體交換技術)在每次換入換出時則是以整個程序空間為單位的。
④
相對於覆蓋,使用者(程式)不必畏自己劃分覆蓋塊,簡化了使用者的程式設計任務。
⑤
減輕使用者儲存管理的負擔,以便集中精力在應用開發上。使用者不必考慮空間大小問題及自己採用何種相關的技術(如覆蓋),不必考慮實際位址,不必考慮實存中的洞。
使用虛存的缺點是減慢了程式執行的速度。所以如果資金充分,就配備足夠大的記憶體。但如果資金不足,而且程式執行速度允許再慢些,那麼虛存是很好的選擇
3、位址變換
計算機的記憶體位址的集合稱為記憶體空間或實體地址空間,它是乙個一維線性空間。所謂
位址變換
就是指把幾個虛存的一維線性空間或多維線性空間「變換
」到記憶體的唯一的一維物理線性位址空間。它包含兩個問題:
虛擬空間的劃分問題、
位址對映問題
(位址重定位)。
(1)虛擬空間的劃分問題:
(這主要指導編譯器、鏈結程式的工作)
即程序的各個正文段、資料段等如何放置於虛擬空間
(邏輯空間
)中,它與計算機體系結構相關,一般首先劃分為系統空間和使用者程序空間,然後在各自的空間中再行更細緻的劃分。
(2)位址對映問題:(這主要指導記憶體裝配程序的工作)
即把虛擬空間中已經鏈結劃分好的內容裝入相應記憶體,並將虛擬位址
對映為記憶體位址。位址對映
就是要建立虛擬位址與記憶體位址的關係,具體方法有兩種:靜態位址重定位和動態位址重定位
a)
靜態位址重定位:即在
虛空間程式執行之前由裝配程序完成
對映工作,完成各個首位址不同的連續位址變換,不需要硬體支援,但無法實現
虛擬儲存器,不支援交換技術。
程式一旦裝入記憶體就不能再移動和交換,而且必須在程式執行之前把有關部分全部裝入記憶體。
b)
動態位址重定位:
即在程式執行過程中cpu
訪問之前,將要訪問的內容
(**、資料
)位址轉換成記憶體位址,它依靠硬體位址變換機制完成。
物理線性位址=
基位址+ 程式虛位址
在保護方式下的cpu
的重定位過程就是把程式檔案體中的重定位資訊表「轉換」為程序空間中的多個「描述表」資訊。如中斷重定位資訊形成中斷描述表
idt,區域性變數重定位資訊形成區域性描述表
ldt,全部變數重定位資訊形成全部描述表
gdt,進而建立任務狀態描述資訊表
sst,把各個分表儲存段
(idt
、ldt
、tss)
的入口描述也放置於
gdt之中,設定程序就緒狀態並存放於就緒佇列之中,等待被排程執行
(執行時個描述表入口被存放於
gdtr
、ldtr
、idtr
、tr)。
動態位址重定位的主要優點有:
·可以對記憶體進行非連續分配; ·
提供了實現虛擬儲存器的基礎; ·
有利於程序和執行緒的共享。
作業系統 儲存器管理
程式的裝入和鏈結 連續分配方式 基本分頁儲存管理方式 基本分段儲存管理方式 虛擬儲存器的基本概念 請求分頁儲存管理方式 頁面置換演算法 請求分段儲存管理方式 使用者程式要在系統中執行,必須先將它裝入記憶體,然後由編譯程式 compiler 對使用者源程式進行編譯,形成若干個目標模組 object m...
作業系統 儲存器管理
第四章 儲存器管理 儲存器的層次結構 儲存器的三層結構,cpu暫存器 暫存器 主存 快取記憶體,主儲存器,磁碟快取 輔存 固定磁碟,可移動儲存介質 處理機都是從主儲存器中取得指令和資料,將取得指令放入指令暫存器中,資料放入資料暫存器中 暫存器存放運算元,作位址暫存器加快位址轉換速度 快取記憶體用以緩...
作業系統 儲存器管理
使用者程式要在系統中執行的話,就必須裝入記憶體,然偶後將其轉變為乙個可執行的程式。程式的鏈結 程式的裝入 程式裝入記憶體的問題解決了,但是記憶體又是怎麼為程式分配記憶體的?連續分配 分配演算法 基於索引搜尋 分配操作 事先規定最小的剩餘分割槽大小size,當需要分配u.size大小記憶體的時候,從空...