2025 年操作系统大作业1
虚拟内存治理试验
在 Linux 环境下编写一个内核模块,分别实现如下几个函数:static void mtest_dump_vma_list(void):依次列出当前进程所占用的虚拟内存空间各段的读、写或执行权限
static void mtest_find_vma(unsigned long addr):查找出虚拟地址 addr 所在的 vma,并通过 printk 打印该段的起始地址、终止地址和段标志等信息
static void mtest_find_(unsigned long addr):找到虚拟地址 addr 对应的物理地址并打印
为了测试和使用以上函数,需要在内核模块的初始化函数中创立一个名为 mtest 的/proc 文件
mtest 文件绑定的写函数 mtest_write 允许用户程序写入一串字符串:假设写入的字符串是 listvma 则调用函数 mtest_dump_vma_list(void);假设写入的字符串是 findvma0xffffffff 则调用函数 mtest_find_vma(0xffffffff),字符串的后几个字符是传递给函数的参数;假设写入的字符串是 find0xffffffff 则调用函数 mtest_find_(0xffffffff),同样字符串的后几个字符是参数
试验要求:为了测试以上模块的正确性,需要编写一个小型的 test 应用程序,它翻开/proc/mtest 文件,并向其中写入字符串调用模块中的相关函数并给出相应的反响信息
学问储藏:虚拟存储空间治理的相关数据构造 vm_area_struct 和 mm_struct/proc 文件系统的相关学问内核模块的相关学问试验思路及过程:相关学问储藏:1
可以使用/proc 文件系统和 pmap 工具查看给定进程的内存空间和其