實驗目的:熟悉並掌握動態分割槽分配的各種演算法。
熟悉並掌握動態分割槽中分割槽**的各種情況,並能夠實現分割槽合併。
實驗內容:用高階語言模擬實現動態分割槽儲存管理,要求:
分割槽分配演算法至少實現首次適應演算法、最佳適應演算法和最壞適應演算法中的至少一種。熟悉並掌握各種演算法的空閒區組織方式。
分割槽的初始化——可以由使用者輸入初始分割槽的大小。(初始化後只有乙個空閒分割槽,起始位址為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,這樣當新的作業到來或者 時,只需要將合...
分割槽儲存管理
內零頭 與 外零頭 內零頭是指分配給作業的儲存空間中未被利用的部分。外零頭是指系統中無法利用的小儲存塊。固定分割槽的分配方式會產生內零頭,因為是找出乙個滿足作業要求的空閒分割槽分配給作業,大小不一定剛好合適,分割槽中有一部分儲存空間會被浪費。在可變式分割槽分配中,是按照作業的大小找出乙個分割槽來分配...
分割槽式儲存管理
基本思想 將記憶體劃分成若干個連續區域,稱為分割槽。每個分割槽只裝入乙個程式,且該程式只能在此分割槽執行。問題 內碎片問題 分區內未被利用的空間 外碎片問題 分割槽之間難以利用的空間 分類 固定式分割槽 可變式分割槽 基本思想 系統先把記憶體劃分成若干個大小固定的分割槽,一旦劃分好,在系統執行期間便...