CN114327777A - 确定全局页目录的方法、装置、电子设备及存储介质 - Google Patents
确定全局页目录的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114327777A CN114327777A CN202111656671.XA CN202111656671A CN114327777A CN 114327777 A CN114327777 A CN 114327777A CN 202111656671 A CN202111656671 A CN 202111656671A CN 114327777 A CN114327777 A CN 114327777A
- Authority
- CN
- China
- Prior art keywords
- page directory
- global page
- core
- data
- address
- 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.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例提供了一种确定全局页目录的方法、装置、电子设备及存储介质,涉及计算机技术领域。该方法应用于多核系统,该方法包括:对于任一核心,获取初始全局页目录,初始全局页目录包括所有内存数据的虚拟地址与物理地址的映射关系,所有内存数据包括各核心均可读取的共享数据和各核心的私有数据;对全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录,修改后的全局页目录包括共享数据和仅核心可读取的私有数据的虚拟地址与物理地址的映射关系;将修改后的全局页目录作为核心对应的全局页目录,以使该核心基于全局页目录读取内存数据。本申请解决了核心的私有数据可能被泄漏的安全缺陷。
Description
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种确定全局页目录的方法、装置、电子设备及存储介质。
背景技术
虚拟化已经成为计算机领域一种流行的技术。虚拟化技术允许在同一物理主机上运行多个用户操作系统,将多个虚拟机整合到单个硬件平台上。虚拟化技术可以降低成本并提高可管理性,计算资源还可以根据应用需求进行灵活的调整和优化。提供虚拟化的软件或系统称为虚拟机监视器(Virtual Machine Monitor)或Hypervisor。虚拟机监视器可以直接在裸硬件上运行(可称为Type-1型),也可以在操作系统上运行(可称为Type-2型)。
与Type-2类型的虚拟机监视器不同,Type-1类型的虚拟机监视器的内核需要直接管理物理内存。在一个多核系统中,多个处理器核心均能访问所有的物理内存,对于不同的核心,同一个虚拟内存地址对应的是同一物理内存,且所有核心在内核态(kernel mode)使用同一用于内核虚拟地址翻译的页表,此时便会存在一个核心的处理器访问另一个核心的私有数据的问题,从而使虚拟机监视器内核数据的安全性受到威胁。
发明内容
本申请实施例提供了一种确定全局页目录的方法、装置、电子设备及存储介质,可以解决核心的私有数据泄漏的问题。该技术方案如下:
根据本申请实施例的一个方面,提供了一种确定全局页目录的方法,其特征在于,该方法应用于多核系统,该方法包括:
对于任一核心,获取初始全局页目录,初始全局页目录包括所有内存数据的虚拟地址与物理地址的映射关系,所有内存数据包括各核心均可读取的共享数据和各核心的私有数据;
对全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录,修改后的全局页目录包括共享数据和仅核心可读取的私有数据的虚拟地址与物理地址的映射关系;
将修改后的全局页目录作为核心对应的全局页目录,以使核心基于全局页目录读取内存数据。
可选的,对全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录,包括:
对初始全局页目录进行复制,得到全局页目录副本;
获取未映射虚拟地址;
将全局页目录副本中核心的私有数据的物理地址映射至未映射虚拟地址;
将全局页目录副本中其它核心的私有数据的虚拟地址与物理地址的映射关系删除,得到修改后的全局页目录副本,其它核心为所有核心中除核心之外的核心。
可选的,多核系统包括一个主核心,初始全局页目录是主核心在多核系统启动时基于预留的内存空间创建的。
可选的,各核心的全局页目录中私有数据对应的虚拟地址相同。
可选的,将修改后的全局页目录作为核心对应的全局页目录之后,还包括:
将全局页目录的物理地址写入核心对应的目标寄存器。
可选的,核心基于全局页目录读取内存数据,包括:
响应于数据读取请求,数据读取请求中包括待读取数据的标识;
确定标识对应的目标虚拟地址并发送至内存管理单元,以使内存管理单元基于目标寄存器中写入的全局页目录的物理地址获取全局页目录,并根据全局页目录确定目标虚拟地址对应的目标物理地址返回至核心;
根据物理地址从内存空间内读取待读取数据。
可选的,各核心的私有数据通过预定义的结构体表示,结构体的全局变量的链接段为未映射虚拟地址,各核心的链接脚本中链接段的输出内存地址为未映射虚拟地址。
根据本申请实施例的另一个方面,提供了一种确定全局页目录的装置,该装置应用于多核系统,该装置包括:
初始全局页目录获取模块,用于对于任一核心,获取初始全局页目录,初始全局页目录包括所有内存数据的虚拟地址与物理地址的映射关系,所有内存数据包括各核心均可读取的共享数据和各核心的私有数据;
全局页目录修改模块,用于对全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录,修改后的全局页目录包括共享数据和仅核心可读取的私有数据;
全局页目录确定模块,用于将修改后的全局页目录作为核心对应的全局页目录,以使核心基于全局页目录读取内存数据。
可选的,全局页目录修改模块在对全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录时,具体用于:
对初始全局页目录进行复制,得到全局页目录副本;
获取未映射虚拟地址;
将全局页目录副本中核心的私有数据的物理地址映射至未映射虚拟地址;
将全局页目录副本中其它核心的私有数据的虚拟地址与物理地址的映射关系删除,得到修改后的全局页目录副本,其它核心为所有核心中除核心之外的核心。
可选的,多核系统包括一个主核心,初始全局页目录是主核心在多核系统启动时基于预留的内存空间创建的。
可选的,各核心的全局页目录中私有数据对应的虚拟地址相同。
可选的,该装置还包括地址写入模块,用于:
在将修改后的全局页目录作为核心对应的全局页目录之后,将全局页目录的物理地址写入核心对应的目标寄存器。
可选的,该装置还包括数据读取模块,用于:
响应于数据读取请求,数据读取请求中包括待读取数据的标识;
确定标识对应的目标虚拟地址并发送至内存管理单元,以使内存管理单元基于目标寄存器中写入的全局页目录的物理地址获取全局页目录,并根据全局页目录确定目标虚拟地址对应的目标物理地址返回至核心;
根据物理地址从内存空间内读取待读取数据。
可选的,各核心的私有数据通过预定义的结构体表示,结构体的全局变量的链接段为未映射虚拟地址,各核心的链接脚本中链接段的输出内存地址为未映射虚拟地址。
根据本申请实施例的另一个方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上的计算机程序,处理器执行实现确定全局页目录的方法中任一项方法的步骤。
根据本申请实施例的再一个方面,提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现确定全局页目录的方法中任一项方法的步骤。
根据本申请实施例的再一个方面,提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现确定全局页目录的方法的步骤。
本申请实施例提供的技术方案带来的有益效果是:
在本申请实施例中,对于多核系统的任一核心,每个核心存在对应于自身的全局页目录,且该全局页目录中存在共享数据和仅该核心可读取的私有数据的虚拟地址与物理地址的映射关系,后续采用该全局页目录进行数据读取时,由于该全局页目录中仅有自己的私有数据的虚拟地址与物理地址的映射关系,因此无法获取到其它核心的私有数据的虚拟地址与物理地址的映射关系,进而无法对其它核心的私有数据进行读取,有效的避免了一个核心上的内核被攻破后能访问其他核心的私有数据的安全缺陷,提高了整个虚拟机监视器系统的虚拟机和虚拟机间内存的隔离性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种确定全局页目录的方法的流程示意图;
图2a为本申请实施例提供的一种初始全局页目录的映射示意图;
图2b为本申请实施例提供的一种修改后的全局页目录的映射示意图;
图3为本申请实施例提供的又一种确定全局页目录的方法的流程示意图;
图4为本申请实施例提供的一种确定全局页目录的装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先对本申请涉及的几个名词进行介绍和解释:
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,在实体计算机中能够完成的工作一般在虚拟机中都能够实现。在计算机等电子设备中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量,每个虚拟机都可以视为有独立的硬件和操作系统,可以像使用实体机一样对虚拟机进行操作。
虚拟机监视器(Hypervisor),也可称做VMM(virtual machine monitor),是一种运行在物理硬件和操作系统之间的中间软件层,可允许多个操作系统或应用共享硬件。Hypervisors可以视为一种在虚拟环境中的“元”操作系统,可以访问包括磁盘和内存在内的所有物理硬件,Hypervisors不但协调着这些硬件资源的访问,同时也能在各个虚拟机之间施加防护。
对于Type-1类型的虚拟机监视器,其内核需要直接管理物理内存,核心会被分配到不同的虚拟机,而虚拟机又可以通过超调用(又称Hypercall)的方式向当前核心请求特权的服务,若此时虚拟机监视器存在缓冲区溢出则可能带来内核数据泄漏的安全缺陷,此时便可能被虚拟机取得关键的内核数据,甚至是运行于其他处理器核心的虚拟机的内存数据。因此,传统页表的使用使得虚拟机监视器内核数据的安全性受到威胁。
基于此,本申请实施例提供一种确定全局页目录的方法、装置、电子设备及存储介质,旨在解决现有技术中存在的部分或全部技术问题。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
如图1所示,本申请实施例中提供了一种确定全局页目录的方法,该方法应用于多核系统,该方法具体包括:
步骤S101,对于任一核心,获取初始全局页目录,初始全局页目录包括所有内存数据的虚拟地址与物理地址的映射关系,所有内存数据包括各核心均可读取的共享数据和各核心的私有数据。
可选的,当任一核心启动时,该核心可以获取初始全局页目录,该初始全局页目录中包括多核系统中所有核心的内存数据的虚拟地址与物理地址的映射关系,而该所有内存数据包括多核系统中每个核心均可读取的共享数据、以及仅可每个核心自己读取的私有数据。
本申请实施例中一种可选的实施方式,多核系统包括一个主核心,初始全局页目录是主核心在多核系统启动时基于预留的内存空间创建的。
可选的,本申请实施例中的多核系统可以包括一个主核心,该主核心指的是多核系统最先启动的核心。相应的,当多核系统启动时,该主核心可以基于预留的内存空间创建填充页目录的页表项,得到初始全局页目录,使得各核心均可读取的共享数据和各核心的私有数据的虚拟地址都能按一特定的偏移线性地映射到物理地址。
步骤S102,对全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录,修改后的全局页目录包括共享数据和仅核心可读取的私有数据的虚拟地址与物理地址的映射关系。
可选的,任一核心获取到初始全局页目录后,可以对该全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录,此时修改后的全局页目录仅保留了共享数据的虚拟地址与物理地址的映射关系以及仅该核心可读取的私有数据的虚拟地址与物理地址的映射关系。
本申请实施例中一种可选的实施方式,对全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录,包括:
对初始全局页目录进行复制,得到全局页目录副本;
获取未映射虚拟地址,未映射虚拟地址指的是未被映射至物理地址的虚拟地址;
将全局页目录副本中核心的私有数据的物理地址映射至未映射虚拟地址;
将全局页目录副本中其它核心的私有数据的虚拟地址与物理地址的映射关系删除,得到修改后的全局页目录副本,其它核心为所有核心中除该核心之外的核心。
可选的,任一核心在对全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改时,可以对获取到的初始全局页目录进行复制,得到全局页目录副本,然后将该全局页目录副本中该核心的私有数据的物理地址映射至一个未被映射至物理地址的虚拟地址(即未映射虚拟地址),并将全局页目录副本中除该核心之外的核心的私有数据的虚拟地址与物理地址的映射关系删除,得到修改后的全局页目录副本。
步骤S103,将修改后的全局页目录作为核心对应的全局页目录,以使核心基于全局页目录读取内存数据。
相应的,在得到修改后的全局页目录后,可以将该修改后的全局页目录作为核心对应的全局页目录,后续该核心可以基于该全局页目录读取内存数据。同理,对于多核系统中的其它核心,可以基于同样的方式得到各自对应的全局页目录,在此便不再赘述。
在本申请实施例中,对于多核系统的任一核心,每个核心存在对应于自身的全局页目录,且该全局页目录中存在共享数据和仅该核心可读取的私有数据的虚拟地址与物理地址的映射关系,后续采用在该全局页目录进行数据读取时,由于该全局页目录中仅有自己的私有数据的虚拟地址与物理地址的映射关系,此时无法获取到其它核心的私有数据的虚拟地址与物理地址的映射关系,因此无法对其它核心的私有数据进行读取,有效的避免了一个核心上的内核被攻破后能访问其他核心的私有数据的安全缺陷,提高了整个虚拟机监视器系统的虚拟机和虚拟机间的内存的隔离性。
本申请实施例中一种可选的实施方式,各核心的全局页目录中私有数据对应的虚拟地址相同。
可选的,在确定各核心对应的全局页目录时,用于修改私有数据的虚拟地址与物理地址的映射关系的未映射虚拟地址可以相同,此时所得到的各核心对应的全局页目录中各私有数据对应于同一虚拟地址。
在本申请实施例中,由于各核心的私有数据的虚拟地址相同,后续在编译各核心访问私有数据的对应代码时可以采用相同的方式,简化了多个核心私有数据访问的对应代码,提升了数据处理效率。
本申请实施例中一种可选的实施方式,将修改后的全局页目录作为核心对应的全局页目录之后,还包括:
将全局页目录的物理地址写入核心对应的目标寄存器。
可选的,对于多核系统的任一核心,在得到该核心对应的全局页目录之后,可以将全局页目录的物理地址写入核心对应的寄存器(即目标寄存器),后续在进行映射翻译时,可以从目标寄存器获取全局页目录的物理地址,并根据全局页目录的物理地址获取到全局页目录,然后基于该全局页目录进行映射翻译。
本申请实施例中一种可选的实施方式,核心基于全局页目录读取内存数据,包括:
响应于数据读取请求,数据读取请求中包括待读取数据的标识;
确定标识对应的目标虚拟地址并发送至内存管理单元,以使内存管理单元基于目标寄存器中写入的全局页目录的物理地址获取全局页目录,并根据全局页目录确定目标虚拟地址对应的目标物理地址返回至核心;
根据物理地址从内存空间内读取待读取数据。
可选的,该多核系统可以包括内存管理单元(例如,一些商用芯片内集成有内存管理单元),基于内存管理单元进行虚拟地址与物理地址的翻译映射。对于多核系统的任一核心,当接收到数据读取请求时,可以对数据读取请求中包括的待读取数据的标识进行解析,得到该标识对应的虚拟地址(即目标虚拟地址)并发送至内存管理单元,进一步的,内存管理单元基于该核心对应的目标寄存器中写入的全局页目录的物理地址获取到该核心对应的全局页目录,并根据全局页目录将目标虚拟地址翻译映射至实际的物理地址(即目标物理地址)返回至核心,该核心基于目标物理地址读取待读取数据。
本申请实施例中一种可选的实施方式,各核心的私有数据通过预定义的结构体表示,结构体的全局变量的链接段为未映射虚拟地址,各核心的链接脚本中链接段的输出内存地址为未映射虚拟地址。
可选的,在得到各核心对应的全局页目录后可以通过预定义的结构体(例如C语言的struct)表示各核心的私有数据,并声明一个该结构体的全局变量(如cpu(centralprocessing unit,中央处理器)),并定义其属性(即attribute)。该结构体的全局变量的链接段(即link section)为特定段(即.cpu_private为未映射虚拟地址),并在各核心的链接脚本中加入该链接段的输出内存地址为未映射虚拟地址,如将.cpu_private段输出到0x400000000的内存地址上;进一步的,在读取某个核心的私有数据时,可以采用通常的方式访问该结构体(如printf(“%d”,cpu.id)),从而读取到私有数据。
可选的,如图2所示,本申请实施例提供一种原理示意图,以便更好的理解本申请实施例所提供的方法,在本示例中,多核系统共包括4个核心分别为核心一、核心二、核心三和核心四,核心一的私有数据为私有数据一,核心二的私有数据为私有数据二,核心三的私有数据为私有数据三,核心四的私有数据为私有数据四,且核心一为主核心,下面以确认核心一的全局页目录为例进行说明。
对于核心一,在该多核系统启动时基于预留的内存空间创建的初始全局页目录,该初始全局页目录中包括共享数据和所有私有数据的虚拟地址与物理地址的映射关系,共享数据和各核心的私有数据的虚拟地址存储于虚拟地址空间,共享数据和各核心的私有数据的物理地址存储于物理地址空间,具体可以如图2a所示。
进一步的,如图2b所示,主核心将初始全局页目录中私有数据一的物理地址映射至未映射虚拟地址,并将私有数据二~私有数据的四的虚拟地址与物理地址的映射关系删除,得到对应的全局页目录,此时核心一对应的全局页目录中包括共享数据的虚拟地址与物理地址的映射关系,以及核心一的私有数据一的虚拟地址与物理地址的映射关系。同理,对于核心二,可以获取初始全局页目录,将初始全局页目录中私有数据二的物理地址映射至未映射虚拟地址,并将私有数据一、私有数据三和私有数据的四的虚拟地址与物理地址的映射关系删除,得到对应的全局页目录,此时核心二对应的全局页目录中包括共享数据的虚拟地址与物理地址的映射关系,以及核心二的私有数据二的虚拟地址与物理地址的映射关系;对于核心三,可以获取初始全局页目录,将初始全局页目录中私有数据三的物理地址映射至未映射虚拟地址,并将私有数据一、私有数据二和私有数据四的虚拟地址与物理地址的映射关系删除,得到对应的全局页目录,此时核心三对应的全局页目录中包括共享数据的虚拟地址与物理地址的映射关系,以及核心三的私有数据三的虚拟地址与物理地址的映射关系;对于核心四,可以获取初始全局页目录,将初始全局页目录中私有数据四的物理地址映射至未映射虚拟地址,并将私有数据一、私有数据二和私有数据三的虚拟地址与物理地址的映射关系删除,得到对应的全局页目录,此时核心四对应的全局页目录中包括共享数据的虚拟地址与物理地址的映射关系,以及核心四的私有数据四的虚拟地址与物理地址的映射关系。
可选的,如图3所示,为了更好地理解本申请实施例中所提供的方法,下面以程序设计语言为C语言为例,对实现该方法的具体步骤进行详细说明。在本示例中,未映射虚拟地址为0x400000000,示例性的可以包括:
步骤S301,预留全局页目录的内存空间。
在实际应用中,可以在内核入口预留内存空间用以创建全局页目录,示例性的,可以基于如下代码实现:
.section.page_table
.global lvl1_page_table
lvl1_page_table:
.space PAGE_SIZE
步骤S302,多核系统初始化时,启动临时的栈以方便调用C语言编写的函数。
步骤S303,判断当前核心的编号是否为主核心,若是则执行步骤S304,否则执行步骤S306。
步骤S304,主核心调用pt_populate函数,该函数的第一个参数设置为全局页目录的地址。
可选的,通过调用pt_populate函数,将该函数的第一个参数设置为全局页目录的地址的示例性代码如下:
ldr x0,=lvl1_page_table
blpt_populate
步骤S305,将所有内存数据的虚拟地址按照设定的偏移线性地映射到物理地址。
具体的,可以根据多核系统所在设备的配置填充全局页目录的页表项,如可以根据设备的内存存储量,使用1GB的超页映射物理内存和设备MMIO(Memory-mapped I/O,内存映射I/O)的地址区间,将物理地址的[0,0x400000000)共计16GB的区域映射到虚拟地址[0,0x400000000)上。
步骤S306,将全局页目录进行复制,得到全局页目录副本,并在全局页目录副本上将自身使用的私有数据的物理地址映射到一个未被映射的虚拟地址。
具体的,可以在该核心私有内存数据的结构体中增加自身页表使用的页表,此时自身使用的页表亦为自身的私有数据。其中,自身使用的页表包含1页用于全局页目录副本、1页用于二级页表、1页用于三级页表,其示例性代码如下:
进一步的,可以调用cpu_map_self函数,该函数的第一个参数为核心编号,然后可以通过核心编号的下标索引处于全局线性映射的物理内存区域的cpu结构体,并设置对应的结构体的标识为核心编号。
进一步的,在cpu_map_self函数中调用pt_map_banked_cpu函数,该函数的参数是全局线性映射的物理内存区域的cpu结构体的指针self。该函数将全局页目录lvl1_page_table复制到self.pt.lvl1的位置(即得到全局页目录副本),设置self.pt.lvl2为0x400000000虚拟地址的2级页表,设置self.pt.lvl3为0x400000000虚拟地址的3级页表。在self.pt.lvl3三级页表上映射self指针指向的物理内存区域,长度为cpu结构体的大小。
步骤S307,在得到的全局页目录副本上取消当前核心使用的私有数据的物理地址的区域的线性映射。
具体的,可以在self.pt.lvl1中去除self指针的物理地址的映射。
步骤S308,将self.pt.lvl1的物理地址写入当前核心对应的ttbr0_el2寄存器,并开启内存管理单元用于虚拟地址和物理地址的翻译映射。
同理,除该主核心之外的其它核心采用步骤S306~步骤S308的方法得到各自对应的全局页目录。进一步的,当汇编完成所有核心对应的全局页目录后,可以基于下列方式在内核代码中访问私有内存数据,示例性的可以包括:
1、可以采用如下所示代码定义表示核心私有内存数据的结构体;
2、采用如下所示代码声明一个该结构体的全局变量;
///Banked structcpu of core itself
structcpucpu__attribute__((section(".cpu_private")));
3、采用如下所示代码加以注解(attribute)变更其链接段(link section)为.cpu_private,并在内核的链接脚本(link script)中将.cpu_private段输出到0x400000000的内存地址上;
4、采用如下所示代码访问该结构体获取私有数据;
extern structcpucpu;
If(cpu.id==0){}
如图4所示,本申请实施例提供了一种确定全局页目录的装置20,该装置应用于多核系统,该装置包括:
初始全局页目录获取模块201,用于对于任一核心,获取初始全局页目录,初始全局页目录包括所有内存数据的虚拟地址与物理地址的映射关系,所有内存数据包括各核心均可读取的共享数据和各核心的私有数据;
全局页目录修改模块202,用于对全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录,修改后的全局页目录包括共享数据和仅核心可读取的私有数据;
全局页目录确定模块203,用于将修改后的全局页目录作为核心对应的全局页目录,以使核心基于全局页目录读取内存数据。
可选的,全局页目录修改模块在对全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录时,具体用于:
对初始全局页目录进行复制,得到全局页目录副本;
获取未映射虚拟地址,未映射虚拟地址指的是未被映射至物理地址的虚拟地址;
将全局页目录副本中核心的私有数据的物理地址映射至未映射虚拟地址;
将全局页目录副本中其它核心的私有数据的虚拟地址与物理地址的映射关系删除,得到修改后的全局页目录副本,其它核心为所有核心中除核心之外的核心。
可选的,多核系统包括一个主核心,初始全局页目录是主核心在多核系统启动时基于预留的内存空间创建的。
可选的,各核心的全局页目录中私有数据对应的虚拟地址相同。
可选的,该装置还包括地址写入模块,用于:
在将修改后的全局页目录作为核心对应的全局页目录之后,将全局页目录的物理地址写入核心对应的目标寄存器。
可选的,该装置还包括数据读取模块,用于:
响应于数据读取请求,数据读取请求中包括待读取数据的标识;
确定标识对应的目标虚拟地址并发送至内存管理单元,以使内存管理单元基于目标寄存器中写入的全局页目录的物理地址获取全局页目录,并根据全局页目录确定目标虚拟地址对应的目标物理地址返回至核心;
根据物理地址从内存空间内读取待读取数据。
可选的,各核心的私有数据通过预定义的结构体表示,结构体的全局变量的链接段为未映射虚拟地址,各核心的链接脚本中链接段的输出内存地址为未映射虚拟地址。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现通信连接方法的步骤。
在一个可选实施例中提供了一种电子设备,如图5所示,图5所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请实施例提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现前述方法实施例的步骤及相应内容。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (10)
1.一种确定全局页目录的方法,其特征在于,所述方法包括:
对于多核系统的任一核心,获取初始全局页目录,所述初始全局页目录包括所有内存数据的虚拟地址与物理地址的映射关系,所述所有内存数据包括各核心均可读取的共享数据和各核心的私有数据;
对所述全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录,所述修改后的全局页目录包括共享数据和仅所述核心可读取的私有数据的虚拟地址与物理地址的映射关系;
将所述修改后的全局页目录作为所述核心对应的全局页目录,以使所述核心基于所述全局页目录读取内存数据。
2.根据权利要求1所述的方法,其特征在于,所述对所述全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录,包括:
对所述初始全局页目录进行复制,得到全局页目录副本;
获取未映射虚拟地址;
将所述全局页目录副本中所述核心的私有数据的物理地址映射至所述未映射虚拟地址;
将所述全局页目录副本中其它核心的私有数据的虚拟地址与物理地址的映射关系删除,得到修改后的全局页目录副本,所述其它核心为所有核心中除所述核心之外的核心。
3.根据权利要求2所述的方法,其特征在于,各所述核心的全局页目录中私有数据对应的虚拟地址相同。
4.根据权利要求1所述的方法,其特征在于,所述将所述修改后的全局页目录作为所述核心对应的全局页目录之后,还包括:
将所述全局页目录的物理地址写入所述核心对应的目标寄存器。
5.根据权利要求4所述的方法,其特征在于,所述核心基于所述全局页目录读取内存数据,包括:
响应于数据读取请求,所述数据读取请求中包括待读取数据的标识;
确定所述标识对应的目标虚拟地址并发送至内存管理单元,以使所述内存管理单元基于所述目标寄存器中写入的所述全局页目录的物理地址获取所述全局页目录,并根据所述全局页目录确定所述目标虚拟地址对应的目标物理地址返回至所述核心;
根据所述物理地址从内存空间内读取所述待读取数据。
6.根据权利要求2所述的方法,其特征在于,各所述核心的私有数据通过预定义的结构体表示,所述结构体的全局变量的链接段为所述未映射虚拟地址,各所述核心的链接脚本中所述链接段的输出内存地址为所述未映射虚拟地址。
7.一种确定全局页目录的装置,其特征在于,所述装置应用于多核系统,所述装置包括:
初始全局页目录获取模块,用于对于任一核心,获取初始全局页目录,所述初始全局页目录包括所有内存数据的虚拟地址与物理地址的映射关系,所述所有内存数据包括各核心均可读取的共享数据和各核心的私有数据;
全局页目录修改模块,用于对所述全局页目录中的私有数据的虚拟地址与物理地址的映射关系进行修改,得到修改后的全局页目录,所述修改后的全局页目录包括共享数据和仅所述核心可读取的私有数据;
全局页目录确定模块,用于将所述修改后的全局页目录作为所述核心对应的全局页目录,以使所述核心基于所述全局页目录读取内存数据。
8.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-6任一项所述方法的步骤。
9.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-6任一项所述方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-6中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111656671.XA CN114327777B (zh) | 2021-12-30 | 2021-12-30 | 确定全局页目录的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111656671.XA CN114327777B (zh) | 2021-12-30 | 2021-12-30 | 确定全局页目录的方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114327777A true CN114327777A (zh) | 2022-04-12 |
CN114327777B CN114327777B (zh) | 2022-07-29 |
Family
ID=81018422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111656671.XA Active CN114327777B (zh) | 2021-12-30 | 2021-12-30 | 确定全局页目录的方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327777B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033339A (zh) * | 2022-05-09 | 2022-09-09 | 阿里巴巴(中国)有限公司 | 地址映射方法、装置、设备和存储介质 |
CN115757260A (zh) * | 2023-01-09 | 2023-03-07 | 摩尔线程智能科技(北京)有限责任公司 | 数据交互方法、图形处理器及图形处理系统 |
CN116069689A (zh) * | 2023-03-02 | 2023-05-05 | 北京象帝先计算技术有限公司 | 页表访问方法、系统、电子组件及页表配置方法 |
CN116204453A (zh) * | 2022-12-23 | 2023-06-02 | 科东(广州)软件科技有限公司 | 多核系统的数据访问方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477477A (zh) * | 2009-01-12 | 2009-07-08 | 华为技术有限公司 | 内核空间隔离方法、空间管理实体及系统 |
CN102135904A (zh) * | 2011-03-11 | 2011-07-27 | 华为技术有限公司 | 一种面向多核目标系统的映射方法及装置 |
CN104252392A (zh) * | 2013-06-28 | 2014-12-31 | 华为技术有限公司 | 一种访问数据缓存的方法和处理器 |
CN108228333A (zh) * | 2016-12-14 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多核系统的核间资源隔离方法 |
US20200117500A1 (en) * | 2016-12-26 | 2020-04-16 | Thales | Method for controlling a multi-core processor and associated computer |
CN111367887A (zh) * | 2020-03-03 | 2020-07-03 | 威海新北洋数码科技有限公司 | 多租户数据共享系统及其管理方法、数据库部署方法 |
-
2021
- 2021-12-30 CN CN202111656671.XA patent/CN114327777B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477477A (zh) * | 2009-01-12 | 2009-07-08 | 华为技术有限公司 | 内核空间隔离方法、空间管理实体及系统 |
CN102135904A (zh) * | 2011-03-11 | 2011-07-27 | 华为技术有限公司 | 一种面向多核目标系统的映射方法及装置 |
CN104252392A (zh) * | 2013-06-28 | 2014-12-31 | 华为技术有限公司 | 一种访问数据缓存的方法和处理器 |
CN108228333A (zh) * | 2016-12-14 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多核系统的核间资源隔离方法 |
US20200117500A1 (en) * | 2016-12-26 | 2020-04-16 | Thales | Method for controlling a multi-core processor and associated computer |
CN111367887A (zh) * | 2020-03-03 | 2020-07-03 | 威海新北洋数码科技有限公司 | 多租户数据共享系统及其管理方法、数据库部署方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033339A (zh) * | 2022-05-09 | 2022-09-09 | 阿里巴巴(中国)有限公司 | 地址映射方法、装置、设备和存储介质 |
CN116204453A (zh) * | 2022-12-23 | 2023-06-02 | 科东(广州)软件科技有限公司 | 多核系统的数据访问方法、装置、设备及存储介质 |
CN115757260A (zh) * | 2023-01-09 | 2023-03-07 | 摩尔线程智能科技(北京)有限责任公司 | 数据交互方法、图形处理器及图形处理系统 |
CN116069689A (zh) * | 2023-03-02 | 2023-05-05 | 北京象帝先计算技术有限公司 | 页表访问方法、系统、电子组件及页表配置方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114327777B (zh) | 2022-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114327777B (zh) | 确定全局页目录的方法、装置、电子设备及存储介质 | |
US10846145B2 (en) | Enabling live migration of virtual machines with passthrough PCI devices | |
KR102047558B1 (ko) | 가상 디스크 저장 기술 | |
US10255088B2 (en) | Modification of write-protected memory using code patching | |
US8839215B2 (en) | String cache file for optimizing memory usage in a java virtual machine | |
KR101650424B1 (ko) | 기점 가상 머신으로부터 목적지 가상 머신으로의 동작 전송 | |
RU2580016C1 (ru) | Способ передачи управления между областями памяти | |
US10430221B2 (en) | Post-copy virtual machine migration with assigned devices | |
CN110716845B (zh) | 一种Android系统的日志信息读取的方法 | |
US9367478B2 (en) | Controlling direct memory access page mappings | |
CN109740310B (zh) | 用于嵌入式操作系统的内核对象访问方法和装置 | |
US10261895B2 (en) | System and method for transferring execution of a computer program | |
CN116126472B (zh) | 一种基于动态内存虚拟磁盘的跨运行环境文件快速共享方法 | |
CN113010265A (zh) | Pod的调度方法、调度器、存储插件及系统 | |
US20140222410A1 (en) | Hybrid emulation and kernel function processing systems and methods | |
JP2006294028A (ja) | 直接実行機能を提供するためのシステム、コンピュータシステム、方法およびプログラム | |
CN117573419B (zh) | 一种页面异常处理方法及装置 | |
US11526358B2 (en) | Deterministic execution replay for multicore systems | |
US20120054773A1 (en) | Processor support for secure device driver architecture | |
CN115421875B (zh) | 二进制翻译方法及装置 | |
RU2623883C1 (ru) | Способ выполнения инструкций в системной памяти | |
EP3252610B1 (en) | System and method of transfer of control between memory locations | |
CN112631720A (zh) | 内存控制方法、介质及设备 | |
CN117389939A (zh) | 数据传输方法、装置、电子设备及介质 | |
CN114090273A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |