資源簡介
借用外存空閑分區管理中位示圖的方法來表示主存分配情況,實現主存空間的分配和回收。
代碼片段和文件信息
#include?
#include?
#include?
#include?
using?namespace?std;
struct?bitGraph{
int?a[8][8];?
int?freebit;?
}BG;
struct?Process{
char?name[10];?
int?*pagetable;?
int?size;?
Process?*pre;
Process?*nxt;
}*head;;
int?Show(char?*name)
{
int?flag?=?0;
Process?*p;
for(p?=?head;p?!=?NULL;p?=?p->nxt)
{
if(strcmp(p->name?name)==0)
{
cout?< cout?<“-----------------“?< cout?<“??????進程名?????“?< cout?<“-----------------“?< cout?<“???頁號????塊號“?< cout?<“-?-?-?-?-?-?-?-?-“?< for(int?i?=?0;?i?size;?i?++){
cout?<“????“?<pagetable[i]?< flag?=?1;
}
cout?<“-----------------“?< }
}
if(flag?==?0)
cout?<“沒有該進程!“?<}
int?getMalloc(){
int?k?=?0?flag?=?0;
Process?*process;
process?=?(Process?*)malloc(sizeof(Process));
process->nxt?=?head->nxt;
if(head->nxt?!=?NULL)
head->nxt->pre?=?process;
head->nxt?=?process;
process->pre?=?head;
cout?<“請輸入進程名:“;
cin?>>?process->name;
cout?<“請輸入進程所需內存大小:“;
cin?>>?process->size;
if(process->size?>?BG.freebit){
cout?<“對不起,空閑空間不足以分配如此多內存給該進程。“?< return?0;
}
else{
process->pagetable?=?new?int?[process->size];
for(int?i=?0;?i?8?&&?flag?==?0;?i?++)
for(int?j?=?0;?j?8?&&?flag?==?0;?j?++){
if(!BG.a[i][j]){
BG.a[i][j]?=?1;
BG.freebit--;
process->pagetable[k]?=?8?*?i?+?j;
k?++;
if(k?==?process->size)
flag?=?1;
}
}
}
cout?< for(int?i?=?0;?i?8;?i?++)
{
for(int?j?=?0;?j?8;?j?++)
cout?< cout?< }
cout?< cout?<“當前空閑快數:?“?<
Show(process->name);
}
int?Free()
{
char?name[10];
int?flag?=?0;
Process?*p;
cout?<“請輸入需要回收的進程名:“;
cin?>>?name;
for(p?=?head;p?!=?NULL;?p?=?p->nxt)
{
if(strcmp(p->name?name)?==?0){
flag?=?1;
for(int?i?=?0;?i?size;?i?++){
int?m?=?p->pagetable[i]?/?8;
int?n?=?p->pagetable[i]?%?8;
BG.a[m][n]?=?0;
BG.freebit?++;
}
if(p->pre?!=?NULL){
- 上一篇:天津理工C++實驗報告齊全
- 下一篇:小區水電費管理系統
評論
共有 條評論