xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 982KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-02
  • 語言: 其他
  • 標簽: 動態分區??

資源簡介

系統采用最佳適應分配算法為作業分配主存空間,而且具有緊湊技術。請編程完成以下操作: (1). 輸出此時的已分配區表和未分配區表; (2). 裝入 Job3(15K),輸出主存分配后的已分配區表和未分配區表; (3). 回收 Job2所占用的主存空間,輸出主存回收后的已分配區表和未分配區表; (4).裝入 Job4(130K),輸出主存分配后的已分配區表和未分配區表。

資源截圖

代碼片段和文件信息

//內存管理----最優適應分配算法
#include
#include
#include
#include
#define?MemSize??240??//定義內存大小
#define?MemBassaddr?0??//定義內存起始地址
using?namespace?std;

struct?freepartion//空閑分區結構定義
{
????int?baseaddr;//空閑分區的起始地址
????int?partionlen;//空閑分區的長度
};
struct?usedpartion//已分配的內存分區結構定義
{
????string?jobname;//作業名
????int?baseaddr;??//作業所占分區的起始地址
int?partionlen;//作業所占分區的長度
};

listfreetable;//空閑分區表
listusedtable;//已分配分區表

void?AllocateMem(string?&jobnameint?&joblen)//采用最優適應分配算法為作業jobname分配joblen大小的空間
{
?//要分配的作業名不能為已存在的作業名
list::iterator?used=usedtable.begin();
while(used!=usedtable.end())
{
if(used->jobname==jobname)
{
cout<<“作業已存在不能再分配一個相同名的作業!“< return;
}
else
{
used++;
}
?}
?//最優適應分配算法
?list::iterator?it=freetable.begin();
?if(it==freetable.end())
?{
?????cout<<“空閑分區已用完!“< ?return;
?}
?list::iterator?itfreetmp=it;
?while(it!=freetable.end())
?{??
???????
?if(it->partionlen>=joblen)
{??
if(itfreetmp->partionlen>it->partionlen)
{
itfreetmp=it;
it++;
continue;
}
else?if(itfreetmp->partionlen {
????????????itfreetmp=it;
it++;
continue;
}
else
{
it++;
continue;
}
????}
else
{
it++;
}
?}//while
?if(itfreetmp->partionlen>=joblen)
?{
?????//修改已分配分區表
usedpartion?tempuse;
tempuse.baseaddr=itfreetmp->baseaddr;
tempuse.jobname=jobname;
tempuse.partionlen=joblen;
usedtable.push_back(tempuse);
????
??//從空閑區分配空間
if(itfreetmp->partionlen==joblen)
{
freetable.erase(itfreetmp);
}
else
{
itfreetmp->baseaddr=itfreetmp->baseaddr+joblen;
itfreetmp->partionlen=itfreetmp->partionlen-joblen;
}
cout<<“為作業“< return;
?}
?else
?{
????cout<<“內存不足,為作業分配內存失敗!“<????return;
?}
}
void?ReclaimMem(string?jobname)//回收作業jobname所占的內存
{??
list::iterator?itused=usedtable.begin();
list::iterator?itfree=freetable.begin();
freepartion?free;
while(itused!=usedtable.end())
{
if(itused->jobname==jobname)//找到要回收的作業
{
free.baseaddr=itused->baseaddr;
free.partionlen=itused->partionlen;
usedtable.erase(itused);
if(itfree!=freetable.end())
{
list::iterator?ittmpdown=itfree;
list::iterator?ittmpup=++itfree;
while(ittmpup!=freetable.end())
{
if(free.baseaddr==(ittmpdown->baseaddr+ittmpdown->partionlen))//下鄰空閑區
{
if(free.baseaddr+free.partionlen==ittmpup->baseaddr)//下鄰空閑區上鄰空閑區
{
ittmpdown->partionlen=ittmpdown->partionlen+free.partionlen+ittmpup->partionlen;
freetable.erase(ittmpup);//刪除上鄰空閑區
cout<<“回收作業所占的內存成功!“< return;
}
else//下鄰空閑區但不上鄰空閑區
{
ittmpdown->partionlen=ittmpdown->partionlen+free.partionlen;
cout<<“回收作業所占的內存成功!“< return;
???????
}
???

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????573497??2017-11-16?15:27??Manage\Debug\Manage.exe

?????文件?????828488??2017-11-16?15:27??Manage\Debug\Manage.ilk

?????文件?????326908??2017-11-16?15:27??Manage\Debug\Manage.obj

?????文件????2423976??2017-11-16?14:38??Manage\Debug\Manage.pch

?????文件????1164288??2017-11-16?15:27??Manage\Debug\Manage.pdb

?????文件??????91136??2017-11-16?15:27??Manage\Debug\vc60.idb

?????文件?????135168??2017-11-16?15:27??Manage\Debug\vc60.pdb

?????文件???????8017??2017-11-16?15:38??Manage\Manage.cpp

?????文件???????4284??2017-11-09?16:20??Manage\Manage.dsp

?????文件????????520??2017-11-09?16:06??Manage\Manage.dsw

?????文件??????41984??2017-11-16?15:38??Manage\Manage.ncb

?????文件??????53760??2017-11-16?15:38??Manage\Manage.opt

?????文件???????1282??2017-11-16?15:28??Manage\Manage.plg

?????目錄??????????0??2017-11-16?15:27??Manage\Debug

?????目錄??????????0??2017-11-16?15:38??Manage

-----------?---------??----------?-----??----

??????????????5653308????????????????????15


評論

共有 條評論