武汉理工大学操作系统实践报告.docx
《武汉理工大学操作系统实践报告.docx》由会员分享,可在线阅读,更多相关《武汉理工大学操作系统实践报告.docx(11页珍藏版)》请在冰豆网上搜索。
武汉理工大学操作系统实践报告
-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN
武汉理工大学操作系统实践报告
学号:
Xxxxxxxxx
实践课设计报告
课程名称
计算机操作系统
题目
模拟设计存储管理的分配与回收
学院
计算机科学与技术学院
专业
计算机科学与技术
班级
xxxx
姓名
xxx
指导教师
xxx
2016
年
12
月
29
日
1需求分析
页式管理的基本原理
页式管理是一种内存空间存储管理的技术,页式管理分为静态页式管理和动态页式管理。
基本原理是将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(pageframe),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。
页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。
图1页的划分
实验要求
⑴能够输入给定的内存页面数,页面大小,进程的个数及每个进程的页数。
⑵当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后内存空间的使用情况(被进程占用的页面,空闲的页面)。
⑶当某进程撤消时,显示内存回收后内存空间的使用情况。
2功能设计
算法分析
模拟页式管理中置换算法中的先进先出算法(FIFO),FIFO算法总是选择在内存驻留时间最长的一页将其淘汰。
图2算法流程图
数据结构
(1)定义整型变量length来保存进程的页面数,定义数组order[30]来存储进程页面的逻辑地址,数组ad[100]存放逻辑页的页内位移。
(2)定义变量num_page存储物理块的数目,定义变量wlsize存储物理块的大小,物理块的大小一般为2的n次方,定义数组a[10]存放物理块中的存储的逻辑页。
(3)定义数组result[20][30]存储记录结果,定义数组result1[30]记录是否缺页。
(4)定义变量q来记录缺页次数。
模块说明
主函数
intmain()
计算机操作系统教程(第4版).北京:
清华大学出版社
【2】张尧学,宋虹,张高.计算机操作系统教程(第4版)习题解答与实验指导.北京:
清华大学出版社,2000
源代码:
#include
#include<>
usingnamespacestd;
intlength,num_page,ad[100];新输入新序列.\n");
printf("2.不改变访问序列只改物理块数.\n");
printf("0.不操作退出.\n");
printf("**************************************\n");
printf("选择所要操作:
");
cin>>m;
if(m==1)
{
flag1=1;//重新输入
init();
//fifo();
}
elseif(m==2)
{
flag2=1;
cout<<"输入新物理块数:
";
cin>>numpage;
num_page=numpage;
memset(a,sizeof(a));
}
elsereturn;
}
boolsearch(intn,intx)//查找当前是否已存在,如果存在返回真值,不存在则返回假
{
for(inti=0;i{
if(a[i]==n)
{
cout<<"第"<returntrue;
}
}
returnfalse;
}
voidfifo()//先进先出
{
while
(1)
{
intthisn=0;
q=0;
flag1=flag2=0;//用于标志是否再输入
for(inti=0;i{
if(!
search(order[i],i))
{
q++;
result1[i]='*';
if(a[num_page]!
=-1)//表示当前页面已满要淘汰一个
{
a[thisn]=order[i];//替换掉第0个物理块的
thisn++;//下一次就替换第1个物理块的
if(thisn>=num_page)//当thisn大于等于物理块数时,将thisn改为0
thisn=0;
cout<<"第"<
}
else
{
//如果内存物理块没有满,就直接放入内存
for(intj=0;j{
if(a[j]==-1)
{
a[j]=order[i];
cout<<"第"<
break;
}
}
}
}
elseresult1[i]='';
for(intj=0;j{
result[j][i]=a[j];//将第一列放入result的第一列
}
}
again();//再操作
if(flag1==0&&flag2==0)
break;
}
}
intmain()//主函数
{
init();
fifo();
return0;
}
成绩评定表
序号
评分项目
满分
实得分
1
学习态度认真、出勤情况
10
2
设计分析合理性
10
3
设计方案正确性、可行性、创造性、设计结果正确性
30
4
系统测试、运行情况
40
5
设计报告的规范性
10
总得分