嵌入式系統(tǒng)設計師考試復習筆記之存儲管理篇
引言
2007年下半年通過了嵌入式系統(tǒng)設計師的考試,一大堆的復習資料都不知道扔那里好,賣掉又有點可惜,送人又沒人要。與其讓當時的復習筆記沉淪書架底部,還不如整理一下讓大家評論評論。2008年11月的考試也快到了,如果能幫到有需要的人,那我真是樂壞了??纯?/SPAN>06和07年的題目,在存儲管理方面的題目蠻多的,應該是一個重要考點。無論是概念、理論、分析和計算都相當容易出題。在我當時的復習筆記中這方面算最多了。這里就先拿這個點說說吧,其他的以后有時間再寫了。
1、存儲器系統(tǒng)的層次架構
計算機系統(tǒng)的存儲器被組織城一個金字塔的層次結構。
自上而下為:CPU內(nèi)部寄存器、芯片內(nèi)部高速緩存(cache)、芯片外部高速緩存(SRAM、SDRAM、DRAM)、主存儲器(FLASH、EEPROM)、外部存儲器(磁盤、光盤、CF卡、SD卡)和遠程二級存儲器(分布式文件系統(tǒng)、WEB服務器),6個層次的結構。
上述設備從上而下,依次速度更慢、容量更大、訪問頻率更小,造價更便宜。
2、高速緩存(cache)
工作原理(參照教程126頁,博客畫不了圖):主要利用了程序的局部性特點。
地址映象是指把主存地址空間映象到cache的地址空間。
地址變換是指當程序或數(shù)據(jù)已經(jīng)裝入到cache后,在實際運行過程中,把主存地址如何編程cache空間的地址。
常用的地址映象和地址變換的方式有:(教程127頁)
直接映象和變換:速度快,造價低,但有局限性,不能充分利用cache的好處。
組相聯(lián)地址映象和變換:速度稍慢但是命中率高。
全相聯(lián)地址映象和變換:可以任意映射。
常用的cache替換算法:輪轉法和隨機替換算法。
高速緩存的分類:
統(tǒng)一cache和獨立的數(shù)據(jù)/指令cache
寫通cache和寫回cache
讀操作分配cache和寫操作分配cache
3、存儲管理單元(MMU)
MMU在CPU和物理內(nèi)存之間進行地址轉換,將地址從邏輯空間映射到物理空間,這個過程稱為內(nèi)存映射。
MMU主要完成下面的工作:
A. 虛擬存儲空間到物理空間的映射。
B. 存儲器訪問權限的控制。
C. 設置虛擬存儲空間的緩沖特性。
嵌入式系統(tǒng)中常常采用頁式存儲管理。為了管理這些頁引入了頁表的概念。
頁表是位于內(nèi)存中的表,它的每一行對應虛擬存儲空間的一個頁,該行包含了該虛擬內(nèi)存頁對應的物理內(nèi)存頁的地址、該頁的訪問權限和該頁的緩沖特性等。
從虛擬地址到物理地址的變換過程就是查詢頁表的過程。
由于頁表存儲在內(nèi)存中的,整個查詢過程需要付出很大的代價。根據(jù)程序局部性的特點,增加了一個小容量、高速度的存儲部件來存放當前訪問需要的地址變換條目,這個存儲部件稱為:地址轉換后備緩沖器(TLB)。
當CPU訪問內(nèi)存時,首先在TLB中查找需要的地址變換條目,如果該條目不存在,CPU再從內(nèi)存中的頁表中查詢,并把相應的結果添加到TLB中,更新它的內(nèi)容。
嵌入式系統(tǒng)中虛擬存儲空間到物理空間的映射以內(nèi)存塊為單位進行。即虛擬存儲空間中一塊連續(xù)的存儲空間被映射到物理存儲空間中同樣大小的一塊連續(xù)存儲空間。
在頁表和TLB中,每一個地址變換條目實際上記錄了一個虛擬存儲空間的內(nèi)存塊的基地址與物理存儲空間相對應的一個內(nèi)存塊的基地址之間的對應關系。
在MMU中實現(xiàn)虛擬地址到物理地址的映射是通過兩級頁表來實現(xiàn)的。
禁止MMU時,所有物理地址和虛擬地址相等,即使用平板存儲模式。
4、內(nèi)存保護
操作系統(tǒng)通常利用MMU來實現(xiàn)操作系統(tǒng)內(nèi)核與應用程序之間的隔離,以及應用程序與應用程序之間的隔離。
內(nèi)存保護包含兩個方面的內(nèi)容:
A. 防止地址越界,每個應用程序都有自己獨立的地址空間。
B. 防止越權操作,每個應用程序都有自己的訪問權限。
5、實模式與保護模式
在嵌入式系統(tǒng)中,常見的存儲管理方案可以分為兩大類:實模式和保護模式。
實模式:內(nèi)存的平面使用模式。特點有:
A. 不劃分“系統(tǒng)空間”與“用戶空間”,無須進行地址映射。
B. 操作系統(tǒng)與應用程序之間不再有物理的邊界。
C. 系統(tǒng)中的“任務”或“進程”,實際上全是內(nèi)核線程。
在實模式下,內(nèi)存布局可以分為5個段:
A. 代碼段:包含操作系統(tǒng)和應用程序的所有代碼。
B. 數(shù)據(jù)段:所有帶有初始值的全局變量。
C. BSS段:所有未帶初始值的全局變量。
D. 堆空間:動態(tài)分配的內(nèi)存空間。
E. ??臻g:保存上下文以及函數(shù)調(diào)用時的局部變量和形參。
在實模式存儲管理方案下,主要的工作在于堆空間的管理,即如何來管理空閑的堆空間、如何來分配內(nèi)存、如何來回收內(nèi)存等等。
保護模式:處理器中必須有MMU硬件并啟用。特點有:
A. 系統(tǒng)內(nèi)核和用戶程序都有各自獨立的地址空間。
B. 每個應用程序只能訪問自己的地址空間,不能去破壞操作系統(tǒng)和其他應用程序的代碼和數(shù)據(jù)。
6、分區(qū)存儲管理
為了實現(xiàn)多道程序系統(tǒng)而采用的內(nèi)存管理。
基本思路:把整個內(nèi)存劃分為兩大區(qū)域,即系統(tǒng)區(qū)和用戶區(qū),然后再把用戶區(qū)劃分為若干個分區(qū),每個任務占有其中的一個分區(qū)。這樣,在內(nèi)存當中就同時保留多個任務,讓他們共享整個用戶區(qū),從而實現(xiàn)多個任務的并發(fā)運行。
分區(qū)存儲管理又可以分為兩類:固定分區(qū)和可變分區(qū)。
固定分區(qū):各個用戶分區(qū)的個數(shù)、位置和大小一旦確定后,就固定不變,不能再修改。
優(yōu)點:易于實現(xiàn),系統(tǒng)開銷較小。
缺點:內(nèi)存利用率不高,分區(qū)總數(shù)固定。
可變分區(qū):動態(tài)創(chuàng)建,在裝入一個程序時,系統(tǒng)將根據(jù)它的需求和內(nèi)存空間的使用情況來決定是否分配。
優(yōu)點:動態(tài)變化,非常靈活。
缺點:可能存在外碎片。
在實現(xiàn)可變存儲管理技術的時候,需要考慮三個方面的問題:
A. 內(nèi)存管理的數(shù)據(jù)結構
B. 內(nèi)存的分配算法
C. 內(nèi)存的回收算法
7、地址映射
地址映射也叫地址重定位。
邏輯地址和物理地址是完全不同的,不能用邏輯地址來直接訪問內(nèi)存單元。
為了保證CPU在執(zhí)行指令的時候,可以正確地訪問內(nèi)存單元,需要將用戶程序中的邏輯地址轉換為運行時由機器直接尋址的物理地址。這個過程稱為:地址映射。
地址映射由存儲管理單元MMU來完成。
地址映射主要有兩種方式:靜態(tài)地址映射和動態(tài)地址映射。
靜態(tài)地址映射:當用戶程序被裝入內(nèi)存時,直接對指令代碼進行修改,一次性地實現(xiàn)邏輯地址到物理地址的轉換。
動態(tài)地址映射:當用戶程序被裝入內(nèi)存時,不對指令代碼做任何修改,而是在程序的運行過程中,當它需要訪問內(nèi)存單元的時候,再來進行地址轉換。
在具體實現(xiàn)時,這項轉換工作一般是由硬件的地址映射機制來完成的。通常設置一個基地址寄存器,或者叫重定位寄存器。當一個任務被調(diào)度運行時,就把它所在分區(qū)的起始地址裝入到整個寄存器中。然后,在程序運行的過程中,當需要訪問某個內(nèi)存單元時,硬件就會自動地將其中的邏輯地址加上基地址寄存器中的內(nèi)容,從而得到實際的物理地址,并且按照這個物理地址區(qū)執(zhí)行。
這個基地址寄存器位于MMU的內(nèi)部,整個地址映射過程是自動運行的。從理論上說,每訪問一次內(nèi)存都要進行一次地址映射。
8、頁式存儲管理(重點)
基本思路:把物理內(nèi)存劃分為許多固定大小的內(nèi)存塊,稱為物理頁面;把邏輯地址空間也劃分為大小相同的塊,稱為邏輯頁面。當一個用戶程序被裝入內(nèi)存時,不是以整個程序為單位,把它存放在一整塊連續(xù)的區(qū)域,而是以頁面為單位來進行分配的。對于一個大小為N的頁面程序,需要有N個空閑的物理頁面來把它裝載。這些物理頁面不一定是要連續(xù)的。
在頁式存儲管理中需要解決三個問題:數(shù)據(jù)結構、內(nèi)存分配與回收、地址映射。
數(shù)據(jù)結構有兩個:頁表和物理頁面表。
A. 頁表:給出了任務邏輯頁面號和內(nèi)存中物理頁面號之間的對應關系。
B. 物理頁面表:描述內(nèi)存空間中,各個物理頁面的使用情況。
具體的例子請參考《教程》317頁(博客中畫不了圖,有興趣自己看)。
內(nèi)存的分配過程:
A. 對于一個新來的任務,計算它所需要的頁面數(shù)N,然后查看位示圖,看是否還有N個空閑的物理頁面。
B. 如果有足夠的空閑物理頁面,就去申請一個頁表,其長度為N,并把頁表的起始地址填入到該任務的控制塊中。
C. 分配N個空閑的物理頁面,把他們的變換填到頁表中,建立邏輯頁面與物理頁面直接的對應關系。
D. 修改位示圖,對剛剛被占用的那些物理頁面進行標記。
地址映射的基本思路:
A. 邏輯地址分析:對邏輯地址,找到它所在的邏輯頁面,以及它在頁面內(nèi)的偏移地址。
B. 頁表查找:根據(jù)邏輯頁面號,從頁表中找出它對應的物理頁面號。
C. 物理地址合成:根據(jù)物理頁面號和頁內(nèi)偏移地址,最終確定物理地址。
邏輯地址分析:
頁面的大小都是2的整數(shù)次冪。對于給定的一個邏輯地址,可以直接把它的高位部分作為邏輯頁面號,把它的低位部分作為頁內(nèi)偏移地址。例如,假設頁面的大小是4KB,即2的12次冪,邏輯地址為32為,那么在一個邏輯地址當中,最低12位為頁內(nèi)偏移地址,而剩下的20位就是邏輯頁面號。
計算方法:
邏輯頁面號=邏輯地址/頁面大小
頁內(nèi)偏移量=邏輯地址%頁面大小
頁表查找:
頁表作為操作系統(tǒng)的一個數(shù)據(jù)結構,通常保存在內(nèi)核的地址空間中。
頁表基地址寄存器用來指向頁表的起始地址;頁表長度寄存器用來指示頁表的大小,即對于當前任務,它總共包含有多少個頁面。
物理地址合成:
假設物理頁面號為f,頁內(nèi)偏移地址為offset,每個頁面大小為2n,那么相應的物理地址為:f×2n +offset。
9、虛擬存儲管理
程序局部性原理:時間局限性和空間局限性。
虛擬頁式存儲管理:在頁式管理的基礎上,增加了請求調(diào)頁和頁面置換的功能。
基本思路:當一個用戶程序需要調(diào)入內(nèi)存去運行時,不是將這個程序的所有頁面都裝入內(nèi)存,而是只裝載部分的頁面,就可以啟動這個程序運行。在運行過程中,如果發(fā)現(xiàn)要執(zhí)行的指令或者訪問的數(shù)據(jù)不在內(nèi)存當中,就向系統(tǒng)發(fā)出缺頁中斷請求,然后系統(tǒng)在處理這個中斷請求時,就會將保存在外存中的相應頁面調(diào)入內(nèi)存,從而使該程序能繼續(xù)運行。
在虛擬頁式存儲管理中,頁表包含:邏輯頁面號、物理頁面號、駐留位、保護位、修改位和訪問位。
常用的頁面置換算法:
A. 最優(yōu)頁面置換算法:理想化算法。
B. 最近最久未使用算法:鏈表法和棧方法。尋找長時間沒有被訪問的頁面。
C. 最不常用算法:每個頁面設置一個訪問計數(shù)器。
D. 先進先出算法:性能比較差。
E. 時鐘頁面置換算法:把頁面組成環(huán)形鏈表,類似時鐘面。
一般來說,當一個任務剛剛啟動的時候,它會不斷去訪問一些新的頁面,然后逐步建立一個比較穩(wěn)定的工作集。工作集是指當前任務正在使用的邏輯頁面的集合。如果分配給一個任務的物理頁面數(shù)太少,不能包含整個的工作集,任務將會造成很多缺頁中斷,需要頻繁地進行頁面置換,這種現(xiàn)象稱為“抖動”。
10、相關的考試真題
(1)2007年6題:
若內(nèi)存地址區(qū)間為4000H~43FFH,每個存貯單元可存儲16位二進制數(shù),該內(nèi)存區(qū)域用4片存儲器芯片構成,則構成該內(nèi)存所用的存儲器芯片的容量是 (6) 。
(6)A. 512×16bit B. 256×8bit C. 256×16bit D. 1024×8bit
<答案>:C
首先計算內(nèi)容空間的大?。?/SPAN>43FFH-4000H=3FFH,其大小為1024×16bit
接著計算存儲芯片的容量:(1024×16bit)/4=256×16bit=512×8bit
根據(jù)選項提供的內(nèi)容,只有256×16bit符合提綱的要求。
(2)2007年23題:
頁式存儲系統(tǒng)的邏輯地址是由頁號和頁內(nèi)地址兩部分組成,地址變換過程如下圖所示。假定頁面的大小為8K,圖中所示的十進制邏輯地址9612經(jīng)過地址變換后,形成的物理地址a應為十進制 (23) 。
(23)A. 42380 B.
<答案>:B
8K=1024×8=8192
邏輯頁面號=9612/8192=1(1號頁號對應的物理地址塊號為3)
頁內(nèi)偏移量=9612%8192=1420
物理地址=3×8192+1420=25996
(3)2007年24題
某總線有104根信號線,其中數(shù)據(jù)總線(DB)32根,若總線工作頻率為33MHz,則其理論最大傳輸率為 (24) 。(注:本題答案中的B表示Byte)
(24)A. 33 MB/s B. 64MB/s C. 132 MB/s D. 164 MB/s
<答案>:C
每個字節(jié)8位,需要8根數(shù)據(jù)線。
數(shù)據(jù)總線有32跟,每次可以并行傳輸32/8=4個字節(jié)。
總線工作頻率為33MHz,那么理論最大傳輸率為33×4=132MHz。
(4)2007年26題
某存儲器數(shù)據(jù)總線寬度為32bit,存取周期為250ns,則該存儲器帶寬為 (26) 。(注:本題答案中的B表示Byte)
(26)A. 8×106B/s B. 16×106B/s C. 16×108B/s D. 32×106B/s
<答案>:B
存取頻率為:1/0.00000025s=4000000
總線寬度為:32bit/8=4byte
存儲器帶寬:4×4000000=16000000=16×106B/s
(5)2007年29~31題
在嵌入式處理器中,CACHE的主要功能由 (29) 實現(xiàn);某32位計算機的CACHE容量為16KB(B:字節(jié)),CACHE塊的大小為16B(B:字節(jié)),若主存與CACHE地址映像采用直接映像方式,則主存地址為0x1234E
(29)A. 硬件 B. 軟件
C. 操作系統(tǒng) D. 應用程序
(30)A. 00010001001101 B. 01000100011010
C. 10100011111000 D. 11010011101000
(31)A. 先入后出算法(FILO) B. 隨機替換算法(RAND)
C. 先入先出算法(FIFO) D. 近期最少使用算法(LRU)
<答案>:A、C、D
29:Cache的主要功能由硬件實現(xiàn),這個《教程》有介紹。
30:cache容量為16KB,即邏輯地址的低14位
由于采用的是直接映象,所以cache的地址為:主存地址的低14位。
31:相比較說,D的命中率最低。
(6)2007年34題
在嵌入式系統(tǒng)的存儲結構中,存取速度最快的是 (34) 。
(34)A. 內(nèi)存 B. 寄存器組 C. Flash D. Cache
<答案>:B
寄存器組>cache>內(nèi)存>flash
(7)2007年41題
操作系統(tǒng)中的“抖動”是指 (41) 的現(xiàn)象。
(41)A. 根據(jù)一定的頁面置換算法,將頁面調(diào)出
B. 由于選擇了長期未被訪問的頁進行置換,導致系統(tǒng)更換頁面
C. 頁面調(diào)入不久就被導出,導出不久又被調(diào)入,導致系統(tǒng)頻繁更換頁面
D. 根據(jù)系統(tǒng)運行情況決定將哪個頁面調(diào)出,而不是由頁面置換算法決定更換哪個頁面
<答案>:C
《教程》中328頁有對“抖動”的介紹。
(8)2006年1題
若內(nèi)存按字節(jié)編址,用存儲容量為32K×8比特的存儲器芯片構成地址編號A0000H到DFFFFH的內(nèi)存空間,則至少需要(1)片。
(1)A. 4 B.
<答案>:C
DFFFF=-A0000H=256KB。
256/32=8片
(9)2006年22題
從下表關于操作系統(tǒng)存儲管理方案1、方案2和方案3的相關描述可以看出,他們分別對應(22)存儲管理方案。
方案1:在系統(tǒng)進行初始化的時候就已經(jīng)將主存儲空間劃分成大小相等或不等的塊,并且這些塊的大小在此后是不可以改變的。系統(tǒng)將程序分配在聯(lián)系的區(qū)域中。
方案2:主儲存空間和程序按固定大小大單位進行分割,程序可以分配在不連續(xù)的區(qū)域中。該方案當一個作業(yè)的程序地址空間大于主存可以使用的空間時也可以執(zhí)行。
方案3:編程時必須劃分程序模塊和確定程序模塊之間的調(diào)用關系,不存在調(diào)用關系的模塊可以占用相同的主存區(qū)。
(22)A. 固定分區(qū)、請求分頁和覆蓋
B. 覆蓋、請求分頁和固定分區(qū)
C. 固定分區(qū)、覆蓋和請求分頁
D. 請求分頁、覆蓋和固定分區(qū)
<答案>:A
《教程》中有相關概念的介紹。
(10)2006年28題
在32位總線系統(tǒng)中,若時鐘頻率為500MHz,傳送一個32位字需要5個時鐘周期,則該總線系統(tǒng)的數(shù)據(jù)傳輸速率為 (28) MB/s。
(28)A. 200 B.
<答案>:B
與2007年的24和26題考查的是相同的內(nèi)容。
在32位總線系統(tǒng)中,每次可以傳送32位字,即4個BYTE。
時鐘頻率為500MHz,則傳輸32位的速率為100MHz。
也就是總線的數(shù)據(jù)傳輸速率為:4×100=400MB/s。
在嵌入式系統(tǒng)的存儲結構中,存取速度最快的是 (34) 。
(11)2006年29題
在CPU和物理內(nèi)存之間進行地址轉換時, (29) 將地址從虛擬(邏輯)地址空間映射到物理地址空間。
(29)A. TCB B. MMU C. CACHE D. DMA
<答案>:B
TCB:任務控制塊
MMU:存儲管理單元
CACHE:高速緩存
DMA:直接存儲
(12)2006年31題
下列存取速度最快的是(31)。
(31)A. flash存儲器 B. DRAM存儲器 C.高速緩存(CACHE) D.磁盤
<答案>:C
高速緩存(CACHE)> DRAM存儲器> flash存儲器、磁盤
(13)2006年51題
頁式存儲器當中的頁面是由(51)所感知的。
(51)A. 用戶 B. 操作系統(tǒng) C. 編譯系統(tǒng) D. 連接程序
<答案>:B
概念理解,看過就應該會做,不看過也能推理出來。
總的來看,07年考查內(nèi)存管理方面的內(nèi)容比06年多,深度也相應的增加了。
這次到此為止,以后有時間再寫,又問題可E我:ohy3686@qq.com。