【发布时间】:2013-03-15 00:55:57
【问题描述】:
这是一个分配问题,要求部分实现进程检查点:
测试程序分配一个数组,进行系统调用并将数组的开始和结束地址传递给调用。在系统调用函数中,我必须将给定范围内的内容保存到文件中。
据我了解,我可以简单地使用 copy_from_usr 函数来保存给定范围内的内容。但是,由于分配基于主题“进程地址空间”,我可能需要遍历页表。假设我设法获得与给定范围相对应的 struct pages。如何获取页面对应的数据?
我可以直接使用page_to_virt功能直接访问数据吗? 由于数组在虚拟空间中是连续的,我想我只需要将起始地址转换为页面,然后再转换回虚拟地址,然后只需将数据的范围大小复制到文件即可。对吗?
【问题讨论】:
-
我认为 copy_from_usr() 没问题。不需要其他任何东西。
标签: memory-management linux-kernel