[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN105975407B - 一种内存地址的映射方法及设备 - Google Patents

一种内存地址的映射方法及设备 Download PDF

Info

Publication number
CN105975407B
CN105975407B CN201610164190.XA CN201610164190A CN105975407B CN 105975407 B CN105975407 B CN 105975407B CN 201610164190 A CN201610164190 A CN 201610164190A CN 105975407 B CN105975407 B CN 105975407B
Authority
CN
China
Prior art keywords
memory
address
service process
virtual
physical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610164190.XA
Other languages
English (en)
Other versions
CN105975407A (zh
Inventor
唐贵金
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610164190.XA priority Critical patent/CN105975407B/zh
Publication of CN105975407A publication Critical patent/CN105975407A/zh
Application granted granted Critical
Publication of CN105975407B publication Critical patent/CN105975407B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例公开了一种内存地址的映射方法及设备。本申请实施例中在进行内存地址映射时,第一业务进程通过申请得到物理内存,通过预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间确定该物理内存地址对应的虚拟内存地址,建立映射关系,创建共享内存区,同时第二业务进程获取与第一业务进程一样的内存大小和内存区标识创建相同的共享内存区,实现内存地址的映射,由于物理内存地址与虚拟内存地址之间的转换只需要通过预先计算的偏移值就可以得到,提高了物理内存地址与虚拟内存地址的转换效率。

Description

一种内存地址的映射方法及设备
技术领域
本发明涉及计算机技术领域,特别涉及一种内存地址的映射方法及设备。
背景技术
在Linux操作系统或者Unix操作系统中,mmap接口可将一个文件或者其它对象映射进内存,对文件或者其他对象的操作就可以像操作内存一样方便。一般用于进程间数据共享、用户态与内核态免拷贝数据共享、用户程序直接操作设备等场景。
操作系统中软件进程调用mmap接口映射一段物理内存空间,完成后返回该段物理内存空间对应的起始虚拟内存地址,软件建立了物理内存地址与虚拟内存地址的映射关系。软件与现场可编程门阵列(Field-Programmable Gate Array,FPGA)设备交互时,需要告诉FPGA存放待处理数据的物理内存地址,FPGA处理完后返回,软件读取处理结果时,需要先把存放处理结果的物理内存地址转换为虚拟内存地址。
当有多个进程需要与FPGA设备进行交互时,由于FPGA资源限制,无法与每个进程提供一对一的交互队列(比如有1000个进程与FPGA进行交互,如果需要每个进程都提供一对队列,则需要2000个队列,每个进程各有1个接收队列、1个发送队列)。因此,一般采用进程共享队列的方式,如图1所示,业务进程处理具体的业务,把需要处理的报文通过请求队列发送给FPGA;FPGA处理完毕后,把处理结果放入结果队列;转发进程从结果队列读取结果,并根据结果解析,报文属于哪个业务进程,转发给相应的业务进程,或者直接处理结果。
因此,转发进程必须能够识别结果队列的内容,解析内容的信息并处理,要求各个业务进程申请的物理内存空间与转发进程共享。在这种共享场景下,转发进程存在着多个内存区的地址映射关系,如果业务进程很多,或者每个业务进程创建的内存区很多,那么这个映射表条目将会更大,虚拟内存地址与物理内存地址的转换需要查表,转换效率低。
发明内容
本发明实施例提供了一种内存地址的映射方法及设备,提高了物理内存地址与虚拟内存地址的转换效率。
一方面,本申请实施例中提供一种内存地址的映射方法,该方法应用于目标设备中,所述目标设备为终端或服务器,所述目标设备中安装有操作系统,所述操作系统中包括至少一个业务进程,所述至少一个业务进程中包括第一业务进程和第二业务进程,所述方法包括:
通过所述第一业务进程生成第一内存申请请求,所述第一内存申请请求包括申请内存大小和内存区标识;
通过所述第一业务进程根据所述内存申请请求从预留的物理内存空间中分配第一物理内存地址,并根据预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址,所述虚拟内存空间通过所述物理内存空间确定;
通过所述第一业务进程建立所述第一物理内存地址对应的第一虚拟内存地址之间的映射关系,创建第一共享内存区;
通过所述第二业务进程获取所述申请内存大小和所述内存区标识;
通过所述第二业务进程根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
本申请实施例中在进行内存地址映射时,业务进程通过申请得到物理内存,通过预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间确定该物理内存地址对应的虚拟内存地址,建立映射关系,创建共享内存区,同时将内存大小和内存区标识通知给第二业务进程,以使得第二业务进程创建相同的共享内存区,实现内存地址的映射,由于物理内存地址与虚拟内存地址之间的转换只需要通过预先计算的偏移值就可以得到,提高了物理内存地址与虚拟内存地址的转换效率。
在一种可能的设计中,在所述根据预先计算的物理内存地址和虚拟内存地址的偏移值,计算所述第一物理内存地址对应的第一虚拟内存地址之前,可以预先计算好物理内存地址和虚拟内存地址之间的偏移值,以用作物理内存地址和虚拟内存地址之间计算的基准值。
此时,即在所述根据预先计算的物理内存地址和虚拟内存地址的偏移值,计算所述第一物理内存地址对应的第一虚拟内存地址之前,所述方法还可以包括:
计算物理内存地址和虚拟内存地址的偏移值,该物理内存地址和虚拟内存地址的偏移值可以是预留物理内存空间的起始地址(如phy_start)和预先分配的虚拟内存地址空间的起始地址(如vir_start)之间的偏移值:即例如偏移值offset=phy_start-vir_start。
在另一种可能的设计中,所述计算物理内存地址和虚拟内存地址的偏移值,可以包括:
获取所述物理内存空间的起始地址及所述物理内存空间的大小;
根据所述预留物理内存空间的起始地址及所述物理内存空间的大小,分配所述虚拟内存空间;
根据所述物理内存空间的起始地址和所述虚拟内存空间的起始地址,计算物理内存地址和虚拟内存地址的偏移值。
在另一种可能的设计中,所述虚拟内存空间中虚拟内存地址未分配前权限设置为不可访问;
在从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址之后,所述方法还包括:
在所述虚拟内存空间中将所述第一虚拟内存地址设置为仅供所述第一业务进程访问。
这样,进程只能访问分配给它的内存空间,而不能访问其他进程的内存空间或者未分配的内存空间,达到了内存隔离和保护的效果。
在另一种可能的设计中,所述通过所述第二业务进程获取所述申请内存大小和所述内存区标识,可以包括:
通过所述第一业务进程向所述第二业务进程发送通知消息,所述通知消息中包括所述申请内存大小和所述内存区标识;
通过所述第二业务进程接收所述通知消息,获取所述申请内存大小和所述内存区标识。
此种情况下,是业务进程通过发送通知消息的方式去通知第二业务进程所述申请内存大小和所述内存区标识,以使得第二业务进程创建与业务进程相同的共享内存区,实现内存地址的映射,可以理解的是,通过所述第二业务进程获取所述申请内存大小和所述内存区标识还可以是:通过在第二业务进程和业务进程预先约定相同的规则去获取所述申请内存大小和所述内存区标识,例如在第二业务进程和业务进程预先约定好申请内存大小和内存区标识,第二业务进程和业务进程获取约定好的所述申请内存大小和所述内存区标识。
在另一种可能的设计中,本申请实施例中可以有多个业务进程与第二业务进程之间创建共享内存区,此时,所述至少一个业务进程中还可以包括第三业务进程,所述方法还可以包括:
通过所述第三业务进程生成第二内存申请请求,所述第二内存申请请求包括申请内存大小和内存区标识;
通过所述第三业务进程根据所述内存申请请求从所述物理内存空间中分配第二物理内存地址,并根据预先计算的物理内存地址和虚拟内存地址的偏移值,从所述虚拟内存空间中分配所述第二物理内存地址对应的第二虚拟内存地址;
通过所述第三业务进程建立所述第二物理内存地址对应的第二虚拟内存地址之间的映射关系,创建第二共享内存区;
所述第二业务进程获取所述第二申请请求中的申请内存大小和所述内存区标识;
通过所述第二业务进程根据所述第二申请请求中的申请内存大小和所述内存区标识,创建所述第二共享内存区。
此时,本申请实施例中可以多个业务进程与第二业务进程之间创建共享内存区,实现多个内存地址的映射。
在另一种可能的设计中,所述至少一个业务进程中还包括第四业务进程,所述方法还包括:
获取所述申请内存大小和所述内存区标识;
通过所述第四业务进程根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
此种情况下,不管是什么进程,多少个进程,只有获取到相同的内存区标识和内存大小信息,根据该内存区标识和内存大小创建的内存区就是同一个共享内存区,实现了内存区的合理使用。
第二方面,本申请实施例提供一种设备,所述设备为终端或服务器,所述设备中包括至少一个处理器以及存储器,所述存储器中存储有操作系统,所述操作系统中包括至少一个业务进程,所述至少一个业务进程中包括第一业务进程和第二业务进程;所述第一业务进程包括业务模块和内存模块,所述第二业务进程包括业务模块和内存模块;
所述至少一个处理器用于运行存储在所述存储器中的进程以执行如下步骤:
通过所述第一业务进程的业务模块生成第一内存申请请求,所述第一内存申请请求包括申请内存大小和内存区标识;
通过所述第一业务进程的内存模块根据所述内存申请请求从预留的物理内存空间中分配第一物理内存地址,并根据预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址,所述虚拟内存空间通过所述物理内存空间确定;
通过所述第一业务进程的内存模块还用于建立所述第一物理内存地址对应的第一虚拟内存地址之间的映射关系,创建第一共享内存区;
通过所述第二业务进程的业务模块获取所述申请内存大小和所述内存区标识;
通过所述第二业务进程的内存模块根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
在一种可能的设计中,在所述第一业务进程的内存模块根据预先计算的物理内存地址和虚拟内存地址的偏移值,计算所述第一物理内存地址对应的第一虚拟内存地址之前,所述至少一个处理器具体用于通过所述第一业务进程的内存模块计算物理内存地址和虚拟内存地址的偏移值。
在另一种可能的设计中,所述至少一个处理器具体用于通过所述第一业务进程的内存模块获取所述物理内存空间的起始地址及所述物理内存空间的大小;根据所述预留物理内存空间的起始地址及所述物理内存空间的大小,分配所述虚拟内存空间;根据所述物理内存空间的起始地址和所述虚拟内存空间的起始地址,计算物理内存地址和虚拟内存地址的偏移值。
在另一种可能的设计中,所述虚拟内存空间中虚拟内存地址未分配前权限设置为不可访问;
在从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址之后,,所述至少一个处理器还用于通过所述第一业务进程的内存模块在所述虚拟内存空间中将所述第一虚拟内存地址设置为仅供所述第一业务进程访问。
在另一种可能的设计中,所述至少一个处理器具体用于通过所述第一业务进程的业务模块向所述第二业务进程的业务模块发送通知消息,所述通知消息中包括所述申请内存大小和所述内存区标识;
所述至少一个处理器具体还用于通过所述第二业务进程的业务模块接收所述通知消息,获取所述申请内存大小和所述内存区标识。
在另一种可能的设计中,所述至少一个业务进程中还包括第三业务进程,所述第三业务进程包括业务模块和内存模块;
所述至少一个处理器还用于通过所述第三业务进程的业务模块生成第二内存申请请求,所述第二内存申请请求包括申请内存大小和内存区标识;
所述至少一个处理器还用于通过所述第三业务进程的内存模块根据所述内存申请请求从预留的物理内存空间中分配第二物理内存地址,并根据预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间中分配所述第二物理内存地址对应的第二虚拟内存地址,所述虚拟内存空间通过所述物理内存空间确定;
所述至少一个处理器还用于通过所述第三业务进程的内存模块通建立所述第二物理内存地址对应的第二虚拟内存地址之间的映射关系,创建第二共享内存区;
所述至少一个处理器还用于通过所述第二业务进程的业务模块获取所述第二申请请求中的申请内存大小和所述内存区标识;
所述至少一个处理器还用于通过所述第二业务进程的内存模块根据所述第二申请请求中的申请内存大小和所述内存区标识,创建所述第二共享内存区。
在另一种可能的设计中,所述至少一个业务进程中还包括第四业务进程,所述第四业务进程包括业务模块和内存模块;
所述至少一个处理器还用于运行存储在所述存储器中的进程以执行如下步骤:
通过所述第四业务进程的业务模块获取所述申请内存大小和所述内存区标识;
通过所述第四业务进程的内存模块根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
从以上技术方案可以看出,本发明实施例具有以下优点:
本申请实施例中在进行内存地址映射时,第一业务进程通过申请得到物理内存,通过预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间确定该物理内存地址对应的虚拟内存地址,建立映射关系,创建共享内存区,同时将内存大小和内存区标识通知给第二业务进程,以使得第二业务进程创建相同的共享内存区,实现内存地址的映射,由于物理内存地址与虚拟内存地址之间的转换只需要通过预先计算的偏移值就可以得到,提高了物理内存地址与虚拟内存地址的转换效率。
附图说明
图1是现有技术内存地址的映射方法的系统框架图;
图2是本发明实施例中第一业务进程和第二业务进程的模块图;
图3是本发明实施例中内存地址的映射方法的一个实施例示意图;
图4是本发明实施例中内存地址的映射方法的另一个实施例示意图;
图5是本发明实施例中设备的另一个实施例示意图。
具体实施方式
本发明实施例提供了一种内存地址的映射方法及设备,提高了物理内存地址与虚拟内存地址的转换效率。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例中应用在目标设备中,该目标可以是终端或者服务器,所述目标设备中安装有操作系统,该操作系统可以是Linux操作系统或者Unix操作系统,所述操作系统中包括至少一个业务进程,所述至少一个业务进程包括第一业务进程和第二业务进程,第二业务进程和第一业务进程之间的的关系可以如图2所示,其中,每个业务进程中均可以包括业务模块和内存模块,业务模块用于接收或发送报文消息,内存模块用于管理、分配物理内存空间和虚拟内存空间,其中,第二业务进程的业务模块和第一业务进程的业务模块之间建立连接,第一业务进程、第二业务进程各自中的业务模块和内存模块之间可以交互信息。
下面介绍本申请实施例中内存地址的映射方法。
请参阅图3,本发明实施例中内存地址的映射方法的一个实施例包括:
301、通过所述第一业务进程生成第一内存申请请求;
其中,所述第一内存申请请求包括申请内存大小和内存区标识;
302、通过所述第一业务进程根据所述内存申请请求从预留的物理内存空间中分配第一物理内存地址;
303、根据预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址;
其中,所述虚拟内存空间通过所述物理内存空间确定;
本申请实施例中,在所述根据预先计算的物理内存地址和虚拟内存地址的偏移值,计算所述第一物理内存地址对应的第一虚拟内存地址之前,可以预先计算好物理内存地址和虚拟内存地址之间的偏移值,以用作物理内存地址和虚拟内存地址之间计算的基准值。
此时,即在所述根据预先计算的物理内存地址和虚拟内存地址的偏移值,计算所述第一物理内存地址对应的第一虚拟内存地址之前,所述方法还可以包括:
计算物理内存地址和虚拟内存地址的偏移值,该物理内存地址和虚拟内存地址的偏移值可以是预留物理内存空间的起始地址(如phy_start)和预先分配的虚拟内存地址空间的起始地址(如vir_start)之间的偏移值:即例如偏移值offset=phy_start-vir_start。
具体的,所述计算物理内存地址和虚拟内存地址的偏移值,可以包括:
获取所述物理内存空间的起始地址及所述物理内存空间的大小;
根据所述预留物理内存空间的起始地址及所述物理内存空间的大小,分配所述虚拟内存空间;
根据所述物理内存空间的起始地址和所述虚拟内存空间的起始地址,计算物理内存地址和虚拟内存地址的偏移值。
304、通过所述第一业务进程建立所述第一物理内存地址对应的第一虚拟内存地址之间的映射关系,创建第一共享内存区;
305、通过所述第二业务进程获取所述申请内存大小和所述内存区标识;
可选的,所述通过所述第二业务进程获取所述申请内存大小和所述内存区标识,可以有多种方式,具体可以如下:
(1)所述通过所述第二业务进程获取所述申请内存大小和所述内存区标识,包括:通过所述第一业务进程向所述第二业务进程发送通知消息,所述通知消息中包括所述申请内存大小和所述内存区标识;通过所述第二业务进程接收所述通知消息,获取所述申请内存大小和所述内存区标识。
(2)通过在第二业务进程和业务进程预先约定相同的规则去获取所述申请内存大小和所述内存区标识,例如在第二业务进程和业务进程预先约定好申请内存大小和内存区标识,第二业务进程和业务进程获取约定好的所述申请内存大小和所述内存区标识。
306、通过所述第二业务进程根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
本申请实施例中在进行内存地址映射时,业务进程通过申请得到物理内存,通过预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间确定该物理内存地址对应的虚拟内存地址,建立映射关系,创建共享内存区,同时将内存大小和内存区标识通知给第二业务进程,以使得第二业务进程创建相同的共享内存区,实现内存地址的映射,由于物理内存地址与虚拟内存地址之间的转换只需要通过预先计算的偏移值就可以得到,提高了物理内存地址与虚拟内存地址的转换效率。
可选的,所述虚拟内存空间中虚拟内存地址未分配前权限设置为不可访问;在从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址之后,所述方法还包括:
在所述虚拟内存空间中将所述第一虚拟内存地址设置为仅供所述第一业务进程访问。
这样,进程只能访问分配给它的内存空间,而不能访问其他进程的内存空间或者未分配的内存空间,达到了内存隔离和保护的效果。
可选的,本申请实施例中可以有多个业务进程与第二业务进程之间创建共享内存区,此时,所述至少一个业务进程中还可以包括第三业务进程,所述方法还可以包括:
通过所述第三业务进程生成第二内存申请请求,所述第二内存申请请求包括申请内存大小和内存区标识;
通过所述第三业务进程根据所述内存申请请求从所述物理内存空间中分配第二物理内存地址,并根据预先计算的物理内存地址和虚拟内存地址的偏移值,从所述虚拟内存空间中分配所述第二物理内存地址对应的第二虚拟内存地址;
通过所述第三业务进程建立所述第二物理内存地址对应的第二虚拟内存地址之间的映射关系,创建第二共享内存区;
所述第二业务进程获取所述第二申请请求中的申请内存大小和所述内存区标识;
通过所述第二业务进程根据所述第二申请请求中的申请内存大小和所述内存区标识,创建所述第二共享内存区。
所述至少一个业务进程中还包括第四业务进程,所述方法还包括:
获取所述申请内存大小和所述内存区标识;
通过所述第四业务进程根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
此种情况下,不管是什么进程,多少个进程,只有获取到相同的内存区标识和内存大小信息,根据该内存区标识和内存大小创建的内存区就是同一个共享内存区,实现了内存区的合理使用。
为了便于更好的理解技术,下面实施例以一具体应用场景对上述实施例中描述的内存地址的方法进行详细描述。
如图4所示,某终端的linux系统有三个业务进程:业务进程1、业务进程2和业务进程3,各进程都包括业务模块和内存模块,各进程初始化时,各进程的内存模块获取系统预留内存的起始物理地址phy_start=0x3c8000000及大小phy_size=0x40000000;然后调用open接口创建一个新文件,文件名为“mem_vap”,如fd=open("mem_vap",O_RDONLY|O_CREAT);创建文件成功后调用mmap接口申请虚拟内存,大小为物理内存的大小0x40000000,如mmap(NULL,0x40000000,PROT_NONE,MAP_PRIVATE,fd,0)。
三个业务进程分别返回系统分配的起始虚拟内存地址为:
vir_start_1=0x7fffb0000000;
vir_start_2=0x7fffa0000000;
vir_start_3=0x7fff00000000。
各进程根据Step1的起始虚拟内存地址,计算得到的偏移值分别为offset_1=0x7ffbe8000000,offset_2=0x7ffbd8000000,offset_3=0x7ffb38000000。
业务进程1的业务模块申请32MB的共享内存,调用内存模块的申请函数shm_alloc(0x2000000,shared,“p1_share_1”);内存模块根据分配算法,得到物理地址为0x3c8000000,并计算对应的虚拟内存为0x3c8000000+0x7ffbe8000000=0x7fffb0000000。
业务进程1的内存模块调用munmap函数解除Step1申请的内存空间,大小为32MB,munmap(0x7fffb0000000,0x2000000)。
业务进程1的内存模块调用mmap函数建立分配的物理内存地址与虚拟内存地址的映射关系。首先打开设备fd=open("/dev/mem",O_RDWR,S_IRUSR|S_IWUSR),然后调用mmap(0x7fffb0000000,0x2000000,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_FIXED,0x3c8000000)。
业务进程1的内存模块返回0x7fffb0000000给业务进程1的业务模块。
业务进程1的业务模块发送通知消息给业务进程3的业务模块,参数为0x2000000,shared,“p1_share_1”。
业务进程3的业务模块收到消息后,调用业务进程3的内存模块申请共享内存,例如,shm_alloc(0x2000000,shared,“p1_share_1”)。
业务进程3的内存模块根据申请的名字“p1_share_1”,确定该名字对应的内存区的物理内存为0x3c8000000。计算对应的虚拟内存为0x3c8000000+0x7ffb38000000=0x7fff00000000。
业务进程3的内存模块调用munmap解除Step1申请的内存空间,大小为32MB,munmap(0x7fff00000000,0x2000000)。
业务进程3的内存模块调用mmap建立分配的物理内存地址与虚拟内存地址的映射关系。首先打开设备fd=open("/dev/mem",O_RDWR,S_IRUSR|S_IWUSR),然后调用mmap(0x7fff00000000,0x2000000,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_FIXED,0x3c8000000)。
业务进程3的内存模块返回0x7fff00000000给业务进程3的业务模块。
至此,在业务进程与业务进程3间建立了共享内存区,建立的共享内存区的虚拟地址是通过分配的物理地址加上初始化时确定的偏移值得到的。业务进程1、或者其他的业务进程重复上述的步骤就可以建立多个共享内存区,如“图4内存区映射图”所示,业务进程1建立了两个共享内存区、业务进程2建立了一个共享内存区。
下面介绍本发明实施例中设备的实施例。
请参阅图5,为本申请实施例中设备500的一个实施例,所述设备为终端或服务器所述设备中包括至少一个处理器以及存储器,所述存储器中存储有操作系统,所述操作系统中包括至少一个业务进程,所述至少一个业务进程中包括第一业务进程(业务进程1)和第二业务进程(业务进程2);所述第一业务进程包括业务模块和内存模块,所述第二业务进程包括业务模块和内存模块;本领域技术人员可以理解,图5中示出的设备的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
所述至少一个处理器用于运行存储在所述存储器中的进程以执行如下步骤:
通过所述第一业务进程的业务模块生成第一内存申请请求,所述第一内存申请请求包括申请内存大小和内存区标识;
通过所述第一业务进程的内存模块根据所述内存申请请求从预留的物理内存空间中分配第一物理内存地址,并根据预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址,所述虚拟内存空间通过所述物理内存空间确定;
通过所述第一业务进程的内存模块还用于建立所述第一物理内存地址对应的第一虚拟内存地址之间的映射关系,创建第一共享内存区;
通过所述第二业务进程的业务模块获取所述申请内存大小和所述内存区标识;
通过所述第二业务进程的内存模块根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
可选的,在所述第一业务进程的内存模块根据预先计算的物理内存地址和虚拟内存地址的偏移值,计算所述第一物理内存地址对应的第一虚拟内存地址之前,所述至少一个处理器具体用于通过所述第一业务进程的内存模块计算物理内存地址和虚拟内存地址的偏移值。
可选的,所述至少一个处理器具体用于通过所述第一业务进程的内存模块获取所述物理内存空间的起始地址及所述物理内存空间的大小;根据所述预留物理内存空间的起始地址及所述物理内存空间的大小,分配所述虚拟内存空间;根据所述物理内存空间的起始地址和所述虚拟内存空间的起始地址,计算物理内存地址和虚拟内存地址的偏移值。
可选的,所述虚拟内存空间中虚拟内存地址未分配前权限设置为不可访问;
在从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址之后,所述至少一个处理器还用于通过所述第一业务进程的内存模块在所述虚拟内存空间中将所述第一虚拟内存地址设置为仅供所述第一业务进程访问。
可选的,所述至少一个处理器具体用于通过所述第一业务进程的业务模块向所述第二业务进程的业务模块发送通知消息,所述通知消息中包括所述申请内存大小和所述内存区标识;
所述至少一个处理器具体还用于通过所述第二业务进程的业务模块接收所述通知消息,获取所述申请内存大小和所述内存区标识。
可选的,所述至少一个业务进程中还包括第三业务进程,所述第三业务进程包括业务模块和内存模块;
所述至少一个处理器还用于通过所述第三业务进程的业务模块生成第二内存申请请求,所述第二内存申请请求包括申请内存大小和内存区标识;
所述至少一个处理器还用于通过所述第三业务进程的内存模块根据所述内存申请请求从预留的物理内存空间中分配第二物理内存地址,并根据预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间中分配所述第二物理内存地址对应的第二虚拟内存地址,所述虚拟内存空间通过所述物理内存空间确定;
所述至少一个处理器还用于通过所述第三业务进程的内存模块通建立所述第二物理内存地址对应的第二虚拟内存地址之间的映射关系,创建第二共享内存区;
所述至少一个处理器还用于通过所述第二业务进程的业务模块获取所述第二申请请求中的申请内存大小和所述内存区标识;
所述至少一个处理器还用于通过所述第二业务进程的内存模块根据所述第二申请请求中的申请内存大小和所述内存区标识,创建所述第二共享内存区。
可选的,所述至少一个业务进程中还包括第四业务进程,所述第四业务进程包括业务模块和内存模块;
所述至少一个处理器还用于运行存储在所述存储器中的进程以执行如下步骤:
通过所述第四业务进程的业务模块获取所述申请内存大小和所述内存区标识;
通过所述第四业务进程的内存模块根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
本申请实施例中,所述处理器可以由集成电路(英文全称:Integrated Circuit,缩写:IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器可以仅包括中央处理器(英文全称:CentralProcessing Unit,缩写:CPU),也可以是GPU、数字信号处理器(英文全称:Digital SignalProcessor,缩写:DSP)、及通信管理模块中的控制芯片(例如基带芯片)的组合。在本发明实施方式中,CPU可以是单运算核心,也可以包括多运算核心。
如图5所示,在本申请的一些实施例中,本申请实施例中设备还可以包括通信装置、输入装置、输出装置、外设接口以及电源等,此处不作限定。
其中,输入装置用于实现用户与所述设备的交互和/或信息输入到所述设备中。例如,输入装置可以接收用户输入的数字或字符信息,以产生与用户设置或功能控制有关的信号输入。在本发明具体实施方式中,输入装置可以是触控面板,也可以是其他人机交互界面,例如实体输入键、麦克风等,还可是其他外部信息撷取装置,例如摄像头等。触控面板,也称为触摸屏或触控屏,可收集用户在其上触摸或接近的操作动作。比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或接近触控面板的位置的操作动作,并根据预先设定的程式驱动相应的连接装置。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸操作,并将检测到的触摸操作转换为电信号,以及将所述电信号传送给触摸控制器;触摸控制器从触摸检测装置上接收所述电信号,并将它转换成触点坐标,再送给处理器单元。所述触摸控制器还可以接收处理单元发来的命令并执行。此外,可以采用电阻式、电容式、红外线(Infrared)以及表面声波等多种类型实现触控面板。在本发明的其他实施方式中,输入装置所采用的实体输入键可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。麦克风形式的输入装置可以收集用户或环境输入的语音并将其转换成电信号形式的、处理单元可执行的命令。
在本申请的其他一些实施方式中,所述输入装置还可以是各类传感器件,例如霍尔器件,用于侦测所述设备的物理量,例如力、力矩、压力、应力、位置、位移、速度、加速度、角度、角速度、转数、转速以及工作状态发生变化的时间等,转变成电量来进行检测和控制。其他的一些传感器件还可以包括重力感应计、三轴加速计、陀螺仪、电子罗盘、环境光传感器、接近传感器、温度传感器、湿度传感器、压力传感器、心率传感器、指纹识别器等。
输出装置包括但不限于影像输出装置和声音输出装置。影像输出装置用于输出文字、图片和/或视频。所述影像输出装置可包括显示面板,例如采用LCD(Liquid CrystalDisplay,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)、场发射显示器(英文全称:field emission display,缩写:FED)等形式来配置的显示面板。或者所述影像输出装置可以包括反射式显示器,例如电泳式(electrophoretic)显示器,或利用光干涉调变技术(Interferometric Modulation of Light)的显示器。所述影像输出装置可以包括单个显示器或不同尺寸的多个显示器。在本发明的具体实施方式中,上述输入装置所采用的触控面板亦可同时作为输出装置的显示面板。例如,当触控面板检测到在其上的触摸或接近的手势操作后,传送给处理单元以确定触摸事件的类型,随后处理单元根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图5中,输入装置与输出装置是作为两个独立的部件来实现所述设备的输入和输出功能,但是在某些实施例中,可以将触控面板与显示面板集成一体而实现所述设备的输入和输出功能。例如,所述影像输出装置可以显示各种图形化用户接口(英文全称:Graphical User Interface,缩写:GUI)以作为虚拟控制组件,包括但不限于窗口、卷动轴、图标及剪贴簿,以供用户通过触控方式进行操作。
在本发明具体实施方式中,影像输出装置包括滤波器及放大器,用来将处理单元所输出的视频滤波及放大。音频输出装置包括数字模拟转换器,用来将处理单元所输出的音频信号从数字格式转换为模拟格式。
通信装置可以用于建立通信信道,使所述设备通过所述通信信道与远端电子设备或服务器进行语音通信、文字通信、数据通信。所述通信装置可以包括无线局域网(英文全称:Wireless Local Area Network,缩写:WLAN)模块、蓝牙模块、基带(Base Band)模块等通信模块,以及所述通信模块对应的射频(英文全称:Radio Frequency,缩写:RF)电路,用于进行无线局域网络通信、蓝牙通信、红外线通信及/或蜂窝式通信系统通信,例如宽带码分多重接入(英文全称:Wideband Code Division Multiple Access,缩写:WCDMA)及/或高速下行封包存取(英文全称:High Speed Downlink Packet Access,缩写:HSDPA)。所述通信模块用于控制所述设备中的各组件的通信,并且可以支持直接内存存取(Direct MemoryAccess)。
在本发明的不同实施方式中,所述通信装置中的各种通信模块一般以集成电路芯片(Integrated Circuit Chip)的形式出现,并可进行选择性组合,而不必包括所有通信模块及对应的天线组。例如,所述通信装置可以仅包括基带芯片、射频芯片以及相应的天线以在一个蜂窝通信系统中提供通信功能。经由所述通信装置建立的无线通信连接,例如无线局域网接入或WCDMA接入,所述设备可以连接至蜂窝网(Cellular Network)或因特网(Internet)。
射频电路用于信息收发或通话过程中接收和发送信号。例如,将基站的下行信息接收后,给处理单元处理;另外,将设计上行的数据发送给基站。通常,所述射频电路包括用于执行这些功能的公知电路,包括但不限于天线系统、射频收发机、一个或多个放大器、调谐器、一个或多个振荡器、数字信号处理器、编解码(Codec)芯片组、用户身份模块(SIM)卡、存储器等等。此外,射频电路还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobilecommunication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband CodeDivision Multiple Access,宽带码分多址)、高速下行链路分组接入技术(High SpeedDownlink Packet Access,HSDPA)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的至少内存地址的映射的方法的部分或全部步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (15)

1.一种内存地址的映射方法,其特征在于,应用于目标设备中,所述目标设备为终端或服务器,所述目标设备中安装有操作系统,所述操作系统中包括至少一个业务进程,所述至少一个业务进程中包括第一业务进程和第二业务进程,所述方法包括:
通过所述第一业务进程生成第一内存申请请求,所述第一内存申请请求包括申请内存大小和内存区标识;
通过所述第一业务进程根据所述内存申请请求从预留的物理内存空间中分配第一物理内存地址,并根据预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址,所述虚拟内存空间通过所述物理内存空间确定,所述偏移值用作物理内存地址和虚拟内存地址之间计算的基准值;
通过所述第一业务进程建立所述第一物理内存地址对应的第一虚拟内存地址之间的映射关系,创建第一共享内存区;
通过所述第二业务进程获取所述申请内存大小和所述内存区标识;
通过所述第二业务进程根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
2.根据权利要求1所述的方法,其特征在于,在所述根据预先计算的物理内存地址和虚拟内存地址的偏移值,计算所述第一物理内存地址对应的第一虚拟内存地址之前,所述方法还包括:
计算物理内存地址和虚拟内存地址的偏移值。
3.根据权利要求2所述的方法,其特征在于,所述计算物理内存地址和虚拟内存地址的偏移值,包括:
获取所述物理内存空间的起始地址及所述物理内存空间的大小;
根据预留物理内存空间的起始地址及所述物理内存空间的大小,分配所述虚拟内存空间;
根据所述物理内存空间的起始地址和所述虚拟内存空间的起始地址,计算物理内存地址和虚拟内存地址的偏移值。
4.根据权利要求1至3中任一所述的方法,其特征在于,所述虚拟内存空间中虚拟内存地址未分配前权限设置为不可访问;
在从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址之后,所述方法还包括:
在所述虚拟内存空间中将所述第一虚拟内存地址设置为仅供所述第一业务进程访问。
5.根据权利要求1至3中任一所述的方法,其特征在于,
所述通过所述第二业务进程获取所述申请内存大小和所述内存区标识,包括:
通过所述第一业务进程向所述第二业务进程发送通知消息,所述通知消息中包括所述申请内存大小和所述内存区标识;
通过所述第二业务进程接收所述通知消息,获取所述申请内存大小和所述内存区标识。
6.根据权利要求1至3中任一所述的方法,其特征在于,
所述至少一个业务进程中还包括第三业务进程,所述方法还包括:
通过所述第三业务进程生成第二内存申请请求,所述第二内存申请请求包括申请内存大小和内存区标识;
通过所述第三业务进程根据所述内存申请请求从所述物理内存空间中分配第二物理内存地址,并根据预先计算的物理内存地址和虚拟内存地址的偏移值,从所述虚拟内存空间中分配所述第二物理内存地址对应的第二虚拟内存地址;
通过所述第三业务进程建立所述第二物理内存地址对应的第二虚拟内存地址之间的映射关系,创建第二共享内存区;
所述第二业务进程获取所述第二内存申请请求中的申请内存大小和所述内存区标识;
通过所述第二业务进程根据所述第二内存申请请求中的申请内存大小和所述内存区标识,创建所述第二共享内存区。
7.根据权利要求1至3中任一所述的方法,其特征在于,
所述至少一个业务进程中还包括第四业务进程,所述方法还包括:
获取所述申请内存大小和所述内存区标识;
通过所述第四业务进程根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
8.一种终端,其特征在于,所述终端中包括至少一个处理器以及存储器,所述存储器中存储有操作系统,所述操作系统中包括至少一个业务进程,所述至少一个业务进程中包括第一业务进程和第二业务进程;所述第一业务进程包括业务模块和内存模块,所述第二业务进程包括业务模块和内存模块;
所述至少一个处理器用于运行存储在所述存储器中的进程以执行如下步骤:
通过所述第一业务进程的业务模块生成第一内存申请请求,所述第一内存申请请求包括申请内存大小和内存区标识;
通过所述第一业务进程的内存模块根据所述内存申请请求从预留的物理内存空间中分配第一物理内存地址,并根据预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址,所述虚拟内存空间通过所述物理内存空间确定,所述偏移值用作物理内存地址和虚拟内存地址之间计算的基准值;
通过所述第一业务进程的内存模块还用于建立所述第一物理内存地址对应的第一虚拟内存地址之间的映射关系,创建第一共享内存区;
通过所述第二业务进程的业务模块获取所述申请内存大小和所述内存区标识;
通过所述第二业务进程的内存模块根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
9.根据权利要求8所述终端,其特征在于,在所述第一业务进程的内存模块根据预先计算的物理内存地址和虚拟内存地址的偏移值,计算所述第一物理内存地址对应的第一虚拟内存地址之前,所述至少一个处理器具体用于通过所述第一业务进程的内存模块计算物理内存地址和虚拟内存地址的偏移值。
10.根据权利要求9所述的终端,其特征在于,所述至少一个处理器具体用于通过所述第一业务进程的内存模块获取所述物理内存空间的起始地址及所述物理内存空间的大小;根据预留物理内存空间的起始地址及所述物理内存空间的大小,分配所述虚拟内存空间;根据所述物理内存空间的起始地址和所述虚拟内存空间的起始地址,计算物理内存地址和虚拟内存地址的偏移值。
11.根据权利要求8至10中任一所述的终端,其特征在于,所述虚拟内存空间中虚拟内存地址未分配前权限设置为不可访问;
在从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址之后,所述至少一个处理器还用于通过所述第一业务进程的内存模块在所述虚拟内存空间中将所述第一虚拟内存地址设置为仅供所述第一业务进程访问。
12.根据权利要求8至10中任一所述的终端,其特征在于,
所述至少一个处理器具体用于通过所述第一业务进程的业务模块向所述第二业务进程的业务模块发送通知消息,所述通知消息中包括所述申请内存大小和所述内存区标识;
所述至少一个处理器具体还用于通过所述第二业务进程的业务模块接收所述通知消息,获取所述申请内存大小和所述内存区标识。
13.根据权利要求8至10中任一所述的终端,其特征在于,所述至少一个业务进程中还包括第三业务进程,所述第三业务进程包括业务模块和内存模块;
所述至少一个处理器还用于通过所述第三业务进程的业务模块生成第二内存申请请求,所述第二内存申请请求包括申请内存大小和内存区标识;
所述至少一个处理器还用于通过所述第三业务进程的内存模块根据所述内存申请请求从预留的物理内存空间中分配第二物理内存地址,并根据预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间中分配所述第二物理内存地址对应的第二虚拟内存地址,所述虚拟内存空间通过所述物理内存空间确定;
所述至少一个处理器还用于通过所述第三业务进程的内存模块通建立所述第二物理内存地址对应的第二虚拟内存地址之间的映射关系,创建第二共享内存区;
所述至少一个处理器还用于通过所述第二业务进程的业务模块获取所述第二内存申请请求中的申请内存大小和所述内存区标识;
所述至少一个处理器还用于通过所述第二业务进程的内存模块根据所述第二内存申请请求中的申请内存大小和所述内存区标识,创建所述第二共享内存区。
14.根据权利要求8至10中任一所述的终端,其特征在于,所述至少一个业务进程中还包括第四业务进程,所述第四业务进程包括业务模块和内存模块;
所述至少一个处理器还用于运行存储在所述存储器中的进程以执行如下步骤:
通过所述第四业务进程的业务模块获取所述申请内存大小和所述内存区标识;
通过所述第四业务进程的内存模块根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
15.一种服务器,其特征在于,所述服务器中包括至少一个处理器以及存储器,所述存储器中存储有操作系统,所述操作系统中包括至少一个业务进程,所述至少一个业务进程中包括第一业务进程和第二业务进程;所述第一业务进程包括业务模块和内存模块,所述第二业务进程包括业务模块和内存模块;
所述至少一个处理器用于运行存储在所述存储器中的进程以执行如下步骤:
通过所述第一业务进程的业务模块生成第一内存申请请求,所述第一内存申请请求包括申请内存大小和内存区标识;
通过所述第一业务进程的内存模块根据所述内存申请请求从预留的物理内存空间中分配第一物理内存地址,并根据预先计算的物理内存地址和虚拟内存地址的偏移值,从预先确定的虚拟内存空间中分配所述第一物理内存地址对应的第一虚拟内存地址,所述虚拟内存空间通过所述物理内存空间确定,所述偏移值用作物理内存地址和虚拟内存地址之间计算的基准值;
通过所述第一业务进程的内存模块还用于建立所述第一物理内存地址对应的第一虚拟内存地址之间的映射关系,创建第一共享内存区;
通过所述第二业务进程的业务模块获取所述申请内存大小和所述内存区标识;
通过所述第二业务进程的内存模块根据所述申请内存大小和所述内存区标识,创建所述第一共享内存区。
CN201610164190.XA 2016-03-22 2016-03-22 一种内存地址的映射方法及设备 Active CN105975407B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610164190.XA CN105975407B (zh) 2016-03-22 2016-03-22 一种内存地址的映射方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610164190.XA CN105975407B (zh) 2016-03-22 2016-03-22 一种内存地址的映射方法及设备

Publications (2)

Publication Number Publication Date
CN105975407A CN105975407A (zh) 2016-09-28
CN105975407B true CN105975407B (zh) 2020-10-09

Family

ID=56988695

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610164190.XA Active CN105975407B (zh) 2016-03-22 2016-03-22 一种内存地址的映射方法及设备

Country Status (1)

Country Link
CN (1) CN105975407B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649133B (zh) * 2016-12-29 2019-12-06 杭州迪普科技股份有限公司 Pci内存空间的优化方法和设备
CN107329790B (zh) * 2017-06-30 2021-01-15 联想(北京)有限公司 一种数据处理方法和电子设备
CN109669784B (zh) * 2017-10-13 2021-06-22 华为技术有限公司 一种进程间通信的方法及系统
CN107861888B (zh) * 2017-11-08 2020-03-24 郑州云海信息技术有限公司 Fpga卡用ddr的方法、系统、装置及可读存储介质
CN107908475B (zh) * 2017-11-09 2021-11-26 深圳市创维软件有限公司 一种内存容量判断方法、服务器及存储介质
CN108334413A (zh) * 2017-12-22 2018-07-27 天津麒麟信息技术有限公司 一种基于飞腾平台的固件与操作系统之间信息传递方法
CN110096453B (zh) * 2019-04-11 2020-01-03 北京华三通信技术有限公司 数据处理方法及装置
CN110231989A (zh) * 2019-05-14 2019-09-13 深圳市亿联智能有限公司 一种嵌入式智能终端动态内存优化方法
CN110287044B (zh) * 2019-07-02 2021-08-03 广州虎牙科技有限公司 无锁共享内存处理方法、装置、电子设备及可读存储介质
CN117171073A (zh) * 2019-09-30 2023-12-05 华为技术有限公司 处理远程直接内存访问请求的方法和计算机设备
CN111679921B (zh) * 2020-06-09 2023-08-01 Oppo广东移动通信有限公司 内存共享方法、内存共享装置及终端设备
CN112148229B (zh) * 2020-10-12 2024-01-30 北京计算机技术及应用研究所 一种飞腾服务器平台下的加速非易失性内存读写效率的方法
CN114006859B (zh) * 2021-09-18 2023-05-30 深圳震有科技股份有限公司 一种报文转发方法、终端及计算机可读存储介质
CN114253844B (zh) * 2021-12-16 2024-09-24 安天科技集团股份有限公司 一种程序运行方法、装置、电子设备及存储介质
CN117914860A (zh) * 2022-10-12 2024-04-19 华为技术有限公司 集合通信方法及计算集群
CN116185565A (zh) * 2022-12-29 2023-05-30 芯动微电子科技(武汉)有限公司 一种内存数据隔离和共享的系统和方法
CN117492933B (zh) * 2023-12-28 2024-03-22 苏州元脑智能科技有限公司 数据交换方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0747827A1 (en) * 1995-06-07 1996-12-11 International Business Machines Corporation System and method for providing shared memory using shared virtual segment identification in a computer system
CN102253855A (zh) * 2011-06-17 2011-11-23 北京书生国际信息技术有限公司 一种传递共享内存的方法和装置
CN103414535A (zh) * 2013-07-31 2013-11-27 华为技术有限公司 数据发送方法和数据接收方法及相关装置
CN104636260A (zh) * 2013-11-06 2015-05-20 深圳市风景智联科技有限公司 一种用于计费业务的数据管理方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9343185B2 (en) * 2013-09-26 2016-05-17 International Business Machines Corporation Electronic circuit for fitting a virtual address range to a physical memory containing faulty address

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0747827A1 (en) * 1995-06-07 1996-12-11 International Business Machines Corporation System and method for providing shared memory using shared virtual segment identification in a computer system
CN102253855A (zh) * 2011-06-17 2011-11-23 北京书生国际信息技术有限公司 一种传递共享内存的方法和装置
CN103414535A (zh) * 2013-07-31 2013-11-27 华为技术有限公司 数据发送方法和数据接收方法及相关装置
CN104636260A (zh) * 2013-11-06 2015-05-20 深圳市风景智联科技有限公司 一种用于计费业务的数据管理方法及系统

Also Published As

Publication number Publication date
CN105975407A (zh) 2016-09-28

Similar Documents

Publication Publication Date Title
CN105975407B (zh) 一种内存地址的映射方法及设备
US12067211B2 (en) Multi-window display interface with historical task bar
EP3190763B1 (en) Screen sharing method and sharing device
CN106658489B (zh) 一种终端应用的处理方法、装置及移动终端
JP2019536554A (ja) オブジェクト表示方法、端末デバイス、及びコンピュータ記憶媒体
CN113792278A (zh) 一种显示应用、图片的方法、装置及电子设备
KR102140290B1 (ko) 입력 처리 방법 및 그 전자 장치
CN106375478B (zh) 一种移动终端数据的同步方法、装置及系统
WO2015185018A1 (en) Item transfer apparatus, system and method
CN107944414B (zh) 图像处理方法、装置、电子设备及计算机可读存储介质
US20190204940A1 (en) Input device, method, and system for electronic device
CN107870666B (zh) 一种终端控制方法及终端
WO2019184631A1 (zh) 信息处理方法和装置、计算机可读存储介质、终端
US10366246B2 (en) Electronic device and operating method thereof
US20170265079A1 (en) Electronic device and method for acquiring biometric information thereof
US10419608B2 (en) Call forwarding method, terminal, and portable electronic device
WO2018095216A1 (zh) 关系链处理方法、终端及存储介质
WO2015043163A1 (en) Method and apparatus for inputting account information
MX2015003710A (es) Metodo para la adquisicion de informacion de cliente, servidor y metodo de almacenamiento.
KR20150086976A (ko) 객체 표시 제어 방법 및 그 전자 장치
CN109033773B (zh) 双屏终端操作权限管理方法、终端及计算机可读存储介质
CN109117037B (zh) 一种图像处理的方法及终端设备
KR20150104697A (ko) 정보 무늬 코드를 이용한 개인 전자장치의 그룹핑 방법 및 장치
CN111026457B (zh) 一种硬件配置方法、装置、存储介质及终端设备
CN111931155A (zh) 验证码的输入方法、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211224

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Patentee after: xFusion Digital Technologies Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.