




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
年级2013专 业软件工程班级组号实验室9#205日期2015/6/17实验名称实验三 虚拟内存管理实验内容1 局部性原理演示(数组清零)(操作系统观察级)2 页面置换算法模拟演示(算法仿真实现级)3 实际系统内存分配演示(Linux,Windows平台)(操作系统观察级)小 组 成 员姓名学号组内分工自我评分教师评分实验认真实验严谨小组成绩评定教师签名: 年 月 日实验分项1局部性原理演示(数组清零)(操作系统观察级)实验目的学习并理解程序的局部性原理实验要求具体题目局部性原理演示(数组清零)系统平台:Windows XP系统实验原理步骤(算法流程)数组清零 操作系统支持:Windows、Linux 所属类别:数组操作 利用双重的for循环将指定的二维数组变量内的所有成员值全部设置为零,不影响数组的维定义信息。 语法:无返回值 数组清零(数值数组变量)源代码如下:#include #include #include #include #define K 4096using namespace std;int aKK;void line() int i, j; for (i=0; iK; i+) for (j=0; jK; j+) aij=0; return ; void row() int i, j; for (i=0; iK; i+) for (j=0; jK; j+) aji=0; return ; int gettime() SYSTEMTIME t; GetLocalTime(&t); return t.wSecond*1000+t.wMilliseconds;int main(int argc, char *argv) int i; int t1, t2; t1 = gettime(); for (i=0; i10; i+) line(); t2 = gettime(); cout*数组清零*n; coutn按行清零耗费时间为:t2-t1msendl; coutn-nendl; t1 = gettime(); for(i=0;i10;i+) row(); t2 = gettime(); cout 按列清零耗费时间为:t2-t1msendl; system(PAUSE); return EXIT_SUCCESS;实验结果及分析实验结果截图:linux下:#include #include #include #include #include #define K 4096using namespace std;int aKK;void line()int i, j;for (i=0; iK; i+)for (j=0; jK; j+)aij=0;return ;void row()int i, j;for (i=0; iK; i+)for (j=0; jK; j+)aji=0;return ; int gettime()struct timeval tv;struct timezone tz;gettimeofday(&tv,&tz);return tv.tv_sec*1000 + tv.tv_usec/1000;int main(int argc, char *argv)int i;int t1, t2;t1 = gettime(); for (i=0; i10; i+) line(); t2 = gettime();cout*数组清零*n;coutn按行清零耗费时间为:t2-t1msendl;coutn-nendl;t1 = gettime();for(i=0;i10;i+)row();t2 = gettime();cout 按列清零耗费时间为:t2-t1msendl;return 0;心得体会通过这个实验,对Windows内存管理机制了解清楚,有./效的利用C+内存函数管理和使用内存。假设数据存在物理内存中,系统没有RAM页面后,会将这个页面暂时写进虚拟内存页文件中,这样来回的倒腾系统会很慢;如果那一页数据已经不需要的话,系统可以直接使用。当程序需要它那一页时,系统会分配另一页给它。实验分项2页面置换算法模拟演示(算法仿真实现级)实验目的通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程。实验要求具体题目页面置换算法模拟演示系统平台windows操作系统实验原理步骤(算法流程)设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中率。1、先进先出的算法(FIFO)2、最近最久未使用算法(LRU)输入页面访问序列 取访问页号查页表是否缺页 是 否置缺页标记flag为“*”按照各自算法淘汰页面调入所访问页面1、先进先出法(FIFO)入口 查询指针前进一步,指向下一个页面 置页面访问时间+1页面访问时间是否最大 否 是选择该页面淘汰 返回2.最近最久没使用(LRU) 进入查询指针前进一步,指向下一页面个页面 先前访问的页面的时间t+;前面已访问过此页面字段t=max?返回选择该页面淘汰 否实验部分代码:1、FIFO算法#include stdio.h#define n 20#define m 4void main()int ymn,i,j,q,memm=-1,-1,-1,-1,tablemn;char flag,fn;printf(请输入页面访问序列n);for(i=0;in;i+) scanf(%d,&ymi);printf(n);for(i=0;i0;j-) /淘汰最先调入的页面调入当前访问的 memj=memj-1; mem0=ymi; for(j=0;jm;j+) tableji=memj; fi=flag; printf(输出结果为下表(-1代表为空,*代表有缺页):n);for(i=0;in;i+) printf(“%3d”,ymi);printf(“n”);for(i=0;i=n;i+) printf(“%s”, “-”);printf(“n”);for(i=0;im;i+) for(j=0;jn;j+)printf(%3d,tableij);printf(n); for(i=0;in;i+) printf(%3c,fi);printf(”n”);2、LRU算法#include stdio.h#define n 20#define m 5void main()int ymn,i,j,q,memm=-1,-1,-1,-1,-1,tablemn;char flag,fn;printf(请输入页面访问序列n);for(i=0;in;i+) scanf(%d,&ymi);printf(n);for(i=0;in;i+) /查页表,看是否缺页 q=0; while(ymi!=memq)&(q!=m) q+; if(q=m) flag=*; /缺页,则置标志flag为* else flag= ; if(q0;j-) memj=memj-1;else for(j=q-1;j0;j-) memj=memj-1;mem0=ymi;for(j=0;jm;j+) tableji=memj;fi=flag; printf(输出结果为下表(-1代表为空,*代表有缺页):n);for(i=0;in;i+) printf(“%3d”,ymi);printf(“n”);for(i=0;i=n;i+) printf(“%s”, “-”);printf(“n”);for(i=0;im;i+) for(j=0;jn;j+)printf(%3d,tableij);printf(n); for(i=0;in;i+) printf(%3c,fi);printf(“n”);实验结果及分析1:2:心得体会通过本次实验, 我明白如果一个经常使用的页面被置换出去,很有可能很快又要被调入内存,带来不必要的额外开销。页面置换算法的优劣将会影响到虚拟存储系统的性能,进而影响到整个操作系统的性能。实验分项3实际系统内存分配演示(Linux,Windows平台)(操作系统观察级)实验目的学习并理解实际系统内存分配原理实验要求具体题目实际系统内存分配演示(Linux,Windows平台)(操作系统观察级)系统平台Windows XP系统实验原理步骤(算法流程)内存管理是计算机系统以一种优化性能的方式,在需要内存的不同进程之间将有限的内存进行分配的过程,执行这种任务的通用技术叫做虚拟内存技术。模拟操作系统在内存的分配以及回收所用内存的运行过程,采用首次适应法来进行,本程序运行实际上不用输入测试数据,它能利用随机函数生成测试数据,对于用户来讲,可以直接观察运行结果。源代码如下:#include #include /操作系统首次合并算法内存实现 malloc free 函数int g_MemoryAllocLen = 10;typedef struct double_link struct double_link * front; struct double_link * rear; int size; int state; /内存空间状态 0空闲 1占用doublelink_ST,*lpdoublelink_ST;/* 函数名称:Createdoublelis* 功能描述:创建内存节点 * 输入参数:lpdoublelink_ST head* 输出参数: head * 返 回 值:0 */doublelink_ST * Init_doublelinklist(lpdoublelink_ST head) head = (lpdoublelink_ST)malloc(sizeof(doublelink_ST); head-front = NULL; head-rear = NULL; head-size = 1; head-state = 1; return head; /* 函数名称:Createdoublelis* 功能描述:创建长度为g_MemoryAllocLen的内存节点链表 * 输入参数: void* 输出参数: 无 * 返 回 值:0 */void Createdoublelist(lpdoublelink_ST head, int space) lpdoublelink_ST p = head; for(int i =0;isize = *(space+i); s-state = 0; s-rear = NULL; s-front = NULL; p-rear = s; s-front = p; p = s; /* 函数名称:selfmalloc* 功能描述:分配内存节点 * 输入参数: void* 输出参数: 无 * 返 回 值:0 */int self_malloc(lpdoublelink_ST head,int alloc_spacre) int place = 0; lpdoublelink_ST p = head; for(p,place=0;p-sizerear,place+); if(p-size=alloc_spacre) /如果分配的空间相等 p-state = 1; return place; else p-size = p-size - alloc_spacre; lpdoublelink_ST newspace = (lpdoublelink_ST)malloc(sizeof(doublelink_ST); newspace-state = 1; newspace-size = alloc_spacre;newspace-front = p-front; /插入节点 p-front-rear = newspace; newspace-rear = p; p-front = newspace; g_MemoryAllocLen += 1; return place; /* 函数名称 self_free* 功能描述:释放节点 * 输入参数: void* 输出参数: 无 * 返 回 值:0 */void self_free(lpdoublelink_ST head,int place ) lpdoublelink_ST p = head; for(int i=0;irear; if(1 = p-state ) /释放节点的左边为空闲块 if(0=p-front-state) & (1=p-rear-state) p-front-size += p-size; p-front-rear = p-rear; p-rear-front = p-front; free(p); p = NULL; g_MemoryAllocLen -= 1; return; /释放节点的右边为空闲块 if(1=p-front-state) & (0=p-rear-state) p-rear-size +=p-size; p-front-rear = p-rear; p-rear-front = p-front; g_MemoryAllocLen -= 1; free(p); p = NULL; return; /释放节点的左右两边都为空闲块 if(0=p-rear-state) & (0=p-front-state) p-rear-size += p-front-size + p-size; p-front-front-rear = p-rear; p-rear-front = p-front-front; g_MemoryAllocLen -= 2; free(p-front); p-front = NULL; free(p); p = NULL; return; /释放节点的左右两边都为占用块 if(1=p-rear-state)&(1=p-front-state) p-state = 1; return; else printf(没有找到该释放的节点n); /* 函数名称 print_memory* 功能描述:打印内存空间情况 * 输入参数: void* 输出参数: 无 * 返 回 值:0 */void print_memory(lpdoublelink_ST p,int size) int i; for (i=0;irear; printf(序列:%3d 分配空间:%3d 是否空闲:%dn,i,p-size,p-state); printf(n);int main(void)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有效复习的试题及答案检索技巧
- 软件设计师考试重点知识回顾及试题及答案
- 计算机软件考试重难点分析试题及答案
- 综合能力的网络管理员试题及答案
- 动态学习VB考试的试题及答案
- 重要概念解析2025年计算机二级VB考试试题及答案
- NLP工具与技术应用试题及答案
- 风险管理在投资决策中的作用试题及答案
- 公司治理中的股东权利保护试题及答案
- 企业人力资源战略与风险应对试题及答案
- 节拍速度渐变的彩灯控制器
- (PEP)人教版五年级下册英语《Unit 5 Part B Let's talk》教学设计
- 巴西详细教案
- 基于PLC控制的物料分拣系统设计
- 上期开特下期出特公式
- 案件进度管理规定表--执行
- 人教部编版七年级历史下册教材插图汇总
- 建筑工程竣工验收报告山西
- 变更监事模板
- 前部分拼音四声调
- 标准工程量清单细目编号公路工程
评论
0/150
提交评论