资源描述
湖南工业大学
课 程 设 计
资 料 袋
计算机与通信学院 学院(系、部) 2013~2014学年第1学期
课程名称计算机操作系统指导教师左新娥职称讲师
学生姓名陈彦兵专业班级网络1101学号11408400108
题 目存储管理系统设计
成 绩起止日期2013年12月9日~2013年12月15日
目 录 清 单
序号
材 料 名 称
资料数量
备 注
1
课程设计任务书
2
课程设计说明书
3
4
5
6
课程设计任务书
2013 —2014学年第 1 学期
学院(系、部) 计算机与通信学院专业网络工程 班级111—2
课程名称:计算机操作系统学生姓名: 陈彦兵
设计题目:存储管理系统设计指导教师: 左新娥
完成期限:自 2013年12月9日至 2013年12月15日共1周
内
容
及
任
务
一、设计内容
设计一个允许n个进程并发运行的进程管理模拟系统。该系统包括有简单的进程控制、同步与通讯机构,其进程调度算法可以选择优先级调度,时间片轮转,短进程优先等。每个进程用一个PCB表示,其内容根据具体情况设置。各进程之间有一定的同步关系(可选)。系统在运行过程中应能显示或打印各进程的状态及有关参数的变化情况,以便观察进程的运行过程及系统的管理过程。
二、设计任务
课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。
三、设计要求
1. 按功能要求开发系统,能正确运行。程序代码书写规范,有充足的注释。
2. 课程设计所使用的编程语言任选,但建议使用C或C++;
3. 绿色软件:程序运行不需安装,避免写系统和注册表;
进
度
安
排
起止日期
工作内容
课程设计前一周
召开动员大会,学生选题;
2013—12-9~2013-12—10
系统分析和设计;
2013—12—11~2013-11-13
熟悉软件开发工具、编码系统、系统测试以及中期答辩;
2013—12—14~2013-12—15
撰写并提交课程设计说明书 (含电子文档)、源程序等.
主
要
参
考
资
料
[1]罗宇、邹鹏、邓胜兰等著.《操作系统》[M].北京:电子工业出版社,2011
[2]Andrew S.Tanenbaum 著.陈向群等译.《现代操作系统》[M].北京:机械工业出版社,2007
[3]邓胜兰编著.《操作系统基础》[M].北京:机械工业出版社,2009
[4]Dave Probert著,陈向群等译《Windows操作系统原理》[M].北京:机械工业出版 ,2006
[5]罗宇 褚瑞等等著.《操作系统课程设计》[M].北京:机械工业出版,2004
指导教师(签字):年 月 日
系(教研室)主任(签字):年 月 日
2
课程设计说明书
课程名称:计算机操作系统
设计题目:存储管理系统设计
专 业:网络工程班级:1101
学生姓名: 陈彦兵学 号: 11408400108
指导教师:左新娥
2012年 12月 7日
.11.
目录
1 课程设计简介4
1.1实验目的4
1。2 课程设计内容4
2课程设计实现过程5
2.1系统流程图5
2。2结构体及先关数组的设计6
2.3主要功能函数设计6
1.给物理块赋初值6
2.初始化页面并产生一组随机数6
3.查找是否有空闲内存7
4.查找内存中是否有该页面7
5.查找应予置换的页面7
3设计总结15
参考文献16
1 课程设计简介
1。1实验目的
通过请求页式存储管理中页面置换算法模拟程序,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
1.2 课程设计内容
1。通过随机数产生一个指令序列,共320条指令,指令的地址按下述原则生产:
50%的指令是顺序执行的;
25%的指令是均匀分布在前地址部分;
25%的指令是均匀分布在后地址部分。
2。将指令序列变换成为页地址流,设页面大小为1K;用户内存容量为4页到32页;用户虚存容量为32K。在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:第0条至第9条指令为第0页;第10条至19条指令为第1页;…第310条至319条指令为第31页.
3。计算并输出下述各种算法在不同内存容量下的命中率。
(1) 先进先出算法(FIFO)
(2) 最近最少使用算法(LRU)
(3) 最佳使用算(OPT)
命中率=1-页面失效次数/页地址流长度.本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。
1.3思路
设计一个类,把页面存储管理系统分成各个模块,把不同的功能进行封装。实现程序设计的安全易移植性。把各个分页算法分装在类的功能函数中。
2课程设计实现过程
开始
2.1系统流程图
是
产生一组随机数
选择页面置换速发
最久未使用
最佳置换算法
FIFO算法
运行结束
是否接着运行
否
程序结束
2。2结构体及先关数组的设计
1.主要结构体
用来存放物理块的大小以及页面是否已经被访问。
struct pageInfor
{
int ID;//页面号
int visit;//被访问标记
}; /* 页面逻辑结构,结构为方便算法实现设计*/
2。主要变量设计
#define Bsize 3 //物理块数
#define Psize 20 //页面块数
pageInfor * block;//物理块
pageInfor * page;//页面号串
2。3主要功能函数设计
1.给物理块赋初值
void BlockClear()
{
for(int i=0; i<Bsize; i++)
{
block[i]。ID = -1;
block[i].visit = 0;
}
2.初始化页面并产生一组随机数
void inital()
{
int QString[Psize]={0};
srand(time(0));
for(int i=0;i〈20;i++)
{
QString[i]=rand()%10;
printf(”%d”,QString[i]);
}
cout〈〈endl;
block = new pageInfor[Bsize];
BlockClear();
page = new pageInfor[Psize];
for(i=0; i〈Psize; i++)
{
page[i].ID = QString[i];
page[i]。visit = 0;
}
}
3.查找是否有空闲内存
int findSpace()
{
for(int i=0; i〈Bsize; i++)
if(block[i].ID == —1)
return i;//找到空闲内存,返回BLOCK中位置
return -1;
}
4.查找内存中是否有该页面
int findExist(int curpage)
{
for(int i=0; i〈Bsize; i++)
if(block[i]。ID == page[curpage]。ID)
return i;//找到内存中有该页面,返回BLOCK中位置
return —1;
}
5.查找应予置换的页面
int findReplace()
{
int pos = 0;
for(int i=0; i〈Bsize; i++)
if(block[i]。visit 〉= block[pos].visit)
pos = i;//找到应予置换页面,返回BLOCK中位置
return pos;
}
6.FIFO算法
void FIFO()
{
count=0;
int exist,space,position ;
for(int i=0; i<Psize; i++)
{
exist = findExist(i);
if(exist != -1)
{
cout<〈"即将访问的是页面”〈〈page[i].ID<〈endl;
cout〈〈"内存中已存在该页"〈〈endl;
}
else
{
space = findSpace();
if(space != —1)
{
block[space] = page[i];
display();
}
else
{
position = findReplace();
cout<〈”即将访问的是页面"〈〈page[i]。ID〈〈”\n将被置换出的是页面"〈〈block[position].ID<〈endl;
block[position] = page[i];
display();
count++;
}
}
for(int j=0; j<Bsize; j++)
block[j]。visit++;//BLOCK中所有页面visit++
}
cout〈<”\nFIFO算法的缺页率是:”〈〈(float)count/20〈〈endl;
}
7.LRU算法
void LRU()
{
count=0;
int exist,space,position ;
for(int i=0; i<Psize; i++)
{
exist = findExist(i);
if(exist != —1)
{
cout〈〈"即将访问的是页面"<<page[i].ID<<endl;
cout〈<”内存中已存在该页”<<endl;;
block[exist]。visit = —1;//恢复存在的并刚访问过的BLOCK中页面visit为—1
}
else
{
space = findSpace();
if(space != —1)
{
block[space] = page[i];
display();
}
else
{
position = findReplace();
cout〈<”即将访问的是页面”〈〈page[i].ID<<"\n将被置换出的是页面”<<block[position]。ID<<endl;
block[position] = page[i];
display();
count++;
}
}
for(int j=0; j〈Bsize; j++)
{
block[j]。visit++;
}
}
cout<〈”\n LRU算法的缺页率是:"〈〈(float)count/20〈〈endl;
}
8。OPT算法
void OPT()
{
count=0;
int exist,space,position ;
for(int i=0; i<Psize; i++)
{
exist = findExist(i);
if(exist != —1)
{
cout〈〈”即将访问的是页面”〈〈page[i]。ID〈〈endl;
cout〈<"内存中已存在该页”〈<endl;
}
else
{
space = findSpace();
if(space != —1)
{
block[space] = page[i];
display();
}
else
{
for(int k=0; k〈Bsize; k++)
for(int j=i; j〈Psize; j++)
{
if(block[k].ID != page[j]。ID)
{
block[k]。visit = 1000;
}
else
{
block[k]。visit = j;
break;
}
}
position = findReplace();
cout〈〈"即将访问的是页面”〈<page[i]。ID〈〈”\n将被置换出的是页面"〈〈block[position].ID<<endl;
block[position] = page[i];
display();
}
}
}
}
9.实验结果
1.主界面
2。1产生的随机数
2。LRU算法界面
4. FIFO算法
5. OPT算法
3设计总结
请求页式管理的基本原理是将逻辑地址空间分成大小相同的页,将存储地址空间分块,页和块的大小相等,通过页表进行管理。页式系统的逻辑地址分为页号和页内位移量.页表包括页号和块号数据项,它们一一对应。根据逻辑空间的页号,查找页表对应项找到对应的块号,块号乘以块长,加上位移量就行成存储空间的物理地址.每个作业的逻辑地址空间是连续的,重定位到内存空间后就不一定连续了。
3. 写出这三种页面置换算法的实现思想。
FIFO算法总是淘汰最先调入主存的页面,即淘汰在主存中驻留时间最长的页面,认为驻留时间最长的页不再使用的可能性较大。
LRU算法淘汰的页面是最近一段时间内最久未被访问的那一页,它是基于程序局部性原理来考虑的,认为那些刚被使用过的页面可能还要立即被使用,而那些在较长时间内未被使用的页面可能不会立即使用。
OPT算法,当要调入一页而必须淘汰旧页时,应该淘汰以后不再访问的页,或距现在最长时间后要访问的页面.
4.对不同算法的性能进行评价。
FIFO算法较易实现,对具有线性顺序特征的程序比较适用,而对具有其他特征的程序则效率不高,此算法还可能出现抖动现象异常。LRU算法基于程序的局部性原理,所以适用用大多数程序,此算实现必须维护一个特殊的队列—-页面淘汰队列。OPT算法虽然产生的缺页数最少,然而,却需要预测程序的页面引用串,这是无法预知的,不可能对程序的运行过程做出精确的断言,不过此理论算法可用做衡量各种具体算法的标准。
参考文献
[1]袁庆龙,候文义.Ni-P合金镀层组织形貌及显微硬度研究[J].太原理工大学学报,2001,32(1):51—53.(连续出版物:[序号] 主要责任者.文献题名[J].刊名,出版年份,卷号(期号):起止页码)
[2] 刘国钧,王连成.图书馆史研究[M].北京:高等教育出版社,1979:15—18,31.(专著:[序号] 主要责任者.文献题名[M].出版地:出版者,出版年:起止页码.)
[3]孙品一.高校学报编辑工作现代化特征[C].中国高等学校自然科学学报研究会.科技编辑学论文集(2).北京:北京师范大学出版社,1998:10—22.(论文集:[序号] 主要责任者.文献题名[C]∥主编.论文集名.出版地:出版者,出版年:起止页码.)
展开阅读全文