記憶體管理LRU演算法(實驗8)

2021-10-07 06:30:39 字數 1515 閱讀 5622

程式設計實驗任務

① 編寫乙個程式,用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開發中,經常要訪問網路資料比如大量網路,如果每次需要同一張都去網路獲取,這代價顯然太大了。可以考慮設...