免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1333 | 回复: 7
打印 上一主题 下一主题

[内存管理] 关于内存映射的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-08-14 15:00 |只看该作者 |倒序浏览
问题是这样的,我通过程序技术出了一个进程某个变量的物理地址,以及该物理地址的struct *page变量,然后再起一个进程,如何将该页通过映射到第2个进程的虚拟地址中,使得第2个进程能够访问到第一个进程变量的值。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-08-19 06:20:002015亚冠之本尤德科
日期:2015-08-31 23:24:47
2 [报告]
发表于 2015-08-15 00:47 |只看该作者
拿到了struct page,就可以通过page_to_phys获得该page对应的物理地址,然后可以在用户层的进程2中使用mmap映射该物理地址,得到一个虚拟地址,操作该虚拟地址即可。

论坛徽章:
0
3 [报告]
发表于 2015-08-16 21:55 |只看该作者
mmap可以通过直接操作物理地址映射到虚拟地址吗?有具体的例子吗?回复 2# 夕阳下的孤影


   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-08-19 06:20:002015亚冠之本尤德科
日期:2015-08-31 23:24:47
4 [报告]
发表于 2015-08-16 22:05 |只看该作者
回复 3# Zhangxian9

可以参考/dev/mem
一般要先拿到一个/dev/mem的句柄:fd=open("/dev/mem", O_RDWR|O_SYNC)
然后使用mmap:virt = mmap(NULL, PAGE_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, fd, phy_addr);
   

论坛徽章:
0
5 [报告]
发表于 2015-08-18 11:43 |只看该作者
尝试过了的确可以,但是需要创建字符设备,然后使用mmap映射到设备下,可以不创建字符设备而直接映射内存页面吗,回复 4# 夕阳下的孤影


   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-08-19 06:20:002015亚冠之本尤德科
日期:2015-08-31 23:24:47
6 [报告]
发表于 2015-08-19 22:48 |只看该作者
回复 5# Zhangxian9

应该没有别的方法吧,至少目前我不知道


   

论坛徽章:
0
7 [报告]
发表于 2015-08-20 09:13 |只看该作者
好的,谢谢了!回复 6# 夕阳下的孤影


   

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:0015-16赛季CBA联赛之吉林
日期:2016-03-23 17:25:0015-16赛季CBA联赛之浙江
日期:2016-04-01 08:25:0615-16赛季CBA联赛之山西
日期:2016-04-01 10:09:1915-16赛季CBA联赛之广夏
日期:2016-06-03 15:58:212016科比退役纪念章
日期:2016-07-28 17:42:5215-16赛季CBA联赛之广东
日期:2017-02-20 23:32:43
8 [报告]
发表于 2015-12-23 22:31 |只看该作者
接住代码!!!!!!


struct page *page = /* 已知的 page 结构体 */
struct task_struct *task;
struct vm_area_struct *vma;
struct file *file;
unsigned long pfn;
unsigned long addr;


task = /* 另外一个 task 的结构体 */
mm = task->mm;
vma = mm->mmap;
file = vma->vm_file;

pfn = page_to_pfn(page);
addr = pfn << PAGE_SHIFT;

do_mmap(file,addr,PAGE_SIZE,0,file->f_flags,0);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP