发明名称 |
一种进程间共享数据的方法、装置及终端 |
摘要 |
本申请公开一种进程间共享数据的方法、装置及终端,本申请将虚拟i/o设备分别映射至第一进程和第二进程的虚拟地址空间中,第一目标地址空间和第二目标地址空间相同;若第一进程需要共享数据,第一进程向操作系统传输内存分配请求,操作系统分配内存块,将内存块映射到第一目标地址空间,将内存块的信息和第一目标地址空间的第一地址段与内存块的映射关系存储至页表管理模块中。第二进程访问第一地址段中的虚拟地址,触发操作系统产生访问异常,指示虚拟i/o设备执行异常处理例程,将内存块映射至所述第二进程,以便第二进程能够访问内存块。本申请不需要预先分配共享内存,而在需要共享数据时,才由第一进程触发系统分配内存块,提高内存的利用效率。 |
申请公布号 |
CN105868028A |
申请公布日期 |
2016.08.17 |
申请号 |
CN201510037120.3 |
申请日期 |
2015.01.23 |
申请人 |
华为技术有限公司 |
发明人 |
李昶 |
分类号 |
G06F9/54(2006.01)I;G06F12/02(2006.01)I;G06F3/06(2006.01)I |
主分类号 |
G06F9/54(2006.01)I |
代理机构 |
北京弘权知识产权代理事务所(普通合伙) 11363 |
代理人 |
逯长明;许伟群 |
主权项 |
一种进程间共享数据的方法,其特征在于,包括:在第一进程和第二进程初始化的过程中,将操作系统创建的虚拟i/o设备分别映射到所述第一进程的虚拟地址空间和所述第二进程的虚拟地址空间中,其中,所述第一进程和第二进程均运行于所述操作系统中,设定所述虚拟i/o设备在所述第一进程中占用的虚拟地址空间为第一目标地址空间,所述虚拟i/o设备在所述第二进程中占用的虚拟地址空间为第二目标地址空间,所述第一目标地址空间和所述第二目标地址空间相同;将所述操作系统为所述第一进程分配的内存块映射到所述第一目标地址空间中,建立所述内存块与所述第一目标地址空间中的第一地址段的映射关系,并将所述内存块的信息以及所述映射关系存储至操作系统预先创建的页表管理模块中,其中,所述内存块是所述操作系统根据所述第一进程触发的内存分配请求分配的,所述内存块用于存储所述第一进程需要共享的数据;检测所述操作系统是否产生访问异常,其中,所述第二进程访问所述第一地址段中的虚拟地址时,触发所述操作系统产生访问异常;基于所述操作系统产生访问异常的检测结果,指示所述虚拟i/o设备执行异常处理例程,所述异常处理例程包括:获取触发所述操作系统产生访问异常时,所述第二进程访问的所述第一地址段的虚拟地址,并根据所述第一地址段的虚拟地址和所述页表管理模块中存储的所述内存块的信息以及所述映射关系,获取所述内存块的信息,根据所述内存块的信息,将所述内存块映射至所述第二进程,以便所述第二进程能够访问所述内存块,获取所述第一进程在所述内存块中存储的数据。 |
地址 |
518129 广东省深圳市龙岗区坂田华为总部办公楼 |