內存管理
習題
一.選擇題
1、設備分配問題中,算法實現時,同樣要考慮安全性問題,防⽌在多個進程進⾏設備請求時,因相互等待對⽅釋放所占設備所造成的(D)現象。
A.瓶頸 B.碎⽚ C.系統抖動 D.死鎖
2、主存與輔存間頻繁的頁⾯置換現象被稱為(C)。
A.請求調頁 B.碎⽚整理 C.系統抖動 D.輸⼊輸出
3、在可變分區存儲管理中,最差適應分配算法要求對空閑區表項按( C)進⾏排列
A.地址從⼤到⼩ B.地址從⼩到⼤ C.尺⼨從⼤到⼩ D.尺⼨從⼩到⼤
若為最優適應分配算法則D
最優適應分配算法可把空閑區按長度以遞增順序登記在空閑區表中。分配時順序查找空閑區表,由於查找時每次總是從分區中的最小的一個區開始,所以,找到的第一個能滿足作業要求的分區,一定是所有能滿足作業要求的分區中的最小的一個分區。
4、段頁式存儲管理汲取了頁式管理和段式管理的長處,其實現原理結合了頁式和段式管理的基本思想,即( B )。
A、⽤分段⽅法來分配和管理物理存儲空間,⽤分頁⽅法來管理⽤戶地址空間。
B、⽤分段⽅法來分配和管理⽤戶地址空間,⽤分頁⽅法來管理物理存儲空間。
C、⽤分段⽅法來分配和管理主存空間,⽤分頁⽅法來管理輔存空間。
D、⽤分段⽅法來分配和管理輔存空間,⽤分頁⽅法來管理主存空間。
段頁式存儲管理兼有頁式管理和段式管理的優點,采用分段方法來分配和管理用戶地址空間,用分頁方法來管理物理存儲空間。
5、下列措施中,能加快虛實地址轉換的是:
I. 增⼤快表(TLB) II. 讓頁表常駐內存 III. 增加交換區
A. 僅 I B. 僅 II C. 僅I,II D. 僅II,III
C
增大TLB,是為了避免去內存中匹配頁表。TLB本身就在***里,而且能並行計算。把頁表都放在內存里,也是可以的,但一般頁表很大,可以經過多級頁表和反置頁表處理后再放在內存里。交換區是內存不夠用時的解決手段,增大交換區能騰出更多地方。
6、在頁式存儲管理系統中,采⽤某些頁⾯置換算法,會出現Belady異常現象,即進程的缺頁次數會隨着分配給該進程的頁框個數的增加⽽增加。下列算法中,可能出現Belady異常現象的是:
I. LRU 算法 II. FIFO 算法 III. OPT 算 法
A. 僅II B.僅 I,II C. 僅I,III D. 僅II,III
A
7、下列選項中,屬於多級頁表優點的是:D
A.加快地址變換速度 B.減少缺頁中斷次數
C. 減少⼀個頁表項所占字節數 D.減少頁表所占的內存空間
8、下列關於虛擬存儲器的敘述中,正確的是 B
A. 虛擬存儲器只能基於連續分配技術 B. 虛擬存儲器只能基於⾮連續分配技術
C. 虛擬存儲器只受外存容量的限制 D. 虛擬存儲器只受內存容量的限制
虛擬存儲器(Virtual Memory)是為了給用戶提供更大的隨機存取空間而采用的一種存儲技術。它將內存與外存(輔存)結合使用,好像有一個容量極大的內存儲器,工作速度接近於主存,每位的成本又與輔存相近,在整機形成多層次存儲系統。虛擬存儲區的容量與物理主存大小無關,而受限於計算機的地址結構和可用磁盤容量。 虛擬存儲器是由硬件和操作系統自動實現存儲信息調度和管理的,其工作過程包括6個步驟: ①中央處理器將訪問主存的邏輯地址分解成組號a和組內地址b,並對組號a進行地址變換,即以a為索引查地址變換表,以確定該組信息是否在主存中。 ②若該組號已在主存,則轉而執行④;否則檢查主存中是否有空閑區,便將某個暫時不用的組調出送往輔存,以便將需要的這組信息調入主存。 ②從輔存讀出所要的組,並送到主存空閑區,並登記在地址變換表中。 ③從地址變換表讀出與邏輯組號a對應的物理組號a。 ⑤從物理組號a和組內字節地址b得到物理地址。 ⑥根據物理地址從主存中存取需要的信息。
9、在⼀個請求分頁系統中,采⽤ LRU 頁⾯轉換算法時,加⼊⼀個作業的頁⾯⾛向為:
1,3,2,1,1,3,5,1,3,2,1,5.當分配給該作業的物理塊數分別為 3 和 4 時,在訪問過程中所發⽣的缺頁率為 C
A. 25%,33% B. 50%,25% C.50%,33% D. 50%,75%
M=3
1 3 2
請求5 缺頁 1 3 5
請求2 缺頁 1 3 2
請求5 缺頁 1 5 2
6/12 = 25%
M=4
1 3 2 5
4 / 12 = 33%
9-2
在一個請求分頁系統中,假如一個作業的頁面走向為4、3、2、1、4、3、5、4、3、2、1、5,當分配給該作業的物理塊數M分別是3和4時,分別采用LRU和FIFO面替換算法,計算訪問過程中所發生的缺頁次數和缺頁率,比較所得結果。
當M=3時,采用LRU替換算法
缺頁次數為10次,缺頁率為:(10/12)×00%=83%。
當M=3時,采用FIFO替換算法
缺頁次數為9次,缺頁率為:(9/12)×100%=75%。
(2) 當M=4時,采用LRU替換算法
缺頁次數為8次,缺頁率為:(8/12)×100%=67%。
當M=4時,采用FIFO替換算法,
缺頁次數為10次,缺頁率為:(10/12)×100%=83%。
通過以上缺頁次數和缺頁率的分析計算,可以看出,對於LRU算法,增加物理塊數,可以減少缺頁次數,降低缺頁率;而對FIFO算法,增加物理塊數,不一定能減少缺頁次數。
9-3
在一個請求分頁系統中,假如一個作業的也面走向為:4,3,2,1,5,4,3,2,4,5,當分配給該作業的物理塊數為4時,試分別計算采用最佳(optimal)置換算法和最近最久未使用(lru)置換算法時,訪問過程中所發生的缺頁次數
最佳置換,置換掉最長時間內不會在用的頁;最近最久未使用,置換掉當前最久沒有被使用的頁
1:最佳置換
序列:4 3 2 1 5 4 3 2 4 5
內存頁有4 3 2 1
請求5時,缺頁,置換掉1,因為1不會再被使用了;內存頁有4 3 2 5
請求4 3 2 4 5時,都不缺頁;
缺頁次數為1
2:最近最久未使用
序列:4 3 2 1 5 4 3 2 4 5
內存頁有4 3 2 1
請求5時,缺頁,置換掉4,因為4最早進內存,最久未被使用;內存頁有5 3 2 1
請求4時,缺頁,置換掉3,理由同上;內存頁有5 4 2 1
請求3時,缺頁,置換掉2,理由同上,內存頁有5 4 3 1
請求2時,置換1,內存頁有5 4 3 2;
請求4,5時不缺頁;
缺頁次數為4
這題和前面的題缺頁次數基准好像不同,不過大多數題目都是跟9-2一樣
一個請求分頁系統中,假設系統分配給 某進程的物理塊數為 3 ,開始時內存為空,執行如下訪問頁號序列:
1 , 2 , 3 , 4 , 1 , 2 , 5 , 1 , 2 , 3 , 4 , 5
試說明采用先進先出 (FIFO) 、最近最少使用( LRU )和最佳置換算法 (OPT) 進行頁面置換時,缺頁次數各是多少?
( 1 ) FIFO: 9 次
( 2 ) LRU : 10 次
( 3 ) OPT : 7 次
10、 設有 8 頁的邏輯空間,每頁有 1024B,它們被映射到 32 塊的物理存儲區中。那么, 邏輯地址的有效位是 位,物理地址⾄少是 位。(C)
A. 10、11 B. 12、14 C. 13、15 D. 14、16
8 = 2^3 32 = 2^5
邏輯 10+3=13
物理 10+5=15
11、 某基於動態分區存儲管理的計算機,其主存容量為 55M B(初始為空閑),采⽤最佳適配(Best Fit)算法,分配和釋放的順序為:分配 15M B,分配 30M B,釋放 15M B,分配 8M B, 分配 6M B,此時主存中最⼤空閑分區的⼤⼩是 B 。
若為WF 選 A
A.7MB B.9MB C.10MB D.15MB
- 某作業的邏輯地址空間為4頁,頁⾯⼤⼩為2048,已知頁表如下所⽰,則邏輯地址
4865(⼗進制)對應的物理地址為(C)。
頁號 0 1 2 3
塊號 2 4 6 8
A、4865 B、8961 C、13057 D、6865
4865 = 1301H = 0001001100000001
2對應6
11001100000001 = 13057
ok
13、若⽤戶進程訪問內存時產⽣缺頁,則下列選項中,操作系統可能執⾏的操作是 B
I.處理越界錯 II.置換頁 III.分配內存
A.僅I、II B.僅II、III C. 僅I、III D. I、II和III
用戶進程訪問內存時缺頁會發生缺頁中斷。發生缺頁中斷,系統會執行的操作可能是置換頁面或分配內存。系統內沒有越界的錯誤,不會進行越界出錯處理。
14、 可以被多個進程在任意時刻共享的代碼必須是 C。
A. 順序代碼 B. 機器語⾔代碼 C.不能⾃⾝修改的代碼 D. ⽆轉移指令代碼
15、 假設變址寄存器 R 的內容為 1000H,指令中的形式地址為 2000 H;地址 1000H 中的內容為 2000H,地址 2000H 中的內容為 3000H,地址 3000 H 中的內容為 4000H,則變址尋址⽅式下訪問到的操作數是: D
A. 1000H B. 2000H C. 3000H D. 4000 H
16、 有⼀個整數矩陣為 100 ⾏*200 列,即 a[100][200]。在⼀個虛擬系統中,采⽤ LRU 算法,系統分給該進程 5 個頁⾯來存儲數據(不包含程序),設每頁可存放 200 個整數,該程序要對整個數組初始化,數組存儲時是按⾏存放的。試計算下列兩個程序各⾃的缺頁次數(假定所有頁都以請求⽅式調⼊)。 B
A. 100,200 B. 100,20000 C. 200,100 D. 20000,100
程 序 一 :
for(i=0;i<99;i++)
for(j=0;j<=199;j++)
a[i][j]=i*j;
程 序 二 :
for(j=0;j<=199;j++)
for(i=0;i<99;i++)
a[i][j]=i*j;
17、 考慮頁⾯置換算法,系統有 m 個物理塊供調度,初始時全空,頁⾯引⽤串長度為p,包含了 n 個不同的頁號,⽆論⽤什么算法,缺頁次數不會少於(C)
A、m B 、 p C 、 n D 、 min(m,n)
無論采用什么置換算法,每種頁面第一次訪問時不可能在內存中.必然發生缺頁.
18、 總體上說,“按需調頁”(Demand-Paging)是個很好的虛擬內存管理策略。但是, 有些程序設計技術並不適合於這適種環境。例如(D)
A、堆棧 B、線性搜索 C、⽮量運算 D、⼆分法搜索
因為二分法搜索地址是不連續的、跳躍的,不在同一頁面,需要不斷地調頁。
- 把進程地址空間中使⽤的邏輯地址變成內存中物理地址的過程稱為:A
A、重定位 B、物理化 C、邏輯化 D、加載
由程序中邏輯地址組成的地址范圍叫做邏輯地址空間,或簡稱為地址空間。而由內存中的一系列存儲單元所限定的地址范圍稱為內存空間,也稱為物理空間或者絕對空間。
程序和數據裝入內存時需對目標程序中的地址進行修改。這種把邏輯地址轉變為內存的物理地址的過程叫重定位。
對程序進行重定位的技術按重定位的時機可分為兩種:靜態重定位和動態重定位。
二.計算題
某操作系統中,進程的邏輯地址空間和系統的物理地址空間均為 64KB,按字節編址。某進程最多需要 8 頁(Page)數據存儲空間,頁的⼤⼩為 2KB,操作系統采⽤固定分配局部置換策略為此進程分配 6 個頁框(Page Frame),采⽤⽼化算法(aging)進⾏頁⾯置換,每個頁⾯使⽤ 8bits 記錄使⽤情況。在每個 clock tick 結束時,6 個頁⾯的 R 位如下所⽰:
頁⾯ 0 頁⾯ 1 頁⾯ 2 頁⾯ 3 頁⾯ 4 頁⾯ 5
clock tick 0 0 1 0 1 0 1
clock tick 1 1 1 1 0 0 0
clock tick 2 0 0 1 1 1 0
clock tick 3 1 0 0 1 0 0
此時的頁表如下所⽰:
頁號 頁框號 是否在內存中(P 位) 是否在 TLB(快表)中
00H 08H 1 是
01H 07H 1 是
02H 04H 1 是
03H 1EH 1 是
04H 15H 1 是
05H 0FH 1 是
06H --- 0 否
07H --- 0 否
頁表存放在主存中,對主存的⼀次存取需要100
ns,對TLB表的查找時間為10ns,處理
⼀次缺頁中斷需要108
ns(10的8次⽅ns,含更新TLB和慢表的時間)。
-
如果現在程序執⾏時遇到邏輯地址1AC5H,這次訪問耗費時間為 C 。
A. 108+220ns B. 100ns C. 110ns D. 210ns -
然后,程序執⾏時遇到邏輯地址32C5H,這次訪問耗費時間為 。
A. 108+220ns B. 100ns C. 110ns D. 210ns -
32C5H對應的物理地址為 D 。
A.7AC5H B. 22C5H C. 3AC5H D. F2C5H
物理 16
邏輯 16
頁內偏移 11
1AC5H = 11 ... 在快表中
32C5H 缺頁
置換頁面5 因為1的訪問計數器0011值最小
物理地址為
0111 1010 1100 0101 = 7AC5
某計算機主存按字節編址,邏輯地址和物理地址都是 32 位,頁⾯⼤⼩為 4KB,頁表項⼤⼩為 4 字節。請回答下列問題。
- 若使⽤⼀級頁表的分頁存儲管理⽅式,邏輯地址結構為:
|頁號(20位) | 頁內偏移量(12 位)|
此時頁表最⼤占⽤空間為 C。
A. 4KB B. 1MB C. 4MB D. 32MB
- 若使⽤⼆級頁表的分頁存儲管理⽅式,邏輯地址結構為:
|頁⽬錄號(10 位)| 頁表索引(10 位)| 頁內偏移量(12 位)
若該進程共⽤到了10000個頁,則此時此⼆級頁表占⽤的總空間最⼩為 C 。
A. 4KB B. 11KB C. 44KB D. 11MB
4KB/4B = 1024
需要11個頁表
11 * 4KB
某操作系統的內存管理器采⽤請求式分頁,頁⾯⼤⼩為 1KB,邏輯地址空間為 32 位, 物理地址空間⼤⼩為 4 GB,按字節編址。頁表采⽤多級頁表,⼀個頁表項⼤⼩為 4B。TLB(快表)采⽤全相聯映射,有 4 個頁表項,內容如下表所⽰。
有效位 頁號 頁框號 …
0 FF180H ------ …
1 3FFF1H 0F035H …
1 FFFC6H 3054CH …
1 03FFFH 0C153H …
34、該系統的頁表項中,最多可以保存 B位標志位。
A.8 B.10 C.12 D.16
35、若采⽤多級頁表,要求每級頁表均可以裝⼊⼀個頁⾯內,則應該采⽤ D 級頁表較合適。
A.0 B.1 C.2 D.3
36、對邏輯地址3FFF1880H轉換為物理地址的結果是 A 。
A. 0C153080H B. 0F035880H C. TLB 缺失 D.缺頁
此題目 難在 頁面大小為1K
大同小異
某請求頁式存儲管理,允許⽤戶空間為 32 個頁⾯(每頁 2KB),主存為 16KB,如有⼀個⽤戶程序有 10 頁長,且某時刻該⽤戶進程的頁表如下表所⽰
頁號 物理塊號 是否在 TLB 中
0 8 是
1 7 是
2 4 否
3 9 否
4 5 否
5 3 是
6 2 是
其它 not valid
邏輯地址 5+11=16
頁內偏移11位
物理 14位
37、 如果程序執⾏時遇到邏輯地址1AC5H,則它對應的物理地址為 B 。
A. 7AC5H B. 4AC5H C. 3AC5H D. 缺 頁
38、 頁表存放在主存中,對主存的⼀次存取需要100ns,對TLB表的查找時間為10ns, 這次訪問耗費時間為 D。
A. 10ns B. 100ns C. 110ns D. 210ns
10+100+100=210
39、 如果不考慮缺頁的情況,對於已經載⼊內存的頁⾯,快表命中率為80%,則訪問內存中數據的平均有效訪問時間是 B。
A.20ns B.30ns C.70ns D.90ns
100.8 + (10+100)0.2=8+22=30ns
某操作系統的內存管理器采⽤請求式分頁,頁⾯⼤⼩為 4KB,邏輯地址空間為 32 位, 物理地址空間為 36 位,⼀個頁表項⼤⼩為 4B。⼀次快表(TLB)的訪問時間是 10ns,⼀次內存的訪問時間是 100ns,處理⼀次缺頁的平均時間 10^8 ns(已含更新 TLB 和頁表的時間)。進程的駐留集⼤⼩固定為 2,采⽤最近未使⽤置換算法(NRU)和局部淘汰策略。假設(1) TLB 初始為空;(2)地址轉換時先訪問 TLB,若 TLB 未命中,再訪問頁表(忽略訪問頁表之后的 TLB 更新時間);(3)有效位為 0 表⽰頁⾯不在內存,產⽣缺頁中斷,缺頁中斷處理后,返回到產⽣缺頁中斷的指令處重新執⾏。進程的部分頁表如下所⽰:
頁號 頁框(Page Frame)號 P存在位 R訪問位 M修改位
00000H ------ 0 - -
00001H 007F61H 1 0 0
00002H 101254H 1 0 0
00003H ------ 0 - -
40、 該系統的頁表項中,最多可以保存 V位標志位。
A.4 B.8 C.12 D.16
頁表項32位, (36-12)算出頁框號
所以32 - (36- 12) = 8
41、若采⽤多級頁表,要求每級頁表均可以裝⼊⼀個頁⾯內,則應該采⽤ C級頁表較合適。
A.0 B.1 C.2 D.3
ok
42、 如果不考慮缺頁的情況,對於已經載⼊內存的頁⾯,快表命中率為90%,則訪問內存中數據的平均有效訪問時間是 A。
A.20ns B.110ns C.120ns D.320ns
100.9+1100.1=20ns
43、 ⾸先,訪問邏輯地址00001618H,則讀⼊所需數據需要的總時間是 D。
A.約 10^8ns B.110ns C.200ns D.210ns
內存是P位
10 + 100 +100
44、 然后,訪問邏輯地址00000FA6H,則讀⼊所需數據需要的總時間是 A 。
A.約 10^8ns B.110ns C.200ns D.210ns
缺頁中斷了.
45、 最后,訪問邏輯地址0000126CH,則讀⼊所需數據需要的總時間是 B 。
A.約 10^8ns B.110ns C.200ns D.210ns
頁表1 在快表中了
46、 在依次訪問完上述三個邏輯地址后,頁框101254H對應的頁號為 A。
A.00000H B.00001H C.00002H D.00003H
(這題我也沒太理解)是不是訪問00000FA6H時候缺頁中斷 置換了頁表2
答案:(1) 4KB (2) 4MB (3) (LA>>22)&0x000003FF (4) (LA>>12)&0x000003FF (5) 4×4K
(6) 00200020H (7) 00200040H (8) 00900H (9) 00901H (10)00901000H
解答:
2362H: 頁號是2 先訪問快表 再內存 再讀內存
10 +100 +100 =210ns
物理地址:254362H
1565H: 頁號1 快表,內存,缺頁處理,快表,讀內存
10+100+10^8+10+100 ns
置換頁面0 物理地址為 101565H
25A5: 快表,內存
10+100 =110ns
物理地址 2545A5H
解答:
頁號是 5
LRU 淘汰掉未使用時間最長的一個 所以是 0
17CAH
101 1111001010
111 1111001010
物理地址為1FCAH
三、簡答題
1、 在虛擬存儲管理中,分段式內存管理⽅式解決了分頁式內存管理中的什么問題,又帶來了什么問題呢?
解決了分頁式機械化的分頁(功能可能不同)導致顛簸現象?
分段式由內在邏輯來分, 不過段大 類似於動態分區會產生外碎片 導致內存利用率低
2、 在頁⾯淘汰算法中,為什么說⽼化(Aging)算法只是 LRU 的⼀個近似實現?
(1老化算法 無法區分用了多少次
(2)老化算法的計數器只能有有限位數,限制了對以往頁面的記錄
老化算法只有有限位的存儲,記錄最近若干次頁面使用情況,更早的使用情況會丟失。另外,老化算法沒有記錄在一個時間周期內頁面的使用頻度和時間等,所以與 LRU 相比只是一個近似實現。
3、 LRU頁⾯置換算法是⼀種⽐較優秀的算法但是較難實現,為什么?試給出⼀種可⾏的近似算法作為LRU的取代⽅案。
每次訪問內存都必須更新整個鏈表,在鏈表中找到一個頁面,刪除它.然后再把它移動到表頭
老化算法:在R位被加進去之前先將計數器右移一位,
其次,將R位加到計數器的最左端的位而不是最右端的位置
4、 單純的分段式和分頁式內存管理各有什么缺點?為什么段頁式可以避免這些缺點? 為什么段頁式內存管理沒有被⼴泛采⽤呢?
分段式,段太大,倒是產生外碎片, 內存利用率低
分頁式機械化的分頁(功能可能不同)導致 顛簸現象
段頁式存儲管理兼有頁式管理和段式管理的優點,采用分段方法來分配和管理用戶地址空間,用分頁方法來管理物理存儲空間。
段頁式實現起來太麻煩了.
分段管理邏輯地址, 分頁管理物理地址
5、 為什么內存管理⽅式中,可變分區管理中有最差適應(worst fit)分配算法,⽽固定分區管理中沒有這個算法?分區管理中的交換技術(swap)和段式管理中的請求式分段技術有什么區別?請求式分段與覆蓋技術(overlay)又有什么區別?
瞎編的
WF是按找照尺寸從大到小求對空閑區表項排序
固定分區:系統將內存划分為若干固定的分區,當作業申請內存時,系統為其選擇一個適當的分區,並裝入內存運行。由於分區大小是事先固定的,因而可容納作業的大小受到限制,而且當用戶作業的地址空間小於分區的存儲空間時,浪費了一些存儲空間。可變分區:是指在作業裝入內存時建立分區,使分區的大小正好與作業要求的存儲空間相等。引入可變分區方法,使內存分配有較大的靈活性,也提高了內存利用率。但是可變分區會引起碎片的產生。Belady現象是指:采用FIFO算法時,如果對—個進程未分配它所要求的全部頁面,有時就會出現分配的頁面數增多但缺頁率反而提高的異常現象。
分區管理中的交換技術(swap)和段式管理中的請求式分段技術有什么區別?
不知道呢
6、 頁⾯置換(淘汰)的時機是什么?哪種算法最理想同時也不可能實現?為什么說LRU算法很有效但是很難實現?什么是Belady異常?哪種算法存在Belady異常現象?
內存中找不到頁表
OPT
很難知道;每次訪問內存都必須更新整個鏈表,在鏈表中找到一個頁面,刪除它.然后再把它移動到表頭
采用FIFO算法時,如果對一個進程未分配它所要求的全部頁面,有時就會出現分配的頁面數增多但缺頁率反而提高的異常現象
FIFO存在Belady異常現象
7、 請討論⼀下頁⾯置換算法中⼯作集(Working Set)置換算法的⼯作原理。
一個進程當前正在使用的頁面的集合稱為它的工作集。
頁面置換算法詳解(10種)
基於工作集的頁面置換算法就是找出一個不在工作集中的頁面並淘汰它,每個表項至少包含兩條信息:上次使用該頁面的近似時間和R(訪問位)。
8、 在內存管理的⽅法中,分段式管理⽐分頁式管理有什么優勢?段頁式與其他⽅式相
⽐有什么好處?
分段式不會出現抖動的情況,
段頁式:先分段再分頁
既有了分段的好處又有了分頁的好處,(不會出現外碎片吧?)
9、 為了同時搶占⾼端和中低端市場,CPU ⼚商常常在同⼀⽣產線上⽣產主頻和制作⼯藝相同的⾼端和低端CPU,如Intel 曾經同時⽣產相同主頻和制作⼯藝的“奔騰 4”和“賽揚”,價格上相差很⼤,據稱主要區別在⼆級緩存的⼤⼩。請問緩存(Cache)有 什么⽤,什么地⽅會⽤到它?
cache是存在於主存與CPU之間的一級存儲器, 由靜態存儲芯片(SRAM)組成,容量比較小但速度比主存高得多, 接近於CPU的速度。
作用:緩和中央處理器(CPU)和主存儲器(內存)之間速度不匹配的矛盾。
原理:當中央處理器存取主存儲器某一單元時,計算機硬件就自動地將包括該單元在內的那一組單元內容調入高速緩沖存儲器,中央處理器即將存取的主存儲器單元很可能就在剛剛調入到高速緩沖存儲器的那一組單元內。
效果:中央處理器絕大多數存取主存儲器的操作能為存取高速緩沖存儲器所代替,計算機系統處理速度就能顯著提高。
10、 為什么要使⽤倒排頁表?倒排頁表⾯臨的最⼤的問題是什么?如何解決?
最差情況下需要搜索整個倒排索引表才能找到映射關系
倒排頁表節省大量的空間.(物理地址)
從虛擬地址到物理地址的轉換變得很困難
解決:使用TLB,用TLB記錄所有頻繁使用的頁,
建立一張散列表,用虛擬地址來散列.
程序局部性原理,是指程序在執行時呈現出局部性規律,即在一段時間內,整個程序的執行僅限於程序中的某一部分。相應地,執行所訪問的存儲空間也局限於某個內存區域。
局部性原理又表現為:時間局部性和空間局部性。
時間局部性是指如果程序中的某條指令一旦執行,則不久之后該指令可能再次被執行;如果某數據被訪問,則不久之后該數據可能再次被訪問。
空間局部性是指一旦程序訪問了某個存儲單元,則不久之后。其附近的存儲單元也將被訪問。
另外,根據程序的局部性理論,Denning提出了工作集理論。所謂工作集是指進程運行時被頻繁訪問的頁面集合。顯然我們知道只要使程序的工作集全部集中在內存中,就可以大大減少進程的缺頁次數;否則會使進程在運行過程中頻繁出現缺頁中斷,從而出現頻繁的頁面調入/調出現象,造成系統性能的下降,甚至出現“抖動”。
划分工作集可以按定長時間或定長頁面兩種方法進行划分。當顛簸現象發生時,說明系統的負荷過大,通常采用處理器均衡調度。另一種是控制缺頁率,當缺頁率達到上限時,則增加內存分配量;當缺頁率達到下限時,就減少內存的分配量。
工作集就是最近k次內存訪問過所使用過的頁面的集合
相關知識
強烈推薦閱讀此文請求分頁存儲管理方式