CN117407326A - 内存访问方法及装置 - Google Patents

内存访问方法及装置 Download PDF

Info

Publication number
CN117407326A
CN117407326A CN202210878562.0A CN202210878562A CN117407326A CN 117407326 A CN117407326 A CN 117407326A CN 202210878562 A CN202210878562 A CN 202210878562A CN 117407326 A CN117407326 A CN 117407326A
Authority
CN
China
Prior art keywords
address space
processing component
virtual address
page
tag
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.)
Pending
Application number
CN202210878562.0A
Other languages
English (en)
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.)
Huawei 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 CN202210878562.0A priority Critical patent/CN117407326A/zh
Priority to PCT/CN2023/104015 priority patent/WO2024021995A1/zh
Publication of CN117407326A publication Critical patent/CN117407326A/zh
Pending legal-status Critical Current

Links

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
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例提供了一种内存访问方法及装置。该方法包括:在处理对应于虚拟地址空间的缺页异常中,根据用于标识对应于虚拟地址空间的目标处理组件的处理组件标签,可以直接指示目标处理组件对该缺页异常进行异常处理,也就是解决了缺页异常的问题,从而使得访问请求的请求者能够访问该虚拟地址空间。这样,本申请可以减少特定缺页异常处理组件与目标处理组件间的进程间通信,从而提升内存访问的效率。

Description

内存访问方法及装置
技术领域
本申请实施例涉及计算机领域,尤其涉及一种内存访问方法及装置。
背景技术
微内核(micro kernel)架构是一种包括微内核和系统服务的操作系统架构。其中,微内核用于在内核态实现操作系统的核心功能,例如,任务,线程和内核态内存管理等功能。系统服务包括多个组件,多个组件分别用于在用户态实现操作系统的进程管理,文件管理,以及用户态内存管理等。
相关技术中,操作系统对内存访问通常采用延时加载的机制:为用户的访问请求分配内存时仅分配虚拟地址空间,不分配实际的物理地址空间。这样,在操作系统访问该虚拟地址空间时会触发缺页异常(page fault)。此时,操作系统的内核可以检测到该缺页异常,并调用缺页异常处理者(page fault handler)分配该虚拟地址空间对应的物理地址空间。基于分配结果,访存请求者可以访问该物理地址空间,实现内存访问。
但是,在微内核架构的操作系统中,微内核处于内核态,缺乏足够的缺页异常处理信息,需要通过系统服务中的特定缺页异常处理者(如用户态内存管理服务)调用处于用户态的缺页异常处理者。这样,不同缺页异常处理者之间形成了进程间通信(inter-processcommunication,IPC),导致内存访问的效率受到较大影响。
发明内容
本申请提供一种内存访问方法及装置,以解决上述问题。在该方法中,通过预先为虚拟地址空间分配处理组件标签,以避免特定缺页异常处理组件与目标处理组件间的进程间通信,从而提升内存访问的效率。
第一方面,本申请实施例提供一种内存访问方法,该方法包括:获取第一访问请求,第一访问请求用于指示访问第一虚拟地址空间;若检测到对应于第一虚拟地址空间的第一缺页异常,获取第一虚拟地址空间的处理组件标签;其中,第一虚拟地址空间的处理组件标签用于标识对应于第一虚拟地址空间的第一处理组件;基于第一虚拟地址空间的处理组件标签,指示第一处理组件对第一缺页异常进行异常处理第一处理组件对第一缺页异常进行异常处理,可以包括为第一虚拟地址空间分配物理地址空间,也就是第一缺页异常引起的异常已解决,则第一访问请求的请求者例如第一访存请求组件,能够正常访问第一虚拟地址空间。
本申请实施例中,通过预先为虚拟地址空间添加处理组件标签,可以针对内存访问过程中发生的缺页异常,根据该标签直接指示目标处理组件进行缺页异常的异常处理,从而避免特定缺页异常处理组件与目标处理组件的进程间交互导致的效率下降,提高内存访问效率。其中,处理组件标签可以直接指示虚拟地址空间对应的异常处理组件,与按照固定划分的虚拟地址空间范围相比,可以保证对虚拟地址空间的灵活使用,避免固定划分虚拟地址空间范围导致的应用场景不兼容。
示例性的,图9为本申请实施例提供的异常处理组件标签的添加场景的一个示例性的示意图。如图9所示,第一虚拟地址空间可以为虚拟地址空间1,相应地,处理组件标签可以为标签2。图15为示例性示出的一种缺页异常处理方法的处理场景示意图。如图15 所示,若第一虚拟地址空间的处理组件标签为文件类型标签,第一处理组件可以为文件内存缺页异常处理服务。
根据第一方面,获取第一虚拟地址空间的处理组件标签,包括:
根据第一虚拟地址空间,从页表中查找处理组件标签;其中,处理组件标签包含在第一虚拟地址空间的页表的目标页表项中;页表为在预先分配第一虚拟地址空间时建立;目标页表项为页表中用于记录第一虚拟地址空间对应的物理地址空间信息的页表项。
本申请实施例中,本申请在处理缺页异常之前,例如在分配了虚拟内存空间时即创建页表。这样,本申请可以将页表用于记录异常处理者标签,从而将异常处理者标签用于进行缺页异常的处理,无需引入复杂的数据结构即可为虚拟地址空间添加异常处理者标签。
示例性的,图10c为本申请实施例提供的记录标签的页表的一种结构图;图10d为本申请实施例提供的记录标签的页表的另一种结构图。如图10c或者图10d所示,第一虚拟地址空间可以为虚拟地址空间VA,第一虚拟地址空间的页表可以为图10c中的一级页表Level0 Page Table;或者第一虚拟地址空间的页表可以为图10d中的多级页表。目标页表项为图10c或者图10d所示页表中的异常处理者标签Lablem所在的页表项。
根据第一方面,或者以上第一方面的任意一种实现方式,第一处理组件的处理结果可以包括更新页表;其中,更新页表为第一处理组件为第一虚拟地址空间分配物理地址空间,并基于物理地址空间对目标页表项进行更新得到;从而第一访存请求组件可以根据更新页表,访问第一虚拟地址空间。
本申请实施例中,第一处理组件为第一虚拟地址空间分配物理地址空间后,基于物理地址空间对目标页表项进行更新,以得到更新页表,从而保证缺页异常的异常解决,以及根据更新页表对第一虚拟地址空间的访问。
示例性的,图10a为示例性示出的已建立映射时页表的一种结构图;图10b为示例性示出的已建立映射时页表的另一种结构图。如图10c或者图10d所示,更新页表可以为图10c或者图10d中所示的页表。
根据第一方面,或者以上第一方面的任意一种实现方式,处理组件标签为根据第一虚拟地址空间的内存类型,和内存类型对应的处理组件的组件标识生成。
本申请实施例中,通过第一虚拟地址空间的内存类型和相应的处理组件的组件标识生成处理组件标签,可以保证处理组件标签所标识的处理组件的准确性。
根据第一方面,或者以上第一方面的任意一种实现方式,响应于第一处理组件的处理反馈信息,访问第一虚拟地址空间之后,方法还包括:
获取第二访问请求,第二访问请求用于指示访问第二虚拟地址空间;
若检测到对应于第二虚拟地址空间的第二缺页异常,获取第二虚拟地址空间的处理组件标签;其中,第二虚拟地址空间的处理组件标签用于标识对应于第二虚拟地址空间的第二处理组件;
检测第二虚拟地址空间的处理组件标签是否满足预设条件;
若不满足,指示指定处理组件对第二缺页异常进行异常处理。指定处理组件对第二缺页异常进行异常处理,可以包括为第二虚拟地址空间分配物理地址空间,也就是第二缺页异常引起的异常已解决,则第二访问请求的请求者例如第二访存请求组件,能够正常访问第二虚拟地址空间。
本申请实施例中,通过指定处理组件也就是为缺页异常提供默认处理组件,可以应对处理组件标签不满足预设条件的情况,从而进一步提高内存访问的成功率,提高用户体验。
示例性的,处理组件标签不满足预设条件可以包括:页表中不存在处理组件标签,或者处理组件标签的格式不符合预设的标签格式(如标签为“空”或者标签不包含处理组件标识等)。也就是说,处理组件标签不满足预设条件意味着处理组件标签获取失败。
根据第一方面,或者以上第一方面的任意一种实现方式,指定处理组件为匿名页处理组件;相应地,若第一虚拟地址空间的内存类型为匿名页类型,为第一虚拟地址空间分配的处理组件标签为空。
本申请实施例中,对于匿名内存类型的虚拟地址空间占比较大的场景,将匿名页处理组件作为指定处理组件,从而无需为匿名页类型的第一虚拟地址空间添加处理组件标签,以精简缺页异常处理流程和降低存储空间成本,从而进一步提高内存访问的效率
示例性的,可以在匿名内存类型的虚拟地址空间对应的物理地址空间页表项中不添加缺页异常处理标签。例如,该物理地址空间页表项可以为空,或者可以为图15中的“无标签”。
根据第一方面,或者以上第一方面的任意一种实现方式,基于第一虚拟地址空间的处理组件标签,指示第一处理组件对第一缺页异常进行异常处理,包括:
基于第一虚拟地址空间的处理组件标签和预先建立的标签与处理组件信息的对应关系,确定目标处理组件信息;
基于目标处理组件信息,指示第一处理组件对第一缺页异常进行异常处理。
本申请实施例中,通过预先建立的标签与处理组件信息的对应关系,确定目标处理组件信息,从而可以通过目标处理组件信息及时、准确地指示第一处理组件进行异常处理。与直接在处理组件标签上标记处理组件信息相比,通过该标签与处理组件信息的对应关系,可以提高维护第一处理组件与处理组件标签的对应关系的便捷性。例如,目标处理组件信息更新时,无需重新分配处理组件标签,更新该对应关系即可。
根据第一方面,或者以上第一方面的任意一种实现方式,若检测到第一虚拟地址空间对应的第一缺页异常,获取第一虚拟地址空间的处理组件标签之前,方法还包括:
响应于预先分配的至少一种处理组件标签,基于至少一种处理组件标签和至少一种处理组件标签分别对应的处理组件信息,生成键值对;
创建记录键值对的缺页异常处理表,得到预先建立的标签与处理组件信息的对应关系。
本申请实施例中,通过至少一种处理组件标签和至少一种处理组件标签分别对应的处理组件信息,生成键值对,以创建记录键值对的缺页异常处理表。这样,预先建立的标签与处理组件信息的对应关系是键值对形式的,查询更加快捷,进一步提高效率。
示例性的,图13为示例性示出的一种缺页异常处理表的结构图。如图13所示,缺页异常处理表可以为图13中的表,处理组件标签为标签label1,相应的处理组件信息为入口fault handler entry 1。
第二方面,本申请实施例提供一种内存访问装置,该装置包括:
请求获取模块,被配置为获取第一访问请求,第一访问请求用于指示访问第一虚拟地址空间;
标签获取模块,被配置为若检测到对应于第一虚拟地址空间的第一缺页异常,获取第一虚拟地址空间的处理组件标签;其中,第一虚拟地址空间的处理组件标签用于标识对应于第一虚拟地址空间的第一处理组件;
异常处理模块,被配置为基于第一虚拟地址空间的处理组件标签,指示第一处理组件对第一缺页异常进行异常处理。第一处理组件对第一缺页异常进行异常处理,可以包括为第一虚拟地址空间分配物理地址空间,也就是第一缺页异常引起的异常已解决,则第一访问请求的请求者例如第一访存请求组件,能够正常访问第一虚拟地址空间。
根据第二方面,标签获取模块,进一步被配置为:
根据第一虚拟地址空间,从页表中查找处理组件标签;其中,处理组件标签包含在(属于、或者位于都行,不要写成动作)第一虚拟地址空间的页表的目标页表项中;页表为在预先分配第一虚拟地址空间时建立;目标页表项为页表中用于记录第一虚拟地址空间对应的物理地址空间信息的页表项。
根据第二方面,或者以上第二方面的任意一种实现方式,第一处理组件的处理结果可以包括更新页表;其中,更新页表为第一处理组件为第一虚拟地址空间分配物理地址空间,并基于物理地址空间对标页表项进行更新得到;从而第一访存请求组件可以根据更新页表,访问第一虚拟地址空间。
根据第二方面,或者以上第二方面的任意一种实现方式,处理组件标签为根据第一虚拟地址空间的内存类型,和内存类型对应的处理组件的组件标识生成。
根据第二方面,或者以上第二方面的任意一种实现方式,请求获取模块,还被配置为获取第二访问请求,第二访问请求用于指示访问第二虚拟地址空间;
标签获取模块,还被配置为若检测到对应于第二虚拟地址空间的第二缺页异常,获取第二虚拟地址空间的处理组件标签;其中,第二虚拟地址空间的处理组件标签用于标识对应于第二虚拟地址空间的第二处理组件;检测第二虚拟地址空间的处理组件标签是否满足预设条件;
异常处理模块,还被配置为若不满足,指示指定处理组件对第二缺页异常进行异常处理。指定处理组件对第二缺页异常进行异常处理,可以包括为第二虚拟地址空间分配物理地址空间,也就是第二缺页异常引起的异常已解决,则第二访问请求的请求者例如第二访存请求组件,能够正常访问第二虚拟地址空间。
根据第二方面,或者以上第二方面的任意一种实现方式,指定处理组件为匿名页处理组件;相应地,若第一虚拟地址空间的内存类型为匿名页类型,为第一虚拟地址空间分配的处理组件标签为空。
根据第二方面,或者以上第二方面的任意一种实现方式,异常处理模块,进一步被配置为:
基于第一虚拟地址空间的处理组件标签和预先建立的标签与处理组件信息的对应关系,确定目标处理组件信息;
基于目标处理组件信息,指示第一处理组件对第一缺页异常进行异常处理。
根据第二方面,或者以上第二方面的任意一种实现方式,装置还包括:
注册模块,被配置为响应于预先分配的至少一种处理组件标签,基于至少一种处理组件标签和至少一种处理组件标签分别对应的处理组件信息,生成键值对;创建记录键值对的缺页异常处理表,得到预先建立的标签与处理组件信息的对应关系。
第二方面以及第二方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第二方面以及第二方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第三方面,本申请实施例提供一种电子设备,包括:处理器和收发器;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面或第一方面的任一种可能的实现方式中的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,包括计算机程序,其特征在于,当所述计算机程序在计算机系统上运行时,使得所述计算机系统执行如第一方面或第一方面的任一种可能的实现方式中的方法。
第五方面,本申请实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,使得所述电子设备执行如第二至三方面或第二至三方面的任一种可能的实现方式中的方法。
第六方面,本申请实施例提供了一种计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
附图说明
图1为示例性示出的一种微内核架构的结构示意图;
图2为示例性示出的多种缺页异常处理服务的示意图;
图3为示例性示出的一种内存访问方法的流程示意图;
图4为示例性示出的一种缺页异常处理方法的处理场景示意图;
图5为示例性示出的一种缺页异常处理架构的结构图;
图6为示例性示出的一种缺页异常处理架构的结构图;
图7为本申请实施例提供的电子设备600的一个示例性的结构图;
图8为本申请实施例提供的添加异常处理组件标签的一个示例性的流程示意图;
图9为本申请实施例提供的异常处理组件标签的添加场景的一个示例性的示意图;
图10a为示例性示出的已建立映射时页表的一种结构图;
图10b为示例性示出的已建立映射时页表的另一种结构图;
图10c为本申请实施例提供的记录标签的页表的一种结构图;
图10d为本申请实施例提供的记录标签的页表的另一种结构图;
图11为示例性示出的一种缺页异常处理架构的结构图;
图12为本申请实施例提供的内存访问方法的一个示例性的流程示意图;
图13为示例性示出的一种缺页异常处理表的结构图;
图14a为示例性示出的一种缺页异常处理架构的结构图;
图14b为示例性示出的一种缺页异常处理架构的结构图;
图15为示例性示出的一种缺页异常处理方法的处理场景示意图;
图16为本申请实施例提供的一种装置1600的一个示例性的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
图1为示例性示出的一种微内核架构的结构示意图。如图1所示,该微内核架构包括:系统服务层和内核层,采用延时处理机制进行内存访问。当微内核进行内存访问时,触发延时处理机制的缺页异常,缺页异常指所请求访问的虚拟地址空间不存在相应的物理地址空间。该微内核架构对缺页异常的处理包括如下步骤:
S101,微内核发送缺页信息至内存管理服务。
该内存管理服务指运行在内核态的内存管理服务。示例性的,缺页信息可以包括:触发缺页异常的内存访问所请求访问的虚拟地址空间也就是虚拟内存,访问请求标识等内存管理服务进行物理地址空间分配所依据的信息。其中,虚拟地址空间是指:操作系统为每个进程单独设置的地址空间,以保证进程的隔离性。虚拟地址空间也可以称为虚拟内存,是一种逻辑概念上的内存。
与虚拟地址空间对应的是物理地址空间,也可以称为物理内存。物理地址空间是指实际的内存资源。操作系统将虚拟地址空间和物理地址空间进行关联,以实现对内存资源的实际访问,从而通过虚拟地址空间这一逻辑概念上的内存,实现对实际内存更加灵活地访问和管理。
S102,内存管理服务转发缺页信息至缺页异常处理服务。
该内存管理服务运行在内核态,可以作为特定缺页异常处理者。该内存管理服务可以根据缺页信息,确定缺页异常处理者,从而转发缺页信息至缺页异常处理服务。微内核架构中通常将不同的系统服务(如内存管理服务,文件管理服务,驱动管理服务等),分别以组件的形式分布在相互独立的服务进程中。其中,针对不同系统服务的访问请求访问不同的虚拟地址空间。
示例性的,图2为示例性示出的多种缺页异常处理服务的示意图。如图2所示,操作系统可以对虚拟地址空间进行不固定的划分:匿名内存,IO内存,文件内存和IO内存等。不固定的划分可以得到对应有两个不同虚拟地址空间范围的IO内存。该不固定的划分可以依据对虚拟地址空间的使用需求进行,可以根据使用需求灵活变化。
继续参见图2,访存请求者访问上述虚拟地址空间之一,即可触发缺页异常并产生缺页信息。从而微内核可以捕捉到该缺页异常以及缺页信息,内存管理服务可以根据微内核转发的缺页信息,确定用于应对不同地址空间的缺页异常的异常处理服务也就是异常处理者。例如,针对匿名内存的匿名内存缺页异常处理服务(如内核态或用户态的内存管理服务),针对文件内存的文件内存缺页异常处理服务(如文件管理服务),针对IO内存缺页异常处理服务(如驱动管理服务)。可见,这样的内存访问存在进程间通信(Inter-processcommunication,IPC)。例如,内存管理服务与文件管理服务之间的进程间通信。内存访问对效率存在一定需求,属于性能敏感路径,而IPC对性能敏感路径有较大的负面影响,导致内存访问效率下降。
示例性的,图3为示例性示出的一种内存访问方法的流程示意图。如图3所示,应用于图1所示的微内核架构进行的内存访问,可以包括如下步骤:
S301,内存管理服务分配虚拟地址空间。
示例性的,内存管理服务可以在接收到微内核发送的内存分配指令时,分配虚拟地址空间。其中,内存分配指令为微内核获取(如检测、接收)到访存请求者(如访存请求组件)的内存访问请求时生成并发送至内存管理服务。内存分配指令中可以包含访问请求的标识、请求访问的目标对象的信息等等。
S302,微内核检测到虚拟地址空间的缺页异常。
在内存管理分配虚拟地址空间后,访存请求者访问该虚拟地址空间。此时,按照延迟加载机制,微内核捕捉到访存请求者对该虚拟地址空间的访问所导致的缺页异常,也就是检测到虚拟地址空间的缺页异常。
S303,微内核发送缺页信息至内存管理服务。
微内核在检测到虚拟地址空间的缺页异常时,发送缺页信息至内存管理服务。
S304,内存管理服务发送缺页信息至缺页异常处理服务。
图3实施例中的S303至S304,与上述图1实施例中的S101至S102为相同步骤,详见上述图1实施例的描述,此处不再赘述。
S305,缺页异常处理服务基于缺页信息,分配物理地址空间。
缺页异常处理服务接收到内存管理服务发送的缺页信息后,可以基于缺页信息,分配物理地址空间。示例性的,缺页异常处理服务可以根据缺页信息,从划分物理存储空间(如内存)得到的多个物理页中选择一个物理页,确定为所分配的物理地址空间。或者,缺页异常处理服务可以根据缺页信息,通过文件管理模块和驱动模块,将物理存储空间(如磁盘)上的数据复制到内存的某一个物理页,然后将该物理页确定为所分配的物理地址空间为。具体的物理地址空间分配方式可以参见相关已有技术,此处不再赘述。
S306,缺页异常处理服务基于分配结果,创建记录虚拟地址空间与物理地址空间的映射关系的页表。
缺页异常处理服务在分配物理地址空间后,可以基于分配结果也就是所分配的物理地址空间,创建记录虚拟地址空间与物理地址空间的映射关系的页表。页表是一种数据结构,记录的映射关系可以实现对虚拟地址空间和物理地址空间的关联。
S307,缺页异常处理服务对页表进行存储。
缺页异常处理服务在创建了页表后,可以将页表存储至微内核能够访问的存储空间中,例如,存储至内存中。
S308,缺页异常处理服务发送异常处理反馈至微内核。
在一种情况中,缺页异常处理服务存储了页表后,可以发送异常处理反馈至微内核,以告知微内核缺页异常处理完成。在另一种情况中,缺页异常处理服务可以不告知微内核缺页异常处理完成,也就无需发送异常处理反馈至微内核。缺页异常处理服务对缺页异常处理完成,可以包括:缺页异常处理服务为发生缺页异常的虚拟地址空间分配物理地址空间。这样,访存请求者可以根据页表,进行虚拟地址空间的访问。示例性的,访存请求者根据页表,进行虚拟地址空间的访问,具体可以包括:访存请求者按照页表记录的映射关系,确定与虚拟地址空间对应的目标物理地址空间,访问目标物理地址空间。可以理解的是,访存请求者对目标物理地址空间的访问方式可以根据目标访问请求确定,具体可以包括:读取目标物理地址空间中的目标资源,或者,将目标资源写入目标物理地址空间。目标访问请求指上述虚拟地址空间对应的访问请求,目标资源可以根据目标访问请求表明的资源标识等信息确定。
以上微内核对缺页异常的检测,缺页异常处理服务完成缺页异常处理后,访存请求者对内存访问的具体方式,均为示例性描述,具体可以参见相关已有技术,本申请对此不作限制。
图4为示例性示出的一种缺页异常处理方法的处理场景示意图。如图4所示,操作系统对虚拟地址空间进行固定划分,得到的匿名内存,文件内存和IO内存分别对应唯一的虚拟地址空间范围。例如,参见图2,图2的不固定划分下IO内存可以对应有两个不同的虚拟地址空间范围,而图4的固定划分下IO内存对应唯一的虚拟地址空间范围。不同的虚拟地址空间范围对应不同的缺页异常处理服务。例如,匿名内存的虚拟地址空间范围对应匿名内存缺页异常处理服务,文件内存的虚拟地址空间范围对应文件内存缺页异常处理服务,IO内存的虚拟地址空间范围对应IO内存缺页异常处理服务。当发生缺页异常时,微内核可以根据该缺页异常对应的虚拟地址空间所述虚拟地址空间范围,直接确定缺页异常处理服务。这样,微内核可以与缺页异常处理者直接交互,无需通过内存管理服务进行,减少了进程间通信。
但是,图4实施例中固定划分虚拟地址空间,导致无法按照使用需求灵活划分。这样的固定限制也容易导致适用场景受限。示例性的,可移植操作系统接口(PortableOperating System Interface of UNIX,POSIX,是IEEE为要在各种UNIX操作系统上运行的软件,而定义API的一系列互相关联的标准的总称)不对匿名内存,文件内存和IO内存的虚拟地址范围做限制,导致图4实施例与POSIX不兼容。
本申请实施例提供一种内存访问方法。该方法中,微内核在检测到访问请求对应的虚拟地址空间的缺页异常时,可以基于该虚拟地址空间的异常处理组件标签,直接确定缺页异常处理服务,从而直接与缺页异常处理服务交互,实现内存访问。这样,可以避免特定异常处理者与缺页异常处理者间的进程间交互,从而提高内存访问的效率。其中,根据虚拟地址空间的内存类型添加的处理组件标签,可以直接指示该内存类型的缺页异常处理组件,与按照内存类型固定划分的虚拟地址空间范围相比,可以保证对虚拟地址空间的灵活使用,避免固定划分虚拟地址空间范围导致的应用场景不兼容的问题。
为了方便描述,后续本申请实施例以微内核为例进行说明,本申请中的内存访问方法同样适用于无线射频拉远单元(Remote Radio Unit,RRU)、智能电视、膝上型计算机、桌上型计算机、掌上型计算机(如平板电脑、智能手机等)、智能穿戴设备 (如智能手环、智能手表、智能戒指等)等电子设备。
本申请实施例可以应用于电子设备的内核。示例性的,图5为示例性示出的一种缺页异常处理架构的结构图。如图5所示,电子设备可以包括具有微内核架构的操作系统,具体可以包括系统服务层和内核层。本申请实施例中,通过内核层的微内核以及系统服务层的缺页异常处理服务进行缺页异常处理,以实现内存访问。
可以理解的是,本申请实施例示意的结构并不构成对上述电子设备的具体限定。在本申请另一些实施例中,上述电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
在一种示例中,图6为示例性示出的一种缺页异常处理架构的结构图。如图6所示,上述电子设备中的操作系统可以为包括存在多个运行域的微内核架构。图6所示架构与图5类似,区别在于运行域(domain)的数量为n个,n大于1。例如,运行域D1,运行域D2,……,和运行域Dn。每个运行域用于运行属于不同进程的系统服务。例如,缺页异常处理服务可以包括运行在运行域D1至运行域Dn的多个进程,也就是说,每个运行域中可以运行有缺页异常处理服务,不同运行域之间相互独立。微内核对每个运行域进行相同的处理与交互。本实施例提供的多个运行域的操作系统一般用于存在资源隔离需求的场景。例如,车载OS(Operating System)场景下控制子系统和娱乐子系统有隔离性需求,该车载OS可以为图6所示的架构。
在另一种示例中,上述电子设备可以为另一种结构,该结构同样适用于智能手机等电子设备。图7为本申请实施例提供的电子设备600的一个示例性的结构图,如图7所示,电子设备600可以为图5或者图6所示架构所属的电子设备。
应该理解的是,图7所示电子设备600仅是一个范例,并且电子设备600可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图7中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
电子设备600可以包括:处理器610,外部存储器接口620,内部存储器621,通用串行总线(universal serial bus,USB)接口630,充电管理模块640,电源管理模块641,电池642,天线1,天线2,移动通信模块650,无线通信模块660,音频模块670,扬声器670A,受话器670B,麦克风670C,耳机接口670D,传感器模块680,按键690,马达691,指示器692,摄像头693,显示屏694,以及用户标识模块(subscriber identification module,SIM)卡接口695等。其中传感器模块680可以包括压力传感器680A,陀螺仪传感器680B,气压传感器680C,磁传感器680D,加速度传感器680E,距离传感器680F,接近光传感器680G,指纹传感器680H,温度传感器680J,触摸传感器680K,环境光传感器680L,骨传导传感器680M等。
处理器610可以包括一个或多个处理单元,例如:处理器610可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit, GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备600的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器610中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器610中的存储器为高速缓冲存储器。该存储器可以保存处理器610刚用过或循环使用的指令或数据。如果处理器610需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器610的等待时间,因而提高了系统的效率。
在一些实施例中,处理器610可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S) 接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器610可以包含多组 I2C总线。处理器610可以通过不同的I2C总线接口分别耦合触摸传感器680K,充电器,闪光灯,摄像头693等。例如:处理器610可以通过I2C接口耦合触摸传感器580K,使处理器610与触摸传感器680K通过I2C总线接口通信,实现电子设备600的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器610可以包含多组I2S总线。处理器610可以通过I2S总线与音频模块670耦合,实现处理器610与音频模块670之间的通信。在一些实施例中,音频模块670可以通过I2S接口向无线通信模块660传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块670与无线通信模块660可以通过PCM总线接口耦合。在一些实施例中,音频模块670也可以通过PCM接口向无线通信模块660传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器610与无线通信模块660。例如:处理器610通过UART接口与无线通信模块660中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块670可以通过 UART接口向无线通信模块660传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器610与显示屏694,摄像头693等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器610和摄像头693通过CSI接口通信,实现电子设备600的拍摄功能。处理器610和显示屏694通过DSI接口通信,实现电子设备 600的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器610与摄像头693,显示屏694,无线通信模块660,音频模块670,传感器模块680等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口630是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB 接口,USB Type C接口等。USB接口530可以用于连接充电器为电子设备600充电,也可以用于电子设备600与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
应该理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备600的结构限定。在本申请另一些实施例中,电子设备600也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块640用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块640可以通过USB接口630接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块640可以通过电子设备600的无线充电线圈接收无线充电输入。充电管理模块640为电池642充电的同时,还可以通过电源管理模块641为电子设备供电。
电源管理模块641用于连接电池642,充电管理模块640与处理器610。电源管理模块641接收电池642和/或充电管理模块640的输入,为处理器610,内部存储器621,外部存储器,显示屏694,摄像头693,和无线通信模块660等供电。电源管理模块641还可以用于检测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块641也可以设置于处理器610中。在另一些实施例中,电源管理模块641和充电管理模块640也可以设置于同一个器件中。
电子设备600的无线通信功能可以通过天线1,天线2,移动通信模块650,无线通信模块660,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备600中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块650可以提供应用在电子设备600上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块650可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块650可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块650 还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块650的至少部分功能模块可以被设置于处理器610中。在一些实施例中,移动通信模块650的至少部分功能模块可以与处理器610的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器670A,受话器670B等)输出声音信号,或通过显示屏694显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器610,与移动通信模块650或其他功能模块设置在同一个器件中。
无线通信模块660可以提供应用在电子设备600上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth, BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术 (infrared,IR)等无线通信的解决方案。无线通信模块660可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块660经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器610。无线通信模块660还可以从处理器610 接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备600的天线1和移动通信模块650耦合,天线2和无线通信模块660耦合,使得电子设备600可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess, WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS) 和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备600通过GPU,显示屏694,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏694和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器610可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏694用于显示图像,视频等。显示屏694包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode, OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled, MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备600可以包括1个或N个显示屏694,N为大于1的正整数。
电子设备600可以通过ISP,摄像头693,视频编解码器,GPU,显示屏694以及应用处理器等实现拍摄功能。
ISP用于处理摄像头693反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP 还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头693 中。
摄像头693用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体 (complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备600可以包括1个或N个摄像头693,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备600在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备600可以支持一种或多种视频编解码器。这样,电子设备600可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过 NPU可以实现电子设备600的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口620可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备600的存储能力。外部存储卡通过外部存储器接口620与处理器610通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器621可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器610通过运行存储在内部存储器621的指令,从而执行电子设备600的各种功能应用以及数据处理。内部存储器621可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备600使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器621可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage, UFS)等。
电子设备600可以通过音频模块670,扬声器670A,受话器670B,麦克风670C,耳机接口670D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块670用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块670还可以用于对音频信号编码和解码。在一些实施例中,音频模块670可以设置于处理器610中,或将音频模块670的部分功能模块设置于处理器610中。
下面结合图5,和图8至图11对本申请实施例提供的内存访问方法进行具体介绍。
示例性的,图8为本申请实施例提供的添加异常处理组件标签的一个示例性的流程示意图。预先通过该流程为虚拟地址空间添加异常处理组件标签,以用于在后续内存访问中应对缺页异常,实现内存访问。如图8所示,该流程可以应用于电子设备的内存管理服务,具体可以包括但不限于以下步骤:
S801,分配虚拟地址空间。
上述S801与本申请图3实施例中的S301为相似步骤,对于相同部分在此不再赘述,详见上述S301的描述。对于不同部分下面结合图9进行具体说明。图9为本申请实施例提供的异常处理组件标签的添加场景的一个示例性的示意图。如图9所示,本实施例中内存管理服务可以包括但不限于虚拟内存分配模块(如Virtual memory allocator),标签生成模块(如fault handler label gen)和标签添加模块(如PTE marker)。内存管理服务调用虚拟内存分配模块执行S901,申请虚拟地址空间,以实现分配虚拟地址空间的效果。例如,整体虚拟地址空间中包括虚拟地址空间0和虚拟地址空间1,内存管理服务调用虚拟内存分配模块向操作系统申请到虚拟地址空间1,从而将该虚拟地址空间分配给目标访问请求。其中,目标访问请求即触发虚拟地址空间分配的访问请求,也就是本申请所进行的内存访问的访问请求。
仍参见图9,在一种可选的实施方式中,内存管理服务在申请到虚拟地址空间后,调用标签生成模块执行S902,生成标签,进而调用标签添加模块执行S903,添加标签。例如,内存管理服务调用标签生成模块生成的标签为标签2,可以将该标签2添加至用于记录异常处理者标签(如标签“PTE”)的数据结构中,该数据结构例如可以是表,该表记录的异常处理者标签例如是标签1。可以理解的是,S902与S901的执行步骤可以不作限定,S902也可以在S901之前执行,或者S902可以和S901同时执行。S902和S901在S903 之前执行即可。
对于标签生成,在一种可选的实施方式中,标签生成模块生成异常处理者标签的方式可以包括:标签生成模块获取缺页异常处理组件的组件标识也就是进程标识(如service id),基于该标识,确定异常处理者标签,以生成格式统一的缺页异常处理者标签,便于管理。当电子设备为单个运行域的架构时,标签生成模块可以将组件标识确定为异常处理者标签,例如,异常处理者标签可以为标签“文件异常处理组件标签(file faulthandler label)”也就是。当电子设备为多个运行域的架构时,例如本申请图6所示的架构时,标签生成模块还可以获取目标访问请求所针对的运行域的域标识(如domain id),将域标识和上述组件标识进行融合,例如进行拼接,得到异常处理者标签,例如,异常处理者标签可以为标签“运行域D1文件异常处理组件标签(D1 file fault handler label)”,或者标签“运行域D1文件异常处理组件标签(domain1 file fault handler label)”。
在一种可选的实施方式中,上述缺页异常处理者标签除了可以用于确定缺页异常处理服务,还可以用于进行权限校验,该权限指建立虚拟地址空间与物理地址空间的映射关系的权限。例如,IO内存缺页异常处理服务(IO manager)发起建立无权限的映射关系:建立内存类型为文件内存的虚拟地址空间与相应的物理地址空间的映射关系时,访存请求者可以根据页表中该虚拟地址空间对应的缺页异常处理者标签,拒绝 IO内存缺页异常处理服务的建立请求。这样,可以提高操作系统运行的稳定性。
对于标签添加,内存管理服务调用标签添加模块执行包括但不限于如下步骤:
S802,基于分配结果,创建记录虚拟地址空间与物理地址空间的映射关系的页表。
内存管理服务在调用标签生成模块生成异常处理者标签后,调用标签添加模块基于分配结果,创建记录虚拟地址空间与物理地址空间的映射关系的页表。页表在图1 所示的操作系统中用于记录虚拟地址空间与物理地址空间的映射关系,在未建立该映射关系的情况下,例如在未分配物理地址空间时,页表存在空缺也就是未使用的页表项。例如,一行页表项包括记录虚拟地址空间信息(如索引)的页表项,和记录物理地址空间信息(如索引)的页表项,未使用的页表项即:未分配物理地址空间的虚拟地址空间所在行中,记录物理地址空间信息(如索引)的页表项。基于此,本申请的内存管理服务在分配虚拟地址空间后,基于分配结果,创建记录虚拟地址空间与物理地址空间的映射关系的页表,以将缺页异常处理者标签写入到未使用的页表项中。这样,本申请可以直接利用微内核已有数据结构:页表,进行缺页异常处理者标签的存户,从而无需在微内核中引入新的复杂数据结构,在提高内存访问效率的同时,可以保持微内核足够简单的特性。
示例性的,图10a为示例性示出的已建立映射时页表的一种结构图。如图10a所示,一级页表Level0 Page Table的每一行可以包括两个页表项:基地址L0 Addr Base 和映射入口Entry0。基地址L0 Addr Base用于记录虚拟地址空间VA的信息,映射入口Entry0用于记录物理地址空间PA的信息。微内核可以获取虚拟地址空间VA中的指定位例如VA[47:39]作为索引,并按照该索引查找一级页表中的基地址L0 Addr Base,从而得到相应的物理地址空间PA[47:39]。图10b为示例性示出的已建立映射时页表的另一种结构图。如图10b所示,在通过多级页表例如三级页表以提高内存访问效率的场景中,页表可以包括:一级页表Level0 Page Table,二级页表Level1 Page Table,三级页表Level2 Page Table和四级页表Level3 Page Table。每级页表与图10a 中的一级页表类似,区别在于Level0 PageTable至Level2 Page Table的页表项:映射入口Entry0至映射入口Entry2中,记录的可能为用于对下一级页表进行查找的首地址,而非最终的查找结果物理地址空间的信息。例如,微内核可以执行如下步骤以查找到最终的物理地址空间:
微内核获取虚拟地址空间VA中的指定位例如VA[47:39]作为索引,并按照该索引查找一级页表中的基地址L0 Addr Base,得到相应的二级页表Level1 Page Table首地址。微内核从二级页表Level1 Page Table首地址中获取VA[38:30]作为索引,按照该索引查找二级页表中的基地址L1 Addr Base,得到相应的三级页表Level2 Page Table 首地址。微内核从三级页表Level2 Page Table首地址中获取VA[29:21]作为索引,按照该索引查找三级页表中的基地址L2 Addr Base,得到相应的四级页表Level3 Page Table首地址。微内核从四级页表Level3 Page Table首地址中获取VA[20:12]作为索引,按照该索引查找四级页表中的基地址L3 Addr Base,得到物理地址空间PA[47:12]。
本申请实施例通过S802建立的页表与图10a和图10b中所示的页表类似,区别在于通过S802建立的页表中记录映射入口的页表项为空闲页表项,也就是未使用的页表项。对于相同部分在此不再赘述,详见对图10a和图10b的描述。
可以理解的是,结合图3可知,图1所示电子设备在处理缺页异常时创建页表,而本申请在处理缺页异常之前,例如在分配了虚拟内存空间时即创建页表。这样,本申请可以将页表用于记录异常处理者标签,从而将异常处理者标签用于进行缺页异常的处理。
S803,在页表的物理地址空间信息的页表项中,添加相应虚拟地址空间的处理者标签。
内存管理服务调用标签添加模块创建上述存在未使用的页表项的页表后,继续调用标签添加模块在页表的物理地址空间信息的页表项中,添加相应虚拟地址空间的处理者标签。其中,页表的物理地址空间信息的页表项即页表中未使用的页表项,例如图10b中多级页表中最后一级页表中未使用的页表项:映射入口Entry3。示例性的,图10c为本申请实施例提供的记录标签的页表的一种结构图。如图10c所示,内存管理模块可以调用标签添加模块在一级页表Level0的映射入口Entry0中添加异常处理者标签。例如,内存管理模块获取所分配虚拟地址空间VA的VA[47:39]作为索引,按照该索引将异常处理者标签Lablem至一级页表中。图10d为本申请实施例提供记录标签的页表的另一种结构图。如图10d所示,内存管理模块可以调用标签添加模块在多级页表Level3的映射入口Entry3中添加异常处理者标签。例如,内存管理模块获取所分配虚拟地址空间VA的VA[47:39]作为索引,按照该索引,逐级找到四级页表Level3 Page Table中的映射入口Entry3,从而将异常处理者标签Lablem至四级页表Level3 Page Table中。对多级页表中页表项的查找过程可以参见上述图10b的描述,此处不再赘述。
内存管理服务在页表中添加缺页异常处理者标签后存储该页表,即实现为虚拟地址空间添加缺页异常处理者标签的目的。缺页异常处理者标签可以按照虚拟地址空间的类型分为多种,每种缺页异常处理者标签的数量可以为多个。例如,当内存类型为文件内存的虚拟地址空间的数量为多个时,每个虚拟地址空间对应有一个file fault handlerlabel,也就是说,file fault handler label的数量为多个。
示例性的,图11为示例性示出的一种缺页异常处理架构的结构图。如图11所示,缺页异常处理架构也就是电子设备的架构中包括:系统服务层的用户态内存管理服务中的标签生成模块和标签添加模块,这两个模块与图9实施例中名称相同的模块为相同模块,以实现本申请图8所示的缺页异常处理者标签添加流程和图9所示的标签生成场景的实施例。相应地,S1101包括:用户态内存管理服务调用标签添加模块将标签生成模块生成的异常处理者标签添加至记录异常处理者标签的数据结构中。该系统服务层还可以包括线程管理服务,IO管理服务和文件管理服务等用于处理缺页异常的服务。
基于图8实施例添加的异常处理组件标签,示例性的,图12为本申请实施例提供的内存访问方法的一个示例性的流程示意图。如图12所示,该内存访问方法可以包括但不限于以下步骤:
S1201,微内核检测到虚拟地址空间的缺页异常。
上述S1201与本申请图3实施例中的S302为相同步骤,在此不再赘述,详见上述S302 的描述。
S1202,微内核基于虚拟地址空间的处理者标签,确定缺页异常处理服务。
微内核在检测到虚拟地址空间的缺页异常后,可以基于虚拟地址空间的处理者标签,确定缺页异常处理服务。其中,虚拟地址空间的处理者标签包括:预先根据虚拟地址空间的内存类型,为该虚拟地址空间添加的异常处理组件标签。例如,预先通过上述图8实施例提供的方法添加的异常处理组件标签。每种异常处理组件标签用于指示一种内存类型的虚拟地址空间对应的缺页异常处理服务也就是异常处理组件。例如,对于内存类型为文件类型的虚拟地址空间,也就是说该虚拟地址空间对应的内存为图2所示的文件内存,那么该虚拟地址空间的异常处理组件标签为文件内存缺页异常处理服务标签(如file faulthandler label)。
在此基础上,微内核基于虚拟地址空间的处理者标签,确定缺页异常处理服务,具体可以包括:微内核从预存的页表中查找存在缺页异常的虚拟地址空间的缺页异常处理者标签,从预先建立的标签与处理服务信息的对应关系中,确定所查找到的标签对应的处理服务信息,根据该处理服务信息确定缺页异常处理服务。微内核查找缺页异常处理者标签的具体方式与图10a和图10b实施例中查找物理地址空间的过程类似,均为遍历页表,区别在于查找结果不同。对于相同部分此处不再赘述,详见上述图10a和图10b实施例的描述。
在一种可选的实施方式中,图11所示电子设备的内核层中可以包括异常处理注册模块,以建立用户态内存管理服务生成的缺页异常处理者标签与缺页异常处理者的信息(如交互入口,或调用接口等)间的对应关系。其中,内核态内存管理服务属于微内核,该微内核中还可以包括可信计算基础(Trusted Computing Base,TCB)模块和交互通信模块(如IPC模块)。可以理解的是,TCB模块和IPC模块仅为对微内核中模块的示例,具体的功能和调用方式均可参见操作系统中可信计算和进程间通信的已有技术,此处不再赘述。
继续参见图11,用户态内存管理服务可以调用标签添加模块执行步骤S1102,发送注册请求至异常处理注册模块,以建立缺页异常处理者标签与缺页异常处理入口(faulthandler entry)间的对应关系,也就是注册缺页异常处理入口。示例性的,图13为示例性示出的一种缺页异常处理表的结构图。如图13所示,缺页异常处理者标签与缺页异常处理入口间的对应关系可以为缺页异常处理表(fault handler table)。缺页异常处理表的结构可以为key-value键值对。在一种可选的实施方式中,缺页异常处理表中可以包含一个默认缺页异常处理表项(图中未示出)和若干个具体异常处理者标签对应的缺页异常处理表项。
示例性的,继续参见图13。在一种可选的实施方式中,缺页异常处理表的建立遵守以下2个约束:第一个约束为:缺页异常处理表项中的内容不能为空,即作为键的表项default label和作为值的表项default fault handler entry中必须有内容。第二约束为:作为键的不同表项中内容也就是异常处理者标签default label不同,并且每个default label对应一个异常处理入口default fault handler entry。例如,标签label1对应入口fault handler entry1,标签label2对应入口fault handler entry2,……,标签labelm对应入口fault handler entrym。
在一种可选的实施方式中,基于缺页异常处理表,异常处理注册模块可以抽象出四个原语:fault_handler_table_init,fault_handler_table_register,fault_handler_table_dispatcher,和fault_handler_table_unregister。其中,原语是指由若干条指令组成的程序段,用于实现某个特定功能,在执行过程中不可被中断。下面介绍异常处理注册模块抽象出的每个原语的含义:
fault_handler_table_init:初始化缺页异常处理表fault handler table,并指定表项default label和表项default fault handler entry。
fault_handler_table_register:接收标签添加模块发送的缺页异常处理者标签label和 fault handler entry键值对,寻找缺页异常处理表中的空闲表项也就是未使用的表项填入该键值对。
fault_handler_table_dispatcher:根据输入的label寻找对应表项,返回表项中的入口fault handler entry。可以理解的是,该原语用于确定缺页异常处理者。
fault_handler_table_unregister:根据输入的label寻找对应表项,并移除对应表项。
微内核中的内核态内存管理服务在确定了缺页异常处理者标签后,调用异常处理注册模块查找上述缺页异常处理表,得到缺页异常处理者的入口fault handler entry。
在一种可选的实施方式中,可以设置默认的缺页异常处理者,以在确定缺页异常处理者失败时,将默认的缺页异常处理者作为所确定的缺页异常处理者。确定缺页异常处理者失败可以包括但不限于:遍历页表没有查找到有效也就是符合预设条件的缺页异常处理者标签。例如,访问请求是对虚拟地址空间的进行写的操作,但缺乏写权限会触发缺页异常,该缺页异常可以由缺页异常处理服务进行写权限的补入或者反馈无写权限等缺页异常处理。此时,物理地址空间已分配,可以建立物理地址空间与虚拟地址空间的映射,该虚拟地址空间对应的缺页异常处理者标签就会被覆盖为该物理地址空间,也就是说,被覆盖为物理地址空间和虚拟地址空间的映射关系,而非有效的缺页异常处理者标签,那么微内核可以将缺页异常信息发送给默认的缺页异常处理者,由默认的缺页异常处理者处理该类缺页异常。其中,默认的缺页异常处理者例如可以是匿名内存缺页处理服务。这样,可以适用于不存在有效的缺页异常处理者标签的场景,扩展了本申请的适用范围。
图14a为示例性示出的一种缺页异常处理架构的结构图。如图14a所示,在图11 所示架构的基础上,电子设备还可以包括硬件层,该硬件层具体可以包括CPU,内存,网卡,磁盘等部件。图14b为示例性示出的一种缺页异常处理架构的结构图。如图14b 所示,对于多个运行域的电子设备,每个运行域可以包括图12所示的模块,各模块的功能可以参见图11的描述,此处不再赘述。例如,运行域D1包括线程管理服务, IO管理服务,文件管理服务和用户态内存管理服务,用户态内存管理服务中新增有标签生成模块和标签添加模块。运行域D2包括线程管理服务,IO管理服务,文件管理服务和用户态内存管理服务,用户态内存管理服务中新增有标签生成模块和标签添加模块。在一种示例中,图14b所示的架构中还可以包括硬件层,具体可以参见图14a 所示的硬件层。
可以理解的是,上述图11,图14a和图14b描述的架构,均为对实现图8和图9 实施例的电子设备的架构的示例性描述,该电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
本实施例中,异常处理组件标签可以按照虚拟地址空间的内存类型添加,与按照虚拟地址空间的内存类型固定划分的虚拟地址空间范围相比,可以保证对虚拟地址空间灵活使用,避免固定划分导致的适用场景不兼容问题。
S1203,微内核发送缺页信息至所确定的缺页异常处理服务。
微内核在确定了异常处理者标签后,可以发送缺页信息至所确定的缺页异常处理服务。示例性的,如图11所示,电子设备中还可以在内核态内存管理服务中新增异常处理调用模块。基于此,微内核中的内核态内存管理服务可以调用异常处理调用模块执行 S1103,从异常处理注册模块中查找异常处理入口,异常处理调用模块执行S1204,发送缺页信息至所查找的异常处理入口所指示的缺页异常处理服务(如文件管理服务)。如图 14a所示,在图11所示架构的基础上,电子设备还可以包括硬件层,该硬件层具体可以包括CPU,内存,网卡,磁盘等部件。图14b为示例性示出的一种缺页异常处理架构的结构图。如图14b所示,对于多个运行域的电子设备,每个运行域可以包括图11 所示的模块,各模块的功能可以参见图11的描述,此处不再赘述。
为了便于理解本申请实施例提供的缺页异常的处理流程涉及的不同服务间的交互,参见图5中的以下步骤:
S501,微内核查找标签。
S502,微内核发送缺页信息至标签对应的缺页异常处理服务。
上述S501至S502与图12中的S1202至S1203为相同步骤,此处不再赘述,详见上述图12实施例中对S1202至S1203的描述。结合图5中S501至S502涉及的服务,可见本申请的内存访问中处理缺页异常避免了系统服务层中的内存管理服务与缺页异常处理服务间的进程间通信,不同服务间的交互发生在内核层与系统服务层之间,系统服务层中不存在为了处理缺页异常进行的进程间通信。
S1204,缺页异常处理服务基于缺页信息,分配物理地址空间。
S1204与图3实施例中的S305为相同步骤,此处不再赘述,详见上述图3实施例对S305的描述。
S1205,缺页异常处理服务基于虚拟地址空间与物理地址空间的映射关系,更新物理地址空间信息的页表项。
S1205与图3实施例中的S307为相似步骤,对于相同部分此处不再赘述,详见上述图3实施例对S307的描述。区别在于,缺页异常处理服务执行S1205时,存在用于记录缺页异常处理者标签的预存的页表可以直接使用。缺页异常处理服务可以基于虚拟地址空间与物理地址空间的映射关系,更新物理地址空间信息的页表项,也就是将分配的物理地址空间,按照该物理地址空间与虚拟地址空间之间的映射关系,更新至该预存的页表中。例如,预存的页表可以为图10d所示的页表,分配的物理地址空间为物理地址空间PA[47:12],缺页异常处理服务可以按照该物理地址空间与虚拟地址空间VA的映射关系,也就是可以按照图10d查找异常处理者标签Lablem的索引关系,将映射入口Entry3中的异常处理者标签Lablem更新为物理地址空间PA[47:12],得到更新的页表如图10b所示的页表。也就是说,更新前的页表记录虚拟地址空间与异常处理者标签间的映射关系,更新后的页表记录虚拟地址空与所分配的物理地址空间之间的映射关系。
S1206,缺页异常处理服务发送异常处理反馈至微内核。
S1206与图3实施例中的S308为相同步骤,此处不再赘述,详见上述图3实施例对S308的描述。
这样,访存请求者可以根据更新的页表,进行虚拟地址空间的访问。访存请求者对虚拟地址空间的具体访问与图3实施例中访存请求者对虚拟地址空间的访问相似,对于相同部分此处不再赘述,详见上述图3实施例的相关描述。区别在于,图12实施例中访存请求者利用的是更新的页表,而非缺页异常处理服务在分配物理地址空间后创建的页表。
本申请实施例中,微内核在检测到访问请求对应的虚拟地址空间的缺页异常时,可以基于该虚拟地址空间的异常处理组件标签,直接确定缺页异常处理服务,从而直接与缺页异常处理服务交互,实现内存访问。这样,可以避免特定异常处理者与缺页异常处理者间的进程间交互,从而提高内存访问的效率。其中,根据虚拟地址空间的内存类型添加的处理组件标签,可以直接指示该内存类型的缺页异常处理组件,与按照内存类型固定划分的虚拟地址空间范围相比,可以保证对虚拟地址空间的灵活使用,避免固定划分虚拟地址空间范围导致的应用场景不兼容的问题。
在一种示例中,在电子设备的启动阶段,内核态的内存管理服务可以调用异常处理注册模块提供的fault_handler_table_init接口初始化预存的缺页异常处理表。在一种可选的实施方式中,当图9中的S902在S901之前执行或者和S901同时执行时,S902可以作为启动阶段的步骤,以生成缺页异常处理者标签。在一种可选的实施方式中,S1102也可以作为启动阶段的步骤,以实现缺页异常处理者入口的注册。
在一种示例中,虚存分配阶段,也就是电子设备的用户态内存管理服务分配虚拟地址空间的阶段,可以包括:用户态内存管理服务分配虚拟地址空间,创建页表,和根据该虚拟地址空间的内存类型确定相应的缺页异常标签,并将缺页异常标签添加至该页表种。
在一种示例中,缺页异常处理阶段可以包括:微内核通过遍历页表的方式获取发生缺页异常的虚拟地址空间对应的缺页异常标签,微内核中的内核态内存管理服务通过调用异常处理注册模块模块提供的fault_handler_table_dispatcher接口找到缺页异常标签对应的缺页异常处理入口,微内核中的内核态内存管理服务调用异常处理调用模块根据缺页异常处理入口,将缺页异常信息发送给对应的系统服务处理。
在缺页异常处理阶段之后,可以进入内存访问阶段,具体可以参见上述实施例中对访存请求者访问虚拟地址空间的描述。
为了便于理解,下面以不同的缺页异常处理组件为例,对本申请实施例提供的内存访问方法中,缺页异常的处理进行说明。
示例性的,图15为示例性示出的一种缺页异常处理方法的处理场景示意图。如图15所示,已分配的虚拟地址空间的内存类型,可能为匿名内存,IO内存或者文件内存。下面介绍访问不同内存类型的虚拟地址空间时,所触发的缺页异常的处理过程:
处理IO内存或者文件内存类型的虚拟地址空间对应的缺页异常:
以访问IO内存类型的虚拟地址地址空间触发缺页异常为例。在内核层,缺页异常发生后微内核以遍历(page walk)页表的方式确定该虚拟地址空间对应的页表项,得到缺页异常处理者标签例如IO类型标签“IO异常处理者标签(io fault handler label)”。微内核中的内核态内存管理服务调用异常处理注册模块根据IO类型标签从缺页异常处理表中查找异常处理入口(如异常处理入口1(fault handler entry1))。微内核中的内核态内存管理服务调用异常处理调用模块的fault_handler_table_dispatche接口,将缺页异常分发给系统服务层的IO内存缺页异常处理服务(IO manager)进行处理。
处理文件内存类型的虚拟地址空间对应的缺页异常的过程,与IO内存类型的类似,区别在于具体的异常处理者标签和异常处理服务分别为文件类型标签,文件内存缺页异常处理服务。对于相同部分此处不再赘述,详见上述对IO内存类型的描述。
处理匿名内存类型的虚拟地址空间对应的缺页异常:
匿名内存类型的虚拟地址空间对应的缺页异常,与IO内存类型的类似,区别在于具体的异常处理者标签和异常处理服务分别为匿名类型标签,匿名内存缺页异常处理服务。对于相同部分此处不再赘述,详见上述对IO内存类型的描述。在一种可选的实施方式中,匿名内存类型的虚拟地址空间往往占比较大,对此,用户态的内存管理服务可以在匿名内存类型的虚拟地址空间对应的物理地址空间页表项中不添加缺页异常处理标签。例如,该物理地址空间页表项可以为空,或者可以为图15中的“无标签”,以精简缺页异常处理流程和降低存储空间成本,从而进一步提高内存访问的效率。此时,可以将匿名内存缺页处理服务作为默认的缺页异常处理服务,这样,在标签缺失的情况下,微内核会把缺页异常信息转发给默认的缺页异常处理者。
本申请上述实施例中的缺页异常处理是指映射属性维度也就是内存类型维度的缺页异常处理。可以理解的是,缺页异常处理可以是另一个维度的,此时,存在两种缺页异常:①主缺页中断(Major Page Fault)也称为硬缺页中断(Hard Page Fault),指需要访问的内存不在虚拟地址空间,也不在物理地址空间中,需要从慢速设备载入。慢速设备是指存储区域网络(Storage Area Network,SAN)网络中的一个状态异常的端设备(主机或存储),状态异常表现为端设备(主机或存储)无法正常快速响应。②次缺页中断(Minor PageFault) 也称为软缺页中断(Soft Page Fault),指需要访问的内存不在虚拟地址空间,但是在物理地址空间中,只需要内存管理服务建立物理地址空间和虚拟地址空间的映射关系即可。
对于上述①和②中的缺页异常,可以采用与本申请实施例类似的方法,以提高内存访问的效率。区别在于,在上述①和②中的缺页异常处理场景中,缺页异常处理者标签可以按照①和②的差异划分,相应地,缺页异常处理者标签对应的缺页异常处理入口为①和②中的缺页异常的处理单元。具体的处理单元可以参见相关已有技术,此处不再赘述。
应当理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/ 或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
本实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
一个示例中,图16为本申请实施例提供的一种装置1600的一个示例性的示意性框图,如图16所示,装置1600可包括:处理器1601和收发器/收发管脚1602,可选地,还包括存储器1603。
装置1600的各个组件通过总线1604耦合在一起,其中总线1604除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都称为总线1604。
可选地,存储器1603可以用于前述方法实施例中的指令。该处理器1601可用于执行存储器1603中的指令,并控制接收管脚接收信号,以及控制发送管脚发送信号。
装置1600可以是上述方法实施例中的电子设备或电子设备的芯片。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的大屏业务的跨设备流转操控方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的大屏业务的跨设备流转操控方法。
另外,本申请实施例的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的大屏业务的跨设备流转操控方法。
其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请实施例各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本申请实施例的范围之内。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请实施例各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
上面结合附图对本申请实施例的实施例进行了描述,但是本申请实施例并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请实施例的启示下,在不脱离本申请实施例宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请实施例的保护之内。

Claims (18)

1.一种内存访问方法,其特征在于,所述方法包括:
获取第一访问请求,所述第一访问请求用于指示访问第一虚拟地址空间;
若检测到对应于所述第一虚拟地址空间的第一缺页异常,获取所述第一虚拟地址空间的处理组件标签;其中,所述第一虚拟地址空间的处理组件标签用于标识对应于所述第一虚拟地址空间的第一处理组件;
基于所述第一虚拟地址空间的处理组件标签,指示所述第一处理组件对所述第一缺页异常进行异常处理。
2.根据权利要求1所述的方法,其特征在于,所述获取所述第一虚拟地址空间的处理组件标签,包括:
根据所述第一虚拟地址空间,从页表中查找所述处理组件标签;其中,所述处理组件标签包含在所述第一虚拟地址空间的页表的目标页表项中;所述页表为在预先分配所述第一虚拟地址空间时建立;所述目标页表项为所述页表中用于记录所述第一虚拟地址空间对应的物理地址空间信息的页表项。
3.根据权利要求1或2所述的方法,其特征在于,所述处理组件标签为根据所述第一虚拟地址空间的内存类型,和所述内存类型对应的处理组件的组件标识生成。
4.根据权利要求2-3中任一项所述的方法,其特征在于,所述基于所述第一虚拟地址空间的处理组件标签,指示所述第一处理组件对所述第一缺页异常进行异常处理之后,所述方法还包括:
获取第二访问请求,所述第二访问请求用于指示访问第二虚拟地址空间;
若检测到对应于所述第二虚拟地址空间的第二缺页异常,获取所述第二虚拟地址空间的处理组件标签;其中,所述第二虚拟地址空间的处理组件标签用于标识对应于所述第二虚拟地址空间的第二处理组件;
检测所述第二虚拟地址空间的处理组件标签是否满足预设条件;
若不满足预设条件,指示指定处理组件对所述第二缺页异常进行异常处理。
5.根据权利要求4所述的方法,其特征在于,所述指定处理组件为匿名页处理组件;相应地,若所述第一虚拟地址空间的内存类型为匿名页类型,为所述第一虚拟地址空间分配的处理组件标签为空。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述基于所述第一虚拟地址空间的处理组件标签,指示所述第一处理组件对所述第一缺页异常进行异常处理,包括:
基于所述第一虚拟地址空间的处理组件标签和预先建立的标签与处理组件信息的对应关系,确定目标处理组件信息;
基于所述目标处理组件信息,指示所述第一处理组件对所述第一缺页异常进行异常处理。
7.根据权利要求6所述的方法,其特征在于,所述若检测到所述第一虚拟地址空间对应的第一缺页异常,获取所述第一虚拟地址空间的处理组件标签之前,所述方法还包括:
响应于预先分配的至少一种处理组件标签,基于所述至少一种处理组件标签和所述至少一种处理组件标签分别对应的处理组件信息,生成键值对;
创建记录所述键值对的缺页异常处理表,得到所述预先建立的标签与处理组件信息的对应关系。
8.一种内存访问装置,其特征在于,所述装置包括:
请求获取模块,被配置为获取第一访问请求,所述第一访问请求用于指示访问第一虚拟地址空间;
标签获取模块,被配置为若检测到对应于所述第一虚拟地址空间的第一缺页异常,获取所述第一虚拟地址空间的处理组件标签;其中,所述第一虚拟地址空间的处理组件标签用于标识对应于所述第一虚拟地址空间的第一处理组件;
异常处理模块,被配置为基于所述第一虚拟地址空间的处理组件标签,指示所述第一处理组件对所述第一缺页异常进行异常处理。
9.根据权利要求8所述的装置,其特征在于,所述标签获取模块,进一步被配置为:
根据所述第一虚拟地址空间,从页表中查找所述处理组件标签;其中,所述处理组件标签包含在所述第一虚拟地址空间的页表的目标页表项中;所述页表为在预先分配所述第一虚拟地址空间时建立;所述目标页表项为所述页表中用于记录所述第一虚拟地址空间对应的物理地址空间信息的页表项。
10.根据权利要求8或9所述的装置,其特征在于,所述处理组件标签为根据所述第一虚拟地址空间的内存类型,和所述内存类型对应的处理组件的组件标识生成。
11.根据权利要求9-10中任一项所述的装置,其特征在于,
所述请求获取模块,还被配置为获取第二访问请求,所述第二访问请求用于指示访问第二虚拟地址空间;
所述标签获取模块,还被配置为若检测到对应于所述第二虚拟地址空间的第二缺页异常,获取所述第二虚拟地址空间的处理组件标签;其中,所述第二虚拟地址空间的处理组件标签用于标识对应于所述第二虚拟地址空间的第二处理组件;检测所述第二虚拟地址空间的处理组件标签是否满足预设条件;
所述异常处理模块,还被配置为若不满足预设条件,指示指定处理组件对所述第二缺页异常进行异常处理。
12.根据权利要求11所述的装置,其特征在于,所述指定处理组件为匿名页处理组件;相应地,若所述第一虚拟地址空间的内存类型为匿名页类型,为所述第一虚拟地址空间分配的处理组件标签为空。
13.根据权利要求8-12中任一项所述的装置,其特征在于,所述异常处理模块,进一步被配置为:
基于所述第一虚拟地址空间的处理组件标签和预先建立的标签与处理组件信息的对应关系,确定目标处理组件信息;
基于所述目标处理组件信息,指示所述第一处理组件对所述第一缺页异常进行异常处理。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
注册模块,被配置为响应于预先分配的至少一种处理组件标签,基于所述至少一种处理组件标签和所述至少一种处理组件标签分别对应的处理组件信息,生成键值对;创建记录所述键值对的缺页异常处理表,得到所述预先建立的标签与处理组件信息的对应关系。
15.一种电子设备,其特征在于,包括:
处理器和收发器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至7中任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,包括计算机程序,其特征在于,当所述计算机程序在摄像头上运行时,使得所述摄像头执行如权利要求1至7中任意一项所述的方法。
17.一种芯片,其特征在于,包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,使得所述电子设备执行权利要求1至7中任意一项所述的方法。
18.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序被电子设备执行时,使得所述电子设备执行权利要求1至7中任意一项所述的方法。
CN202210878562.0A 2022-07-25 2022-07-25 内存访问方法及装置 Pending CN117407326A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210878562.0A CN117407326A (zh) 2022-07-25 2022-07-25 内存访问方法及装置
PCT/CN2023/104015 WO2024021995A1 (zh) 2022-07-25 2023-06-29 内存访问方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210878562.0A CN117407326A (zh) 2022-07-25 2022-07-25 内存访问方法及装置

Publications (1)

Publication Number Publication Date
CN117407326A true CN117407326A (zh) 2024-01-16

Family

ID=89489583

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210878562.0A Pending CN117407326A (zh) 2022-07-25 2022-07-25 内存访问方法及装置

Country Status (2)

Country Link
CN (1) CN117407326A (zh)
WO (1) WO2024021995A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117851291A (zh) * 2024-03-07 2024-04-09 北京象帝先计算技术有限公司 内存访问系统、电子组件及电子设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761737A (en) * 1986-01-16 1988-08-02 International Business Machines Corporation Method to automatically increase the segment size of unix files in a page segmented virtual memory data processing system
US20130346719A1 (en) * 2012-06-21 2013-12-26 Alexander I. Tomlinson Systems and methods for efficient memory access
CN103853665A (zh) * 2012-12-03 2014-06-11 华为技术有限公司 存储空间分配方法及设备
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存系统、内存访问请求的处理方法和计算机系统
CN106383747A (zh) * 2016-08-31 2017-02-08 华为技术有限公司 一种计算资源调度方法及装置
US20190310947A1 (en) * 2018-04-05 2019-10-10 International Business Machines Corporation Memory access based i/o operations
CN111435302A (zh) * 2019-01-14 2020-07-21 阿里巴巴集团控股有限公司 一种应用程序的处理方法及装置
CN113297265A (zh) * 2021-02-22 2021-08-24 阿里巴巴集团控股有限公司 数据处理方法以及装置
CN114546897A (zh) * 2020-11-26 2022-05-27 龙芯中科技术股份有限公司 内存访问方法、装置、电子设备及存储介质
CN114661414A (zh) * 2022-03-04 2022-06-24 阿里巴巴(中国)有限公司 计算系统、内存缺页处理方法及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996357B2 (en) * 2015-10-30 2018-06-12 International Business Machines Corporation Resolving page faults out of context for shared contexts
CN114579480A (zh) * 2022-03-10 2022-06-03 苏州浪潮智能科技有限公司 一种缺页处理方法、装置、系统、电子设备及存储介质
CN114691391A (zh) * 2022-03-14 2022-07-01 阿里巴巴(中国)有限公司 增强型包过滤器的内核态程序的超级调用方法及装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761737A (en) * 1986-01-16 1988-08-02 International Business Machines Corporation Method to automatically increase the segment size of unix files in a page segmented virtual memory data processing system
US20130346719A1 (en) * 2012-06-21 2013-12-26 Alexander I. Tomlinson Systems and methods for efficient memory access
CN103853665A (zh) * 2012-12-03 2014-06-11 华为技术有限公司 存储空间分配方法及设备
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存系统、内存访问请求的处理方法和计算机系统
CN106383747A (zh) * 2016-08-31 2017-02-08 华为技术有限公司 一种计算资源调度方法及装置
US20190310947A1 (en) * 2018-04-05 2019-10-10 International Business Machines Corporation Memory access based i/o operations
CN111435302A (zh) * 2019-01-14 2020-07-21 阿里巴巴集团控股有限公司 一种应用程序的处理方法及装置
CN114546897A (zh) * 2020-11-26 2022-05-27 龙芯中科技术股份有限公司 内存访问方法、装置、电子设备及存储介质
CN113297265A (zh) * 2021-02-22 2021-08-24 阿里巴巴集团控股有限公司 数据处理方法以及装置
CN114661414A (zh) * 2022-03-04 2022-06-24 阿里巴巴(中国)有限公司 计算系统、内存缺页处理方法及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘晨: "基于内核函数监控的Linux系统防护方法的研究与实现", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》, 15 June 2018 (2018-06-15), pages 138 - 82 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117851291A (zh) * 2024-03-07 2024-04-09 北京象帝先计算技术有限公司 内存访问系统、电子组件及电子设备

Also Published As

Publication number Publication date
WO2024021995A1 (zh) 2024-02-01

Similar Documents

Publication Publication Date Title
US11947974B2 (en) Application start method and electronic device
WO2022262530A1 (zh) 内存管理的方法及电子设备
US10437601B2 (en) Centralized memory management for multiple device streams
CN114968384B (zh) 一种功能调用方法和装置
WO2021104259A1 (zh) 一种快应用与原生应用间数据共享的方法及终端
EP4095723B1 (en) Permission reuse method, permission reuse-based resource access method, and related device
CN116315667B (zh) 数据传输方法、装置、设备及存储介质
US10673917B2 (en) Pluggable components for augmenting device streams
CN117130541B (zh) 存储空间配置方法及相关设备
CN112416984B (zh) 一种数据处理方法及其装置
CN115309547B (zh) 处理异步binder调用的方法和装置
CN117407326A (zh) 内存访问方法及装置
WO2022042245A1 (zh) 确定物理地址的方法及芯片系统
CN113950033B (zh) 数据传输方法和设备
WO2021238376A1 (zh) 功能包的加载方法、装置、服务器和电子设备
CN116136826A (zh) 内存访问方法、芯片、电子设备及计算机可读存储介质
CN112783418B (zh) 一种存储应用程序数据的方法及移动终端
CN114461589A (zh) 读取压缩文件的方法、文件系统及电子设备
CN115543600A (zh) 内存空间管理方法和内存空间管理装置
US20230266879A1 (en) System, method and computer-readable storage medium for direct memory accesses
CN116185245B (zh) 一种页面显示方法及电子设备
CN113495869B (zh) 文件系统空间的调整方法、装置和电子设备
WO2024007944A1 (zh) 扩展内存隔离域的方法和电子设备
CN115840528A (zh) 存储盘的水线设置方法、电子设备及存储介质
CN117707453A (zh) 一种节点信息的读取方法、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination