【用c語言寫乙個記憶體管理程式】
這個程式有2個系統呼叫和3種記憶體分配策略。並計算效能(平均記憶體利用率,尋找孔(hole)次數)
系統呼叫(system calls)
(1)void *mm_request(int n)
這個系統呼叫是請求乙個連續的n位元組的記憶體塊(block).如果請求成功,返回乙個指標到分配的塊的
第乙個位元組。如果記憶體沒有足夠的孔(hole)或引數n錯誤,返回null.
(2)void mm_release(void *p)
這個系統呼叫可以釋放已經分配的指標p指到的記憶體。如果釋放的記憶體塊相鄰有空的記憶體(hole),就
要把他們合併。
記憶體分配策略
記憶體管理提供三種選擇(1)首次適配(first fit),(2)最佳適配(best fit),(3)最差適配(worst
fit). 使用不同記憶體分配策略要顯示相應的效能(a.計算平均記憶體利用率,b.計算每次執行mm_request,尋找孔(hole)的次數)
【提示】
『提示1』
我們可以模擬一段記憶體來管理。宣告乙個陣列mm[mem_size]來表示物理記憶體。(此題並不是用真正得記憶體,用陣列代表會簡單很多)
兩種方式都可以獲得乙個mem_size連續位元組的序列,就是我們要模擬管理的記憶體。
『提示2』
假設「釋放」和「請求」放在兩個在不同的佇列裡。「釋放」總是立刻執行,「請求」要等到有
足夠大小的記憶體孔(hole)才分配。「請求」是先進先出(fifo)的
『提示3』
程式從乙個空的記憶體開始分配,直到沒有足夠的空間,這個時候「請求」就開始等待。如果有「釋
放」執行,「請求」就去檢查這時有沒有足夠的空間。
『提示4』
假設「請求」永遠不為空。
『提示5』
假設「釋放」的時候,有幾個塊(block),就隨機釋放乙個。
『提示6』
程式框架:
for (i=0; iwhile (請求成功);
記錄記憶體利用率(記憶體利用率=已經分配的空間/總記憶體空間);
隨機選擇乙個block 去釋放;
mm_release(p)
}注意:最後要算出平均的記憶體利用率。
『提示7』
產生「請求」位元組大小
int uniform(int max)
n = uniform(max);
用c c 寫乙個堆疊管理程式
這是乙個面試題,那個狗日的面試官讓我當場寫出來,我要是能寫出來也得累出血了。感謝原文作者的貢獻,文中還有小錯誤,會盡快改正。標頭檔案 ifndef ksmfmemory define ksmfmemory ifndef kcahr define kchar char else define kcha...
C語言寫的同學錄管理程式
名 稱 同學錄 作 者 freewind 版 本 v1.0 時 間 2006 08 email freewind22 163.com include include include include define cls system cls define len sizeof student def...
pyqt乙個簡單的計畫管理程式
功能 1.儲存計畫,2.讀取計畫 編碼的問題搞了我好久,之前讀取都是亂碼的。效果示例圖 如下 coding utf 8 import sys from pyqt4 import qtcore,qtgui,uic import locale qtcreatorfile plan.ui enter fi...