程式設計實驗任務
① 編寫乙個程式,用rand()生成乙個隨機的頁訪問序列,該序列長度為320;採用lru的頁面置換策略,計算當頁數為32,幀數為4~32時的頁面訪問命中率。(命中率=1-頁面失效次數/頁面訪問序列長度。)
注:在計算過程中,需要構造乙個頁面陣列,乙個頁面訪問序列,乙個空閒幀佇列。
**如下
#include
#include
#include
#include
struct pl_type
;struct pfc_struct
;int s[
320]
;struct pl_type pl[32]
;struct pfc_struct pfc[32]
;struct pfc_struct * freepf_head;
void
initial
(int pf)
;void
lru(
int pf)
;int
main()
for(total_pf=
4;total_pf<=
32;total_pf++
)return0;
}void
initial
(int pf)
for(i=
0;i1;i++
) pfc[pf-1]
.pfn=pf-1;
pfc[pf-1]
.next=
null
; freepf_head=
&pfc[0]
;}void
lru(
int pf)
} freepf_head=
&pfc[pl[minj]
.pfn]
;
pl[minj]
.pfn=-1
; pl[minj]
.time=-1
; freepf_head-
>next=
null;}
pl[s[i]
].pfn=freepf_head-
>pfn;
/*為待調入頁面分配一幀,並記錄下訪問時間*/
pl[s[i]
].time=present_time;
freepf_head=freepf_head-
>next;
}else
pl[s[i]
].time=present_time;
/*若被訪頁面在記憶體中則更新訪問時間*/
present_time++
;/*每處理頁面訪問序列中的一項,計時器加1*/
}printf
("%d frames %f\n"
,pf,1-
(float
)diseffect/
320)
;}
Memcached記憶體管理模型與LRU演算法優化
memcached 採用的是 slab allocation 記憶體模型,如下圖 說明 1 最大記憶體預設64兆,通過 m調整,記憶體空間有slab class構成,記憶體以slab page為單位申請,分配到對應的slab class 2 slab page 最大1兆,由乙個或多個chunk組成 ...
記憶體管理實驗筆記
內部sram記憶體池 32位元組對齊 說明一次取出32位元組 效率高 align 32 u8 mem1base mem1 max size align 32 u8 mem2base mem2 max size attribute at 0x68000000 雖然起到管理記憶體的作用 但是同時也帶來了...
android 快取管理及LRU演算法
1 為什麼要用快取 快取是訪問資料的臨時地,因為取原始資料代價太大了,加了快取,可以取得快些。快取可以認為是原始資料的子集,它是從原始資料裡複製出來的,並且為了能被取回,被加上了標誌。在android開發中,經常要訪問網路資料比如大量網路,如果每次需要同一張都去網路獲取,這代價顯然太大了。可以考慮設...