內存管理課件_第1頁
內存管理課件_第2頁
內存管理課件_第3頁
內存管理課件_第4頁
內存管理課件_第5頁
已閱讀5頁,還剩110頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三章

內存管理

存儲的層次結構

?第3章內存管理

?3.1內存介紹

?3.1.1內存管理

?1.存儲的層次結構

高速緩存

?2.高速緩存

?目前存儲的技術是設置CPU的三級緩存:

?(1)L1Cache(一級緩存)是CPU第一層高速緩存,分為

數據緩存和指令緩存。內置的L1高速緩存的容量和結構對

CPU的性能影響較大,不過高速緩沖存儲器均由靜態(tài)

RAM組成,結構較復雜,在CPU管芯面積不能太大的情

況下,L1級高速緩存的容量不可能做得太大。一般服務器

CPU的L1緩存的容量通常在32KB?256KB。

高速緩存

(2)L2Cache(二級緩存)是CPU的第二層高速緩存,分

內部和外部兩種芯片。內部的芯片二級緩存運行速度與

CPU主頻相同,而外部的二級緩存則只有CPU主頻的一半。

L2高速緩存容量也會影響CPU的性能,原則是越大越好,

現在家庭用CPU容量最大的是512KB,而服務器和工作站

上用CPU的L2高速緩存為1MB,有的高達2MB或者4MB。

(3)L3Cache(三級緩存),分為兩種,早期的是外置,

現在的都是內置的。而它的實際作用是可以進一步降低內

存延遲,同時提升大數據量計算時CPU的性能。降低內存

延遲和提升大數據量計算能力對游戲有很大幫助,在服務

器領域增加L3緩存對性能有顯著的提升。比如具有較大L3

緩存的配置利用物理內存會更有效,故它比較慢的磁盤

I/O子系統(tǒng)可以處理更多的數據請求。

高速緩存與內存速度的對比

LavalysEVERESTCache&MemoryBenchmarlc

ReadVAteCcpylatency

1I5329MB"i

Memory6402MB/g-17件II7,7n$;

I:Cache29751MB/S296S9母59s87MB衿||1.6nsj

_______________

12Cache13637MB衿1[10357蟀[|叫I|6Jns|

13Cache―1_______________II_______________II______I

CPUTypeOualCoreIntelCore2DuoE6330(.Conroe,LGA77S)

CPUClock18682MhU(origal:1866W?)____________________________

bUF5B266.9MHz(original:266MHz)________________________________________

CPUMult氏r|兀6|CPUSteppng陽I

Memory0u$400.3MHr?AM:FS8RatioI⑵aI

MemoryType|DudChanneMDR2?0SO*(呆$$4852)__________________________

ChpsetIntelBroadwaterP%S

MotherboardlAsusPa__________________________________________

EVERESTv^.10.1082Beta/BenchDU22.186.0(c)2003^2007Lavalys,Inc.

內存空間的分配和回收

?3.內存管理的主要功能

?(1)內存空間的分配和回收

?操作系統(tǒng)中的內存管理能根據所記錄的存儲區(qū)狀態(tài)作為內

存分配的依據。當用戶提出申請時,實施存儲空間的分配

管理,并能及時回收系統(tǒng)或用戶釋放的存儲區(qū),以供其它

用戶使用。為此,這種存儲分配機制應能完成如下工作:

?記住存儲區(qū)域的狀態(tài),哪些是已經分配的,哪些是未分配

的。保存存儲區(qū)域的狀態(tài)的數據結構稱為內存分配記錄表。

■實施分配。在系統(tǒng)程序或用戶提出申請時,按所需的量給

予分配,并修改相應的內存分配記錄表。

■接收系統(tǒng)或用戶釋放的存儲區(qū)域,并相應地修改內存分配

?錄表。

地址轉換

?(2)地址轉換

?程序設計人員在進行程序設計中,訪問信息時所用到的一

系列地址單元的集合稱為邏輯地址,而存儲空間是內存中

物理地址的集合。在多道程序環(huán)境下,程序不是事先約定

存放位置,而是在執(zhí)行過程中可以動態(tài)浮動,故程序的邏

輯地址和物理地址是不一致的,因此需要內存管理機制提

供地址映射轉換功能,把程序地址空間中的邏輯地址轉換

為內存空間中對應的物理地址。

內存的共享和存儲保護

?(3)內存的共享和存儲保護

?由于內存區(qū)域為多個用戶程序共同使用,所以存儲共享有

兩方面的含義:

?多個用戶程序共同使用內存空間,各個程序使用各自不同

的存儲區(qū)域;

■多個用戶程序共同使用內存中的某些程序和數據區(qū),這些

共享程序和數據區(qū)稱為共享區(qū)。

?因此內存管理必須研究如何保護各存儲區(qū)中的信息不被破

壞和偷竊,同時當多個程序共享一個存儲區(qū)時,也要對共

享區(qū)進行保護,確保信息的完整性和一致性。

內存空間的擴充

?(4)內存空間的擴充

?計算機在實際的應用中,常常出現內存容量大小無法滿足

大程序的要求。同時,內存容量受到實際存儲單元的限制。

因而,內存管理機制必須提供相應的技術,來達到內存單

元邏輯上的擴充?,F在采用的一般是覆蓋技術、交換技術

和虛擬存儲技術。

程序名空間

312相關概念

?1.程序名空間

-源程序中的各種符號名的集合所限定的空間稱為程序名空

間。如源程序中的數據和子程序通常是用符號名進行訪問

的,這些符號名與存儲器地址無任何直接關系。

在程序名空間中提到地址時,都是用符號來代替的,比如

Basic中的行號或Goto語句后面的標識符。程序名空間中

的地址概念只限于編輯器中,方便用戶對程序的邏輯設計。

如圖3-3a所示,主程序和各個子程序都有各自不同的起始

地址標識,變量也有自己的地址標識。

三種空間

0

tiincl

Maimxxxxxxxxxx

{Main

funcl():xxxxxxxx

inta=l;Main

n-lftinc2():xxxxxxxx

}

ibnc3():xxxxxxxx

fiinc?

0

{

intb-l;fund

fund

]ml-1

fiinc3

]fiinc2

0

intc-l;

}func2

Main()

m2-l

]

inti=tuncl():func3

0

intj-func2():

intIc=func3();func3

1m3-l

(a)程序名空間(b)地址空間(c)存儲空間

地址空間與存儲空間

?2.地址空間(AddressSpace)

?經編譯后,源程序中的各種符號名轉換成機器指令和數據

組成的目標程序,且用實際地址碼替換符號地址。把目標

代碼所限定的地址域叫該程序的地址空間。這些程序的地

址都臬從“0”開始的,程序中的其它地址都是相對于起始

地址“0”來計算的。地址空間中的地址叫做相對地址(或

邏輯地址,又叫虛地址)。

?3.存儲空間(MemorySpace)

?存儲空間是指物理存儲器中全部物理存儲單元的集合所限

定的空間,也稱為內存空間。每個存儲單元都有它自己的

編號地拉。該地虻被稱為縮對地拉,或物理同虬,或實他

址。存儲空間的大小由系統(tǒng)的硬件配置決定的,即計算機

中內存容量的大小。

直接存儲分配方式

?4.存儲分配的幾種形式

?解決存儲分配問題有三種方式:

?(1)直接存儲分配方式

?編程人員在程序設計過程中,或匯編程序對源程序進行編

譯時,所用的是實際物理地址,以確保各程序所用的地址

之間互不重疊。

-很顯然,直接存儲分配方式要求內存的可用空間已經確定,

這對于單用戶計算機系統(tǒng)來說是不成問題的。在多道程序

設計發(fā)展初期,通常將存儲空間劃分成若干個固定的不同

大小的分區(qū),并對不同的作業(yè)指定不同的分區(qū)。對于程序

設計人員或編譯系統(tǒng)而言,內存的可用空間是已知的。這

樣,不僅用戶感到不方便,而且內存的利用率也不高。

靜態(tài)存儲分配方式

?(2)靜態(tài)存儲分配方式

?采用靜態(tài)存儲分配方式時,用戶在編寫程序或由編譯系統(tǒng)

產生的目標程序中采用的地址空間為邏輯地址。當連接程

序對它們進行裝入、連接時,才確定它們在內存中的物理

位置,從而產生可執(zhí)行程序。這種分配方式要求用戶在進

行裝入、連接時,系統(tǒng)必須分配其要求的全部內存空間,

若內存空間不夠,則不能裝入該用戶程序。同時,用戶程

序一旦裝入到內存后,它將一直占據著分配給它的內存空

間,直到程序結束時才釋放該空間。其次,在整個運行過

程中,用戶程序所占據的內存空間是固定不變的,也不能

動態(tài)地申請內存空間。

?顯然,這種分配方式不僅不能實現用戶對內存空間的動態(tài)

擴展,而且也不能有效地實現內存資源的共享。

動態(tài)存儲分配方式

?(3)動態(tài)存儲分配方式

?動態(tài)存儲分配方式是一種能有效使用內存的方法。用戶程

序在內存空間中的位置也是在裝入時確定的,但是它不必

一次性將整個程序裝入到內存中,可根據執(zhí)行的需要,一

部分一部分地動態(tài)裝入。同時,裝入內存的程序不執(zhí)行時,

系統(tǒng)可以收回該程序所占據的內存空間。再者,用戶程序

裝入內存后的位置,在運行期間可根據系統(tǒng)需要而發(fā)生改

變。止匕外,用戶程序在運行期間也可動態(tài)地申請內存空間

以滿足程序需求。動態(tài)存儲分配通??刹捎酶采w與交換技

術實現。

?由此可見,動態(tài)存儲分配方式在內存空間的分配和釋放上,

表現得十分靈活,現代的操作系統(tǒng)常采用這種存儲分配方

畀。

地址重定位(AddressRelocation)

?5.地址重定位(AddressRelocation)

?在一般情況下,用戶的一個程序在裝入時所分配的存儲空

間和它的地址空間是不一致的,因此,用戶程序在CPU上

執(zhí)行時,其所要訪問的指令和數據的物理地址和地址空間

中的相對地址是不同的,如圖3.3b&c所示。顯然,如果用

戶程序在裝入或執(zhí)行時,不對有關地址進行修改,則將會

導致錯誤的結果,這種由于用戶程序的裝入而引起的地址

空間中的相對地址轉化為存儲空間中的絕對地址的地址變

換過程,稱為地址重定位,也稱地址映射或地址變換。

靜態(tài)重定位

(1)靜態(tài)重定位

0

01000

I00Movri.(50()]1100Movri,[1500]

50012345150012345

5991600

(a)程序地址空間

256K-I

(b)內存空間

動態(tài)重定位

(2)動態(tài)重定位

(b)存儲空間

內存共享及保護

?6.內存共享及保護

?在多道程序設計的環(huán)境下,系統(tǒng)中有系統(tǒng)程序和多個用戶

程序同時存在,用戶程序間可以共享內存中的信息,但要

保證用戶程序不破壞系統(tǒng)程序,用戶程序之間不相互干擾,

這就是存儲保護所要解決的問題。

?存儲保護的目的有兩個:

■保護系統(tǒng)程序區(qū)不被用戶侵犯(有意或無意的)。如果一

個菜鳥級的程序員,他的程序可以改變操作系統(tǒng)所在的內

存區(qū)域內容,那這個系統(tǒng)還有誰敢用?

?不允許用戶程序讀寫不屬于自己內存空間的數據。正迎合

了宋代陳元靚《事林廣記?警世格言》的那句名言:“自

家掃取門前雪,莫管他人屋上霜?!?/p>

上下界寄存器保護

?(1)界限保護

?上下界寄存器保護

基址、限長寄存器保護

?基址、限長寄存器保護

?【例】有一程序裝入內存的首地址是500,末地址是1500,

訪問內存的邏輯地址是500、345、1200o

?基址寄存器:500

?限長寄存器:1000

?判別式:邏輯地址鄒艮長寄存器

?①500W1000N

?②345W1000N

■③1200W1000X

?這里只判斷地址的合法性,如果要計算物理地址,還需要

加上基址寄存器的值。

訪問方式保護

(2)訪問方式保護

(3)內存共享

廿正確訪問

LOAD12500出錯,開關字■鍵不匹配

單道系統(tǒng)的內存管理

?3.2單道系統(tǒng)的內存管理

OxFITIT

操作系統(tǒng)設備驅動

用戶程序

用戶程序

用戶程序

操作系統(tǒng)操作系統(tǒng)

0x000()0

⑻操作系統(tǒng)3用低地址區(qū)(b)操作系統(tǒng)J用高地址區(qū)⑹操作系統(tǒng)分別3用兩端

單道系統(tǒng)的內存管理

固定分區(qū)管理

?3.3多道系統(tǒng)的分區(qū)管理

?3.3.1固定分區(qū)管理

?固定分區(qū)是指系統(tǒng)在初始化時,將內存空間劃分為若干個

固定大小的區(qū)域1.分區(qū)原則

?(1)分區(qū)大小可以不相等

?分區(qū)大小相等:適合于多個相同程序的并發(fā)執(zhí)行,如圖3-

10a所示;

?分區(qū)大小不等:多個小分區(qū)、適量的中等分區(qū)、少量的大

分區(qū)。根據程序的大小,分配當前空閑的、適當大小的分

區(qū)。如圖3-10b所示。

?(2)分區(qū)個數不變,大小不變

固定分區(qū)管理

(a)人小相同(b)大小不同

的固定分區(qū)的固定分區(qū)

固定分區(qū)管理

0

操作系統(tǒng)

20K\

進程A(6K)

區(qū)號分配長廢起始地址狀態(tài)

第一分M

!8K20KU分配

28K

a232K28K已分配k

進程B(25K)

364K60K已分配第二分區(qū)

4132KI24K未分配/

60K

進程B(36K)

(a)分IX狀態(tài)表第三分區(qū)

124K(

第四分區(qū)

256K

(b)內存狀態(tài)

分區(qū)的分配與回收

?3.分區(qū)的分配與回收

(a)多作業(yè)隊列(b)單作業(yè)隊列

固定分區(qū)分配算法

分區(qū)原則

3.3.2動態(tài)分區(qū)管理

?1,分區(qū)原則

態(tài)

初啟

方式

系統(tǒng)

操作

統(tǒng)中

用動

區(qū)

,

,

空閑

配程

區(qū)

,

,

區(qū)

調

的大

,

,3-14O

?(D根據作業(yè)的大小動態(tài)地劃分分區(qū),使分區(qū)的大小正

好等于作業(yè)大小;

?(2)各分區(qū)的大小是不定的;

?(3)內存中分區(qū)的數目也是不定的。

?顯然,這種分配方式不會產生“內碎片”現象,從而大大

理畫工內存的利用李,但隨著頻繁的調入調出,系統(tǒng)會產

生大量的"外碎片"。

動態(tài)分區(qū)存儲分配

IM

140k

20k

0

分區(qū)說明表

?2.分區(qū)管理

?(1)分區(qū)說明表

始址長度占用林忐始址長度占用林志

20K80KPd160K10K仃效

100K60KPc270K730K行效

170K100KPc

(a)已分配區(qū)收(b)未分配區(qū)及

帶有表格信息的分區(qū)格式

(2)空閑區(qū)鏈表

狀態(tài)位分區(qū)大?。∟+2)前向指針

大小為N的已分配區(qū)或空閑區(qū)

狀態(tài)位分區(qū)大小(N+2)后向指針

空閑區(qū)雙向鏈表

160k270k

位圖

(3)位圖

H293X

分區(qū)的分配與回收

?3.分區(qū)的分配與回收

?通常,分區(qū)的回收有四種情況:

?(1)釋放區(qū)與上下兩個空閑區(qū)相鄰

?在這種情況下,將三個空閑區(qū)合并為一個空閑區(qū)。新空閑

區(qū)起始地址為上空閑區(qū)的起始地址,大小為三個空閑區(qū)之

和。同時,修改可用分區(qū)表或空閑區(qū)鏈表或位圖中的表項

目。

?(2)釋放區(qū)與上空閑區(qū)相鄰

?在這種情況下,將釋放區(qū)與上空閑區(qū)合并為一個空閑區(qū),

其起始地址為上空閑區(qū)的起始地址,大小為釋放區(qū)和上空

閑區(qū)之和。同時,修改可用分區(qū)表或空閑區(qū)鏈表或位圖中

的表項目。

分區(qū)的分配與回收

?(3)釋放區(qū)與下空閑區(qū)相鄰

?在這種情況下,將釋放區(qū)與下空閑區(qū)合并為一個空閑區(qū),

其起始地址為釋放區(qū)的起始地址,大小為釋放區(qū)和下空閑

區(qū)之和。同時,修改可用分區(qū)表或空閑區(qū)鏈表或位圖中的

表項目。

(4)釋放區(qū)與上下兩個空閑區(qū)都不相鄰

查找算法

?3.3.3查找算法

-不論是空閑區(qū)鏈表管理還是空閑區(qū)表格管理,鏈和表

中的空閑區(qū)都可按一定規(guī)則排列,例如,按空閑區(qū)從

大到小排或從小到大排,以方便空閑區(qū)的查找和回收。

常用的動態(tài)分區(qū)管理的空閑區(qū)查找算法有五種:

1.最佳匹配(bestfit)

2.首次匹配(firstfit)

3.下次匹配(nextfit)

4.最壞匹配(worstfit)

5,快速匹配(quickfit)

地址轉換與存儲保護

?3.3.4可重定位分區(qū)分配

?1,地址轉換與存儲保護

內仃

移動技術

-2.移動技術

操作系統(tǒng)

進程5-8OK

進程"KB

進程3-24K

進程2-20K

進程4-50K

進程5-80K

(a)初始狀態(tài)(b)移動之后⑹分配進程5之后

可重定位分區(qū)分配的優(yōu)缺點

?3.可重定位分區(qū)分配的優(yōu)缺點

,(1)優(yōu)點

?可以消除碎片,能夠分配更多的分區(qū),有助于多道程序設

計,提高內存的利用率。

?(2)缺點

?內存移動花費了大量CPU時間;當進程大于整個空閑區(qū)時,

仍要浪費一定的內存;進程的存儲區(qū)內可能放有從未使用

的信息;進程之間無法對信息共享。

分區(qū)管理的優(yōu)缺點

分區(qū)管理的優(yōu)缺點

?1.主要優(yōu)點

?(1)實現了多道程序共享內存;

?(2)實現分區(qū)管理的系統(tǒng)設計相對簡單,不需要更多的

系統(tǒng)軟硬件開銷;

?(3)實現存儲保護的手段也比較簡單。

分區(qū)管理的優(yōu)缺點

?2.王要缺點

?(D內存利用不夠充分。系統(tǒng)中總有一部分內存空間得

不到利用,這部分被浪費的空間叫碎片。固定分區(qū)產生內

碎片,可變分區(qū)產生外碎片。

?(2)沒有實現內存的擴充問題。當進程的地址空間大于

內存空間時,進程無法運行。也即進程的地址空間受實際

內存空間的限制。

?(3)必須連續(xù)存放。進程在內存中總是分配一塊連續(xù)的

存儲空間,無法很好地利用碎片,雖然可以通過移動技術

來整理內存空間,但代價較高。

?(4)必須一次性將作業(yè)全部調入內存,若內存沒有足夠

的空間,則等待。

頁式管理

?3.4頁式管理

?3.4.1頁式管理的實現原理

統(tǒng)

操-11T

,Z?

框W

等1

是rm,

調M

總e)

efra豺

肥ag

wE二

系IO

地W1H

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論