实验3内存管理
-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
深圳大学实验报告
课程名称:操作系统
实验项目名称:内存管理实验
学院:计算机与软件学院
专业:计算机科学与技术
指导教师:罗秋明
报告人:学号:班级:
实验时间: 2014-11-21 实验报告提交时间: 2014-11-30
教务部制
getchar();
a=(int*)malloc(pow(2,27)*sizeof(int));
b=(int*)malloc(pow(2,27)*sizeof(int));
c=(int*)malloc(pow(2,27)*sizeof(int));
printf("3 new space has already created.Type to free space b.\n"); getchar();
free(b);
printf("Space b is free.Type to create new space d.\n");
getchar();
d=(int*)malloc(pow(2,28)*sizeof(int));
printf("Space d has been created.\n");
getchar();
return 0;
}
运行代码,查看虚存空间。
在释放空间b前,存储空间如下:
用maps查看:
用status查看:
释放b空间后:
Maps:
Status:
建立新空间d后:
Maps: Status:
#include<stdio.h>
#include<stdlib.h>
int main(){
int i;
char *a[100000];
printf("The pid is:%d\n",getpid());
for(i=0;i<10000000000;i++){
a[i]=(char*)malloc(pow(2,30)*sizeof(char));//每次分配1G内存 if(a[i]==NULL){
printf("The max virtual memory is %d G\n",i);//输出内存
getchar();
break;
}
}
return 0;
}
输出结果:
用status查看更详细的内存使用情况:
由以上结果可以知道,虚存空间最大值为137436438472kB,约38633G。
(5)代码如下:
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
printf("The id is %d .\n",getpid());
int *a;
int i,n,k;
n=(int)pow(2,30);
k=(int)pow(2,12);
a=(int*)malloc(n*sizeof(int));//分配4G空间 //for(i=0;i<n;i++)
// a[i]=0;
// getchar();
printf("Type to value.\n");
getchar();
for(i=0;i<n;i+=k)
a[i]++;
printf("Type to end the program.\n");
getchar();
return 0;
}
运行:
分配空间前
分配空间后
数值加1后:
由第五题截图可以知道,①在对数值进行增一操作前,程序的物理内存基本没有变化,在444kB左右。
隔一定的距离给数值进行增一操作后,物理内存迅速增大到2045244kB。
②分配空间后,在增一操作前后虚拟内存基本没有变化,都是4198144kB。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。