实验五页面置换算法Word格式文档下载.docx
- 文档编号:18739540
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:11
- 大小:107.01KB
实验五页面置换算法Word格式文档下载.docx
《实验五页面置换算法Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验五页面置换算法Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
{
intstart;
intlength;
Free(ints,intl);
};
Free:
:
Free(ints,intl)
start=s;
length=l;
}
//已分配分区表节点
structTask
stringname;
Task(stringn,ints,intl);
Task:
Task(stringn,ints,intl)
name=n;
//声明空闲分区表
list<
Free*>
free_list;
Task*>
task_list;
//分配可用起始地址
intget_free(intsize)
intstart=-1;
//查找适当的空闲分区
list<
iteratorit=free_list.begin();
boolfind=false;
while(it!
=free_list.end())
{
if((*it)->
length>
=size)
find=true;
start=(*it)->
start;
//大于就分割把低地址分配出去
size)
(*it)->
start+=size;
length-=size;
}
//等于就从空闲分区中删掉
else
free_list.erase(it);
break;
//找到就跳出循环
it++;
returnstart;
voiddo_request(stringname,intsize)
if(name=="
SYSTEM"
)
cout<
<
"
申请不合法!
非法进程名!
"
<
endl;
return;
if(size>
TOTLE_LEFT)
超出最大可用内存!
//查找是否已存在同名进程
iteratorit=task_list.begin();
=task_list.end())
name==name)
if(find)
此进程已存在!
//从空闲分区选择合适的空间
intstart=get_free(size);
//未找到合适空间
if(start==-1)
系统内存不足!
进程等待!
Task*ta=newTask(name,start,size);
task_list.push_back(ta);
进程申请内存成功!
//插入到空闲分区表,按照起始地址从小到大
voidfree_task(intstart,intlength)
//查找要插入的位置
iteratorinit_it,last_it;
last_it=init_it;
start>
start)break;
last_it=it;
boollink_prev=false;
boollink_next=false;
//有前一个时
if(last_it!
=init_it)
if((*last_it)->
start+(*last_it)->
length==start)
link_prev=true;
//有后一个时
if(it!
if(start+length==(*it)->
start)
link_next=true;
//与前后都相连
if(link_prev&
&
link_next)
(*last_it)->
length+=length+(*it)->
length;
//只与前相连
elseif(link_prev)
length+=length;
//只与后相连
elseif(link_next)
start=start;
//前后都不相连
Free*fr=newFree(start,length);
free_list.insert(it,fr);
voiddo_revoke(stringname)
错误!
不能回收系统内存!
//查找要回收的进程是否存在
if(!
find)
要回收的进程不存在!
;
free_task((*it)->
start,(*it)->
length);
task_list.erase(it);
回收进程占用内存成功!
voidprint_task()
进程名称起始地址大小"
for(list<
it!
=task_list.end();
it++)
name<
start<
length<
voidprint_free()
以下是空闲分区表的状态"
endl
起始地址大小"
=free_list.end();
intmain()
//把系统占用后剩余的内存空间计入空闲分区表
Free*fr=newFree(OS_MEM,TOTLE_LEFT);
free_list.push_back(fr);
Task*ta=newTask("
SYSYEM"
0,OS_MEM);
print_free();
boolquit=false;
while(!
quit)
选择要进行的操作:
1.申请内存2.回收内存3.查看进程>
intop;
cin>
>
op;
if(op==1)
请输入进程名及占用空间大小(用空格隔开):
intsize;
name;
size;
do_request(name,size);
elseif(op==2)
请输入要回收的进程名:
do_revoke(name);
elseif(op==3)
print_task();
非法操作!
******************************"
charcon;
继续(y/n):
con;
if(con=='
n'
||con=='
N'
quit=true;
return0;
实验结果:
五、实验总结分析
通过本次试验,我学会了最近最久未使用置换算法;
最先适应分配算法;
LRU和其他置换算法各自的优缺点;
各种主存分配算法的优缺点。
部分Linux系统常用简单指令的使用,也对操作系统的基本原理有了更深层次的了解。
但在试验的过程中仍然存在诸多问题,习惯于使用图形化的操作系统后,对该指令操作系统就不太适应。
但Linux的效率远比图形化的操作系统的效率要高,所以在以后的实验过程中,要多多练习,多多动手操作,多多记忆,才能完全驾驭Linux操作系统。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 页面 置换 算法