版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统深圳 大学实 验报告课程名称:实验项目名称:内存管理实验学院:计算机与软件学院专业:罗秋明报告人:学号:班级:计算机科学与技术指导教师:实验时间:2014-11-21实验报告提交时间:2014-11-30教务部制实验目的与要求:加深对内存分配与使用操作的直观认识;掌握Linux操作系统的内存分配与使用的编程接口;了解Linux操作系统中进程的逻辑编程地址与物理地址间的映射实验内容:可以使用Linux或其它Unix类操作系统; 学习该操作系统提供的分配、释放的函数使用方法 学习该操作系统提供的进程地址映射情况的工具实验过程、方法、步骤:操作部分:1) 借助google工具查找资料,学习使
2、用Linux进程的内存分配、释放函数;2) 借助google工具查找资料,学习Linux proc文件系统中关于内存影射的部分内容(了解/proc/pid/目录下的maps、status smap等几个文件内部信息的解读);3) 编写程序,连续申请分配三个512MB空间,然后释放第二个 512MB空间。然后再分配1024MB,记录该进程的虚存空间变化(/proc/pid/maps),每次操作前后检查/proc/pid/status文件中关于内存的情况,简要说明虚拟内存变化情况。4) 设计一个程序测试出您的系统单个进程所能分配到的最大虚拟内存空间为多大。5) 编写一个程序,分配256M内存空间(
3、或其她足够大的空间),检查分配前后/proc/pid/status文件中关于虚拟内存与物理内存的使用情况,然后每隔4KB间隔将相应地址的字节数值增1,再次检查/proc/pid/status文件中关于内存的情况,对比前后两次内存情况,说明所分配物理内存(物理内存块)的变化。在mem3、c中编写相关程序对指针a,b,c分别分配512M内存,然后释放b的512MB 空间。然后再分配1024MB。代码如下:#include<unistd、h>#include<stdio、h>#include<stdlib、h>#include<math、h>int m
4、ai n()prin tf("PID=%dn",getpid();int *d,*a,*b,*c;prin tf("Program beg ins、n ”);getchar();a=(i nt*)malloc(pow(2,27)*sizeof(i nt);b=(i nt*)malloc(pow(2,27)*sizeof(i nt);c=(i nt*)malloc(pow(2,27)*sizeof(i nt);printf("3 new space has already created、Type to free space b、n");getc
5、har();free(b);printf("Space b is free、Type to create new space d、n"); getchar();d=(i nt*)malloc(pow(2,28)*sizeof(i nt);printf("Space d has been created> n”); getchar();return 0;运行代码,查瞧虚存空间。在释放空间b前,存储空间如下:、r跻 osl4l0:*/ciciacicia f?ID-31SDPxogrdin teg 1ns 3 new space has aLrsady crea
6、ted,Type to fiee space D*用maps查瞧:用status查瞧:释放b空间后:slJ®103-/cida| a | E |f|asl4®IO cicia $ , ZuejiSPID=315O4Progran beg丄ns”3 new space has already created.Te tc tree spate £.Space 上 is rree. lype 20 create new space d.Maps:Status:建立新空间d后:Maps:Status:由以上结果可以瞧到,在分配内存空间前,程序的虚拟内存大小为3836kB,
7、 即3M分配连续三个512M的空间后,虚拟内存变成1576712kB=1539M=512M*3+3等于理论值。释放空间b后,内存空间大小变成 1052420kB=1027M=512M*2+3等于理论值。再建立一个 1024M的空间后,虚存 为2101000kB=2051M=1027M+1024等于理论值。而物理内存大小基本不变。Maps查瞧:分配内存前:34f457a000-34f457f000 rw-p 00000000 00:00 07f9df8004000-7f9df8007000 rw-p 00000000 00:007f9df801a000-7f9df801d000 rw-p 000
8、00000 00:00 0分配3个512M内存后:34f457a000-34f457f000 rw-p 00000000 00:00 07f9d98001000-7f9df8007000 rw-p 00000000 00:00 0 7f9df801a000-7f9df801d000 rw-p 00000000 00:00 0释放中间内存后:34f457a000-34f457f000 rw-p 00000000 00:00 0 7f9d98001000-7f9db8002000 rw-p 00000000 00:00 0 7f9dd8003000-7f9df8007000 rw-p 000000
9、00 00:00 0 7f9df801a000-7f9df801d000 rw-p 00000000 00:00 0创建1024M内存后:34f457a000-34f457f000 rw-p 00000000 00:00 0 7f9d58000000-7f9db8002000 rw-p 00000000 00:00 0 7f9dd8003000-7f9df8007000 rw-p 00000000 00:00 0 7f9df801a000-7f9df801d000 rw-p 00000000 00:00 0再由maps内存分配的情况瞧,在分配内存前,虚存地址为7f9df8004000-7f9d
10、f8007000 连续分配3个512M空间后,虚存地址变成了 7f9d98001000-7f9df8007000,显然首地址增加了。释放中间的 512M空间后,虚 存地分成了址 7f9d98001000-7f9db8002000 与 7f9dd8003000-7f9df8007000 两 个地址,虚存空间从中间截断,一分为二。此时再创建1024M空间后,虚存空间 变成 7f9d58000000-7f9db8002000 与 7f9dd8003000-7f9df8007000,结果正确。建立文件 mem4、c,代码实现如下:#include<unistd、h>#include<
11、math、h>#include<stdio、h>#include<stdlib、h>int mai n()int i;char *a100000;prin tf("The pid is:%dn",getpid();ai=(char*)malloc(pow(2,30)*sizeof(char);每次分配 1G 内存if(ai=NULL)prin tf("The max virtual memory is %d Gn",i); 输出内存 getchar();break;return 0;输出结果:用status查瞧更详细的内存使
12、用情况由以上结果可以知道,虚存空间最大值为2kB,约38633G(5)代码如下:#include<unistd、h>#include<stdio、h>#include<stdlib、h>#include<math、h>int mai n()printf("The id is %d、n",getpid();int *a;int i,n,k;n=(i nt)pow(2,30);k=(i nt)pow(2,12);a=(int*)malloc(n*sizeof(int); 分配 4G 空间 for(i=0;i< n; i+)/
13、ai=0;/ getchar();printf("Type to value、n”);getchar();for(i=0;i< n;i+=k)ai+;printf("Type to end the program、n”);getchar();return 0;运行:分配空间前分配空间后数值加1后:由第五题截图可以知道,在对数值进行增一操作前,程序的物理内存基 本没有变化,在444kB左右。隔一定的距离给数值进行增一操作后,物理内存迅 速增大到2045244kB分配空间后,在增一操作前后虚拟内存基本没有变化, 都就是4198144kB附:在maps文件中,一共有6列数据,其中: 第一列代表内存段的虚拟地址 第二列代表执行权限,r=可读,w=可写,x=可执行,p=私有s=共享 第三列代表在进程地址里的偏移量第四列映射文件的主设备号与次设备号 第五列映像文件的节点号,即in ode 第六列就是映像文件的路径实验结论:通过这次实验,我了解了用maps, status, smap 查瞧相关的文件信息以及
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合模机项目安全风险评价报告
- 无源液封水表行业行业发展趋势及投资战略研究分析报告
- 大学护理毕业生自我鉴定5篇
- 关于幼师自我鉴定模板锦集9篇
- 私人借款协议书
- 综合执法网络课程设计
- 测量专业实习报告范文七篇
- 艰苦的军训心得体会600字
- 旅游管理实习心得体会8篇
- 文员类实习报告模板集合六篇
- 聚酰胺酰亚胺实验报告
- 污水处理厂污泥处理处置投标方案
- 智能包装设计智慧树知到课后章节答案2023年下湖南工业大学
- 上海市交大二附中2024届数学七年级第一学期期末质量跟踪监视模拟试题含解析
- 丰田工作方法精髓-问题解决法(八步法)课件
- 老年人冬季健康保健知识讲座课件
- 老年病及老年综合征中医证治概要
- 三年级上册数学说课稿- 2.2 看一看(二)-北师大版
- 超星尔雅学习通《西厢记》赏析(首都师范大学)网课章节测试答案
- 切削液的配方
- 塑料门窗及型材功能结构尺寸
评论
0/150
提交评论