動態分割槽儲存管理

2021-09-22 20:04:24 字數 2229 閱讀 6976

實驗目的:熟悉並掌握動態分割槽分配的各種演算法。

熟悉並掌握動態分割槽中分割槽**的各種情況,並能夠實現分割槽合併。

實驗內容:用高階語言模擬實現動態分割槽儲存管理,要求:

分割槽分配演算法至少實現首次適應演算法、最佳適應演算法和最壞適應演算法中的至少一種。熟悉並掌握各種演算法的空閒區組織方式。

分割槽的初始化——可以由使用者輸入初始分割槽的大小。(初始化後只有乙個空閒分割槽,起始位址為0,大小是使用者輸入的大小)

分割槽的動態分配過程:由使用者輸入作業號和作業的大小,實現分割槽過程。

分割槽的**:使用者輸入作業號,實現分割槽**,同時,分割槽的合併要體現出來。(注意:不存在的作業號要給出錯誤提示!)

要求考慮:(1)記憶體空間不足的情況,要有相應的顯示;

(2)作業不能同名,但是刪除後可以再用這個名字;

(3)作業空間**是輸入作業名,**相應的空間,如果這個作業名不存在,也要有相應的提示。

#include#include#define size 1024

#define minsize 5

typedef struct partition

*part;

part first,head;

int a[1000000]= ;

void show();

int ff(int id,int size);

void showpart();

int bf(int id,int size);

int freepart(int id);

int main()

void show()

else

a[id] =1;

temp = ff(id, size);

if(temp == 1)

else

}else if(flag1 == 2)

else

a[id] =1;

temp = bf(id, size);

if(temp == 1)

else

}else

break;

printf("\n輸入0即可退出!\n");}}

else if(flag == 2)

else

a[id] =0;

temp = freepart(id);

if(temp == 1)

else

printf("記憶體分割槽**失敗!\n");

}else

}}int ff(int id,int size)

else

p->next = q;

// 修改分配的空間資料

p->size = size;

p->state = 1;

p->id = id;

}return 1;

}p = p->next;

}return 0;

}void showpart()

else

printf("\n");

p = p->next;

}printf("****************************************=\n");

}int freepart(int id)

free(q);

}else if((p->pre == head || p->pre->state == 1)&&(p->next != null &&p->next->state ==0))//合併下分割槽

free(q);

}else if((p->pre != head && p->pre->state == 0)&&(p->next == null || p->next->state ==1))

free(q);

}else

}p =p->next;

}if(flag == 1)

return 1;

else

return 0;

}int bf(int id,int size)

p = p->next;

}while(min != null)

else

min->next = q;

// 修改分配的空間資料

min->size = size;

min->state = 1;

min->id = id;

}return 1;

}min = min->next;

}return 0;

}

動態分割槽儲存管理

實現了三個演算法,首次適應,最佳和最壞,其實很簡單,但是測得樣例還是不多,有錯誤請指出!大體思路,就是將記憶體看成乙個個的結構體,每個結構體存放一段空間的起始位置和結束位置以及儲存的作業id。初始情況時,記憶體為空,所以只有乙個結構體,存放從1 n,id為 1,這樣當新的作業到來或者 時,只需要將合...

分割槽儲存管理

內零頭 與 外零頭 內零頭是指分配給作業的儲存空間中未被利用的部分。外零頭是指系統中無法利用的小儲存塊。固定分割槽的分配方式會產生內零頭,因為是找出乙個滿足作業要求的空閒分割槽分配給作業,大小不一定剛好合適,分割槽中有一部分儲存空間會被浪費。在可變式分割槽分配中,是按照作業的大小找出乙個分割槽來分配...

分割槽式儲存管理

基本思想 將記憶體劃分成若干個連續區域,稱為分割槽。每個分割槽只裝入乙個程式,且該程式只能在此分割槽執行。問題 內碎片問題 分區內未被利用的空間 外碎片問題 分割槽之間難以利用的空間 分類 固定式分割槽 可變式分割槽 基本思想 系統先把記憶體劃分成若干個大小固定的分割槽,一旦劃分好,在系統執行期間便...