操作系统实验报告
实验题目:存储管理
专 业 学 生 姓 名 班 级 学 号 指 导 教 师 沙超 指 导 单 位 计算机学院 日 期
-
教 师 评 语 教师签名: 年 月 日 成绩评定 备注-
一、实验目的
1、理解操作系统存储管理原理
操作系统的发展使得系统完成了大部分的内存管理工作。对于程序员而言,这些内存管理的过程完全透明不可见。因此,程序员开发时从不关心系统如何为自己分配内存,而且永远认为系统可以分配给程序所需要的内存。在程序开发时,程序员真正需要做的就是:申请内存、使用内存、释放内存,其他一概无需过问。
2、研读Linux 内存管理所用到的文件include/linux/mm.h,主要包括两个数据结构:mem_map、free_area
3、在Linux 下,用malloc()函数实现cat或copy命令。
二、实验指导
1、相关函数
1)内存动态分配函数 #include void *malloc(size_t size) 该函数分配指定大小size个字节的内存空间,成功时返回分配内存的指针(即所分配内存的地址)。该内存区域没有清空。 2) void free(void * addr); 该函数释放由malloc()分配的内存,addr是要释放内存空间的起始地址,并且addr必须是被以前malloc( )调用返回的。 2、参考程序 例程1:申请内存、使用内存以及释放一块内存 #include char * str; if ((str=(char*)malloc(10))==NULL) { printf(\"not enough memory to allocate buffer\\\\n\"); exit(1); } strcpy(str,\"hello\"); printf(\"string is %s\\\\n\free(str); return 0; } (要求:1、以自己的学号命名C程序;2、能够输出内存空间无法分配的信息) - 例程2:在打开文件后,通过fstat()获得文件长度,然后通过malloc()系统调用申请响应大小的内存空间,通过read()将文件内容完全读入该内存空间,并显示出来。 #include #include int fd,len; void *tp; struct stat ps; fd=open(“/home/jf03/try”,0); fstat(fd,&ps); len=ps.st_size; tp=malloc(len); read(fd,tp,len); printf(“%s\\\\n”,tp); close(fd); } (要求:1、以自己的姓名拼音命名C程序;2、能够输出你所要打开的文件大小) 三、实验步骤(附操作截图) - 四、运行结果及其结果分析(附结果截图) 五、思考题 1、为什么需要动态存储分配? - 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务