试验三Linux内存管理编程技术-副本
南京工程学院 实验报告书 课 程 名 称Linux 系统分析 实 验 名 称LinuxLinux内存管理编程技术内存管理编程技术 院系计算机工程学院 专业 班级 学 生 姓 名 学 生 学 号 指 导 教 师 成绩 实验目的和要求实验目的和要求 1 结合 Linux 系统调用进一步理解 malloc 2 学习内核模块编程技术 3 理解并实践内存缺页相关知识 实验条件实验条件 1、装有 Linux 操作系统的微型计算机; 实验过程实验过程 操作系统的发展使得系统完成了大部分的内存管理工作。对于程序员而言, 这些内存管理的过程完全透明不可见。因此,程序员开发时从不关心系统如何为 自己分配内存, 而且永远认为系统可以分配给程序所需要的内存。 在程序开发时, 程序员真正需要做的就是 申请内存、 使用内存、 释放内存, 其他一概无需过问。 1、申请内存、使用内存以及释放一块内存。 代码段 编译运行结果 2、在 Linux 下,用 malloc函数实现 cat 或 copy 命令。 代码段 编译运行结果 结果分析和 1.c 做比较,结果正确。 3、编程环境 什么是模块 内核模块的全称是动态可加载内核模块Loadable Kernel Modul,KLM,可以 动态载入内核,让它成为内核代码的一部分。 一个模块一般由一组函数和数据结构组成。 hello.c 代码如下 Makefile 代码如下 首先,编译,如下图 在命令行输入 modinfo hello.komodinfo 用来查看模块信息 insmod hello.ko加载模块 权限不够 lsmod查看已加载的模块,看看有没有 hello dmesg 最后一行输出 Hello OS Kernel rmmod 卸载模块 需要 su 权限,卸载后查看已加载模块,没有 hello 4、观察 CR3 寄存器 返回值为 Hello OS Kernel cr3 Goodbye OS Kernel 实验总结实验总结 这次实验是 Linux 内存管理编程技术, 通过这次实验, 我学会了如何在 Linux 系统申请内存、使用内存、释放内存。还了解了make 工具和 makefile 文件。在 编写大型程序时,可以使用 make 工具根据 makefile 文件的内容构建程序, 控制 从程序源文件中生成的可执行代码的过程。Makefile 文件列出了每一个非源程 序文件以及如何从其他文件构造这些文件的命令。 实验过程中遇到了许多困难, 指导书上没有给出,通过查阅资料发现了解决 方法。编写完程序和 makefile 文件后需要先用 make 编译,再加载模块,输出, 最后卸载模块。最后观察 CR3 寄存器 printkKERN_ALERT “cr3d”,iValue 不是非常清楚。 已上传百度文库 成绩评定成绩评定 项项目目 1. 1.实验态度实验态度 2. 2.实验报告组织逻辑性实验报告组织逻辑性 3. 3.实验报告格式规范性实验报告格式规范性 4. 4.实验完成情况实验完成情况 总评成绩总评成绩 总总分分 1010 3030 3030 3030 100100 成成绩绩 备注备注