用C語言寫乙個記憶體管理程式

2021-04-12 13:07:52 字數 1181 閱讀 8818

【用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...