[发明专利]直接访问内存物理地址的方法和装置、系统及存储介质在审
申请号: | 202111510128.9 | 申请日: | 2021-12-10 |
公开(公告)号: | CN114356802A | 公开(公告)日: | 2022-04-15 |
发明(设计)人: | 聂世忠;张瑞忠 | 申请(专利权)人: | 北京镁伽科技有限公司 |
主分类号: | G06F12/1081 | 分类号: | G06F12/1081;G06F12/1045 |
代理公司: | 北京睿邦知识产权代理事务所(普通合伙) 11481 | 代理人: | 徐丁峰;戴亚南 |
地址: | 102208 北京市昌平区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 直接 访问 内存 物理地址 方法 装置 系统 存储 介质 | ||
本发明提供一种直接访问内存物理地址的方法和装置、系统及存储介质。直接访问内存物理地址的方法应用于操作系统的内核外的应用模块,该方法包括:获取当前进程在用户空间对应的目标内存物理地址;根据映射关系将目标内存物理地址映射为目标内存虚拟地址;直接访问目标内存虚拟地址。该技术方案无需将数据拷贝到内核空间中,数据传输访问过程简单,程序开发效率更高,且可以避免系统瘫痪,从而安全性高。
技术领域
本发明涉及软件开发技术领域,更具体地涉及一种直接访问内存物理地址的方法和装置、系统及存储介质。
背景技术
程序代码可以逻辑上直接控制物理地址,但是在具有操作系统的平台上,需要将代码分为两部分进行开发,一部分在内核空间、一部分在用户空间。在用户空间运行的程序代码需要通过内核空间才能访问物理地址。这种地址访问方式至少存在以下问题:
1.程序开发难度大。这是因为:内核空间程序代码量和模块数量都非常庞大,在原有硬件知识的基础上还需要掌握操作系统的知识,驱动的原理等,此外在调试内核程序时也比用户空间程序困难很多;
2.移植性差。这是因为:针对裸机开发的程序想要移植到具有操作系统的平台上,就需要在内核空间和用户空间两个层面上进行重新开发,因此移植性差;
3.在对物理地址进行数据读写时需要将数据拷贝到内核空间,因此过程比较复杂;
4.传统的地址访问方式需要针对内核进行程序开发,因此开发程序出问题时会导致整个系统瘫痪,故系统的可靠性比较差。
发明内容
考虑到上述问题而提出了本发明。本发明提供了一种直接访问内存物理地址的方法和装置、系统及存储介质。
根据本发明一方面,提供了一种直接访问内存物理地址的方法,应用于操作系统的内核外的应用模块,该方法包括:
获取当前进程在用户空间对应的目标内存物理地址;
根据映射关系将目标内存物理地址映射为目标内存虚拟地址;
直接访问目标内存虚拟地址。
示例性地,获取当前进程在用户空间对应的目标内存物理地址包括:
获取预先配置的内存物理地址作为目标内存物理地址;或者,
获取随机分配的内存物理地址作为目标内存物理地址。
示例性地,根据映射关系将目标内存物理地址映射为目标内存虚拟地址包括:
调用运行在内核空间内的内存管理单元;
通过内存管理单元根据映射关系将目标内存物理地址映射为目标内存虚拟地址。
示例性地,应用模块内预设有映射关系;
根据映射关系将目标内存物理地址映射为目标内存虚拟地址包括:
直接根据预设的映射关系将目标内存物理地址映射为目标内存虚拟地址。
示例性地,直接访问目标内存虚拟地址包括:
在目标内存虚拟地址上读取数据以获得目标数据,将目标数据返回给当前进程;和/或
直接向目标内存虚拟地址中写入目标数据。
示例性地,在直接访问目标内存虚拟地址之后,方法还包括:
解除目标内存虚拟地址与目标内存物理地址之间的映射,以释放目标内存虚拟地址。
示例性地,获取当前进程在用户空间对应的目标内存物理地址,包括:
通过内核外的预设硬件驱动获取当前进程在用户空间对应的目标内存物理地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京镁伽科技有限公司,未经北京镁伽科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111510128.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于深度学习自动预测阿尔茨海默症的方法和系统
- 下一篇:一种垂直觉训练椅