掌桥专利:专业的专利平台
掌桥专利
首页

微内核操作系统中内存地址转换方法、装置、设备及介质

文献发布时间:2023-06-19 18:37:28


微内核操作系统中内存地址转换方法、装置、设备及介质

技术领域

本申请涉及计算机领域,尤其涉及一种微内核操作系统中内存地址转换方法、装置、设备及介质。

背景技术

应用程序进程在运行过程中,可直接访问内存的虚拟地址,而应用程序进程在进行一些涉及硬件外设的操作时,需要访问内存的物理地址,这就需要驱动程序进程和内存管理进程,实现虚拟地址与物理地址之间的内存地址转换。

现有技术中,对于微内核操作系统,应用程序进程、驱动程序进程和内存管理进程位于用户空间,在进行内存地址转换时,应用程序进程调用驱动程序进程,驱动程序进程通过进程间通信(Inter-Process Communication,简称IPC)的方式向内存管理进程发送内存地址转换请求。内存管理进程完成内存地址转换,进而将转换后的地址通过IPC的方式返回至驱动程序进程。

综上所述,现有的微内核操作系统中内存地址转换方法需要IPC进行通信,而IPC需要由用户空间到内核空间再到用户空间,导致内存地址转换效率较低。

发明内容

本申请实施例提供一种微内核操作系统中内存地址转换方法、装置、设备及介质,用于解决现有的微内核操作系统中内存地址转换方法需要IPC进行通信,而IPC需要由用户空间到内核空间再到用户空间,导致内存地址转换效率较低的问题。

第一方面,本申请实施例提供一种微内核操作系统中内存地址转换方法,应用于安装有微内核操作系统的电子设备,所述微内核操作系统包括应用程序、驱动程序、用户态内存管理程序,所述方法包括:

所述应用程序对应的应用程序进程根据虚拟内存地址,调用所述驱动程序;

所述驱动程序对应的驱动程序线程调用所述用户态内存管理程序的内存地址转换接口,所述驱动程序包括所述用户态内存管理程序;

所述用户态内存管理程序对应的用户态内存管理线程根据所述虚拟内存地址,从内存块集合中查找所述虚拟内存地址对应的目标内存块;

所述用户态内存管理线程根据所述虚拟内存地址,所述目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定所述虚拟内存地址对应的物理内存地址。

在一种具体实施方式中,所述用户态内存管理线程根据所述虚拟内存地址,所述目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定所述虚拟内存地址对应的物理内存地址,包括:

所述用户态内存管理线程采用公式:P=PS+(V-VS),计算得到所述虚拟内存地址对应的物理内存地址,其中,P表示所述虚拟内存地址对应的物理内存地址,PS表示目标内存块中存储的内存块起始物理地址,V表示所述虚拟内存地址,VS表示目标内存块中存储的内存块起始虚拟地址。

在一种具体实施方式中,所述方法还包括:

所述驱动程序线程获取物理外设存储数据的物理内存地址;

所述驱动程序线程调用所述用户态内存管理程序的内存地址转换接口;

所述用户态内存管理线程根据所述物理内存地址,从内存块集合中查找所述物理内存地址对应的目标内存块;

所述用户态内存管理线程根据所述物理内存地址,所述目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定所述物理内存地址对应的虚拟内存地址;

所述驱动程序线程将所述物理内存地址对应的虚拟内存地址发送至应用程序进程。

在一种具体实施方式中,所述用户态内存管理线程根据所述物理内存地址,所述目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定所述物理内存地址对应的虚拟内存地址,包括:

所述用户态内存管理线程采用公式:V=VS+(P-PS),计算得到所述物理内存地址对应的虚拟内存地址,其中,V表示所述物理内存地址对应的虚拟内存地址,PS表示目标内存块中存储的内存块起始物理地址,P表示所述物理内存地址,VS表示目标内存块中存储的内存块起始虚拟地址。

在一种具体实施方式中,所述方法还包括:

所述用户态内存管理线程通过内核态内存管理程序,得到内存块、所述内存块的内存块起始物理地址、所述内存块的内存块起始虚拟地址、所述内存块的容量;

所述用户态内存管理线程对于所述内存块中的每个物理页,生成所述物理页对应的页描述符;

所述用户态内存管理线程将所述内存块的内存块起始物理地址、所述内存块的内存块起始虚拟地址、所述内存块的容量、所述内存块中每个物理页对应的页描述符存储至所述内存块中。

在一种具体实施方式中,所述方法还包括:

所述用户态内存管理线程将所述内存块与所述用户态内存管理线程已获取的内存块之间建立红黑树的数据结构,存储至所述内存块集合中。

第二方面,本申请实施例提供一种微内核操作系统中内存地址转换装置,包括:

通信模块,用于通过应用程序对应的应用程序进程据虚拟内存地址,调用驱动程序;

转换模块,用于:

通过所述驱动程序对应的驱动程序线程调用用户态内存管理程序的内存地址转换接口,所述驱动程序包括所述用户态内存管理程序;

通过所述用户态内存管理程序对应的用户态内存管理线程根据所述虚拟内存地址,从内存块集合中查找所述虚拟内存地址对应的目标内存块;

通过所述用户态内存管理线程根据所述虚拟内存地址,所述目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定所述虚拟内存地址对应的物理内存地址。

第三方面,本申请实施例提供一种电子设备,包括:

处理器,存储器,通信接口;

所述存储器用于存储所述处理器的可执行指令;

其中,所述处理器配置为经由执行所述可执行指令来执行第一方面任一项所述的微内核操作系统中内存地址转换方法。

第四方面,本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述的微内核操作系统中内存地址转换方法。

第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现第一方面任一项所述的微内核操作系统中内存地址转换方法。

本申请实施例提供的微内核操作系统中内存地址转换方法、装置、设备及介质,通过应用程序进程根据虚拟内存地址,调用驱动程序,进而驱动程序对应的驱动程序线程调用用户态内存管理程序的内存地址转换接口后,用户态内存管理线程根据虚拟内存地址,从内存块集合中查找虚拟内存地址对应的目标内存块,再根据虚拟内存地址,目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定虚拟内存地址对应的物理内存地址。本方案通过在用户空间的用户态内存管理程序进行内存地址的转换,无需进入内核空间,有效提高了内存地址转换效率。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请提供的微内核操作系统中内存地址转换方法实施例一的流程示意图;

图2为本申请提供的微内核操作系统中内存地址转换方法实施例二的流程示意图;

图3a为本申请提供的微内核操作系统中内存地址转换方法实施例三的流程示意图;

图3b为本申请提供的内存块的包含内容示意图;

图4为本申提供的内存块数据结构图;

图5为本申请提供的微内核操作系统中内存地址转换装置实施例的结构示意图;

图6为本申请提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在根据本实施例的启示下作出的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

随着科技的迅速发展,操作系统也由宏内核操作系统发展到微内核操作系统,无论宏内核操作系统还是微内核操作系统,在运行应用程序时,都会涉及到内存的虚拟地址与内存的物理地址之间的转换。

对于宏内核操作系统,所有的驱动程序进程和内存管理进程都位于内核空间,因此可以在内核对物理内存进行统一的管理。内存管理进程在内核空间对物理内存地址进行统一的线性映射,将物理内存地址映射为虚拟内存地址,两者之间的转换可以通过加上或者减去一个偏移常量得到。但这种内存地址之间的转换是在内核空间进行的,如果应用程序需要进行内存地址转换的话,就需要通过系统调用陷入内核态,导致转换效率较低。

对于微内核操作系统,微内核操作系统中的驱动程序进程位于用户空间。驱动程序主要是管理各种硬件外设的,在外设进行数据传输时必须提供必要的物理内存给外设进行读写访问,也就是说位于用户空间的驱动程序进程必须能够申请、释放物理内存。另外,CPU在访问内存的时候使用的是虚拟内存地址,而外设在访问内存时使用的是物理内存地址,这就要求驱动程序进程能够对内存的物理地址与虚拟地址进行转换。各种高速外设,例如网卡、U盘等,对内存的访问特别频繁,因此如何高效访问内存非常关键,是影响性能的瓶颈之一。

现有技术中,对于微内核操作系统,应用程序进程、驱动程序进程和内存管理进程位于用户空间,在进行内存地址转换时,应用程序进程调用驱动程序进程,驱动程序进程通过进程间通信(Inter-Process Communication,简称IPC)的方式向内存管理进程发送内存地址转换请求。内存管理进程完成内存地址转换,进而将转换后的地址通过IPC的方式返回至驱动程序进程。由于IPC需要由用户空间到内核空间再到用户空间,导致内存地址转换效率较低的问题。

针对现有技术中存在的问题,发明人在对微内核操作系统中内存地址转换方法进行研究的过程中发现,为了提高内存地址的转换效率,可在用户空间中完成转换,不经过内核空间。在本方案的微内核操作系统中,用户程序进程和驱动程序线程位于用户空间,驱动程序中包括用户态内存管理程序,内核空间中包括内核态内存管理程序。用户态内存管理程序对应的用户态内存管理线程通过内核态内存管理程序,得到内存块后,对内存块进行管理。在需要进行内存地址转换时,应用程序进程调用驱动程序,驱动程序线程调用用户态内存管理程序的内存地址转换接口,进而用户态内存管理线程根据虚拟内存地址,从内存块集合中查找虚拟内存地址对应的目标内存块,再根据虚拟内存地址,目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定虚拟内存地址对应的物理内存地址,在用户空间完成内存地址的转换,有效提高了内存地址转换效率。基于上述发明构思,设计了本申请中的微内核操作系统中内存地址转换方案。

本申请中微内核操作系统中内存分配方法的执行主体可以是智能手机终端,还可以是平板电脑、计算机等可以运行微内核操作系统的设备,本申请不对其进行限定,下面以智能手机终端为例进行说明。

下面对本申请提供的微内核操作系统中内存分配方法的应用场景进行说明。

示例性的,在该应用场景中,应用程序进程想要获取物理外设存储在物理内存中的目标数据时,由于应用程序进程只能访问虚拟内存地址,所以需要进行内存地址的转换。

应用程序进程根据虚拟内存地址,调用驱动程序。进而驱动程序线程调用用户态内存管理程序的内存地址转换接口。

用户态内存管理程序对应的用户态内存管理线程根据虚拟内存地址,从内存块集合中查找虚拟内存地址对应的目标内存块,再根据虚拟内存地址,目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定虚拟内存地址对应的物理内存地址,完成内存地址的转换。进而驱动程序线程根据物理内存地址获取到目标数据后,将其发送至应用程序进程。

需要说明的是,上述场景仅是本申请实施例提供的一种应用场景的示例,本申请实施例不对该场景中包括的各种设备的实际形态进行限定,也不对设备中的交互方式进行限定,在方案的具体应用中,可以根据实际需求设定。

下面,通过具体实施例对本申请的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。

图1为本申请提供的微内核操作系统中内存地址转换方法实施例一的流程示意图,本申请实施例对应用程序进程需要将虚拟内存地址转换为物理内存地址时,调用驱动程序。驱动程序线程调用用户态内存管理程序的内存地址转换接口,进而用户态内存管理线程从内存块集合中查找虚拟内存地址对应的目标内存块,再从目标内存块中确定虚拟内存地址对应的物理内存地址的情况进行说明。本实施例中的方法可以通过软件、硬件或者软硬件结合的方式来实现。如图1所示,该微内核操作系统中内存地址转换方法具体包括以下步骤:

S101:应用程序进程根据虚拟内存地址,调用驱动程序。

在本步骤中,应用程序进程需要进行内存地址转换时,根据虚拟内存地址,调用驱动程序。

需要说明的是,本申请应用于安装有微内核操作系统的电子设备,微内核操作系统包括应用程序、驱动程序、用户态内存管理程序,驱动程序包括用户态内存管理程序。

S102:驱动程序对应的驱动程序线程调用用户态内存管理程序的内存地址转换接口。

在本步骤中,应用程序进程调用驱动程序后,为了实现内存地址的转换,驱动程序线程根据虚拟内存地址,调用用户态内存管理程序的内存地址转换接口。

S103:用户态内存管理程序对应的用户态内存管理线程根据虚拟内存地址,从内存块集合中查找虚拟内存地址对应的目标内存块。

在本步骤中,驱动程序线程调用用户态内存管理程序的内存地址转换接口后,用户态内存管理程序对应的用户态内存管理线程可根据虚拟内存地址,从内存块集合中查找虚拟内存地址对应的目标内存块。

由于每个内存块中存储内存块起始物理地址、内存块起始虚拟地址、内存块的容量大小,所以可确定出每个内存块的物理地址范围和虚拟地址范围,进而可根据虚拟内存地址,从内存块集合中查找虚拟内存地址对应的目标内存块。

需要说明的是,内存块的存储数据结构可以是红黑树数据结构、二叉树数据结构、完全二叉树数据结构等,本申请实施例不对内存块之间的存储数据结构进行限定,可根据实际情况进行选择。若采用红黑树数据结构,在进行查找虚拟内存地址对应的目标内存块时,可根据红黑树数据结构对应的查找方法进行查找,提高查找效率。

S104:用户态内存管理线程根据虚拟内存地址,目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定虚拟内存地址对应的物理内存地址。

在本步骤中,用户态内存管理线程从内存块集合中查找虚拟内存地址对应的目标内存块后,由于内存块的物理内存地址和虚拟内存地址是连续的,并且物理内存地址和其对应的虚拟内存地址是线性映射,所以可根据虚拟内存地址,目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定虚拟内存地址对应的物理内存地址。

具体的,用户态内存管理线程采用公式:P=PS+(V-VS),计算得到虚拟内存地址对应的物理内存地址,其中,P表示虚拟内存地址对应的物理内存地址,PS表示目标内存块中存储的内存块起始物理地址,V表示虚拟内存地址,VS表示目标内存块中存储的内存块起始虚拟地址。

示例性的,目标内存块的内存块起始物理地址为0,内存块起始虚拟地址为7,虚拟内存地址为9,则计算虚拟内存地址对应的物理内存地址:0+(9-7)=2。

需要说明的是,上述例子仅是对计算物理内存地址进行示例,本申请实施例不对内存块起始物理地址、内存块起始虚拟地址、虚拟内存地址等进行限定,可根据实际情况进行确定。

本实施例提供的微内核操作系统中内存地址转换方法,通过应用程序进程调用驱动程序。进而驱动程序线程调用用户态内存管理程序的内存地址转换接口后,用户态内存管理线程根据虚拟内存地址,从内存块集合中查找目标内存块;进而确定虚拟内存地址对应的物理内存地址。相较于现有技术中需要IPC进行通信,而IPC需要由用户空间到内核空间再到用户空间,本方案采用位于用户空间的应用程序进程、驱动程序线程、用户态内存管理程序完成内存地址的转换,无需进入内核空间,有效提高了内存地址转换效率。

图2为本申请提供的微内核操作系统中内存地址转换方法实施例二的流程示意图,在上述实施例的基础上,本申请实施例对驱动程序线程获取物理内存地址,并通过用户态内存管理线程将其转换为虚拟内存地址的情况进行说明。如图2所示,该微内核操作系统中内存地址转换方法具体包括以下步骤:

S201:驱动程序线程获取物理外设存储数据的物理内存地址。

在本步骤中,物理外设将新的数据存储到物理内存中后,应用程序进程若想获取到该数据,就需要获取到该物理内存的物理内存地址对应的虚拟内存地址,这就需要驱动程序线程获取物理外设存储数据的物理内存地址。

S202:驱动程序线程调用用户态内存管理程序的内存地址转换接口。

在本步骤中,驱动程序线程获取到物理内存地址后,为了进行内存地址的转换,需要驱动程序线程调用用户态内存管理程序的内存地址转换接口。

S203:用户态内存管理线程根据物理内存地址,从内存块集合中查找物理内存地址对应的目标内存块。

在本步骤中,驱动程序线程调用用户态内存管理程序的内存地址转换接口后,用户态内存管理线程可根据物理内存地址,从内存块集合中查找物理内存地址对应的目标内存块。

由于每个内存块中存储内存块起始物理地址、内存块起始虚拟地址、内存块的容量大小,所以可确定出每个内存块的物理地址范围和虚拟地址范围,进而可根据物理内存地址,从内存块集合中查找物理内存地址对应的目标内存块。

S204:用户态内存管理线程根据物理内存地址,目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定物理内存地址对应的虚拟内存地址。

在本步骤中,用户态内存管理线程从内存块集合中查找物理内存地址对应的目标内存块后,由于内存块的物理内存地址和虚拟内存地址是连续的,并且物理内存地址和其对应的虚拟内存地址是线性映射,所以可根据物理内存地址,目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定物理内存地址对应的虚拟内存地址。

具体的,用户态内存管理线程采用公式V=VS+(P-PS),计算得到物理内存地址对应的虚拟内存地址,其中,V表示物理内存地址对应的虚拟内存地址,PS表示目标内存块中存储的内存块起始物理地址,P表示物理内存地址,VS表示目标内存块中存储的内存块起始虚拟地址。

示例性的,目标内存块的内存块起始物理地址为1,内存块起始虚拟地址为6,物理内存地址为5,则计算物理内存地址对应的虚拟内存地址:6+(5-1)=10。

需要说明的是,上述例子仅是对计算虚拟内存地址进行示例,本申请实施例不对内存块起始物理地址、内存块起始虚拟地址、虚拟内存地址等进行限定,可根据实际情况进行确定。

S205:驱动程序线程将物理内存地址对应的虚拟内存地址发送至应用程序进程。

在本步骤中,用户态内存管理线程确定出物理内存地址对应的虚拟内存地址后,驱动程序线程将物理内存地址对应的虚拟内存地址发送至应用程序进程,以便后续应用程序进程访问该虚拟内存地址。

本实施例提供的微内核操作系统中内存地址转换方法,通过驱动程序线程获取到物理内存地址后,调用用户态内存管理程序的内存地址转换接口,进而可确定出物理内存地址对应的目标内存块,再根据目标内存块中的存储内容确定物理内存地址对应的虚拟内存地址。通过位于用户空间的应用程序进程、驱动程序线程、用户态内存管理程序完成内存地址的转换,无需进入内核空间,有效提高了内存地址转换效率。

图3a为本申请提供的微内核操作系统中内存地址转换方法实施例三的流程示意图,在上述实施例的基础上,本申请实施例对用户态内存管理线程从内核态内存管理程序中获取内存块,并生成页描述符存储至内存块中的情况进行说明。如图3a所示,该微内核操作系统中内存地址转换方法具体包括以下步骤:

S301:用户态内存管理线程通过内核态内存管理程序,得到内存块、内存块的内存块起始物理地址、内存块的内存块起始虚拟地址、内存块的容量。

在本步骤中,应用程序进程需要被分配内存时,应用程序进程可调用驱动程序,驱动程序中用户态内存管理程序对应的用户态内存管理线程会确定已有的内存块中是否有满足应用程序进程要求的可用内存空间,若已有的内存块中没有满足应用程序进程要求的可用内存空间,则需要用户态内存管理线程通过内核态内存管理程序,得到新的内存块、内存块的内存块起始物理地址、内存块的内存块起始虚拟地址、内存块的容量。

S302:用户态内存管理线程对于内存块中的每个物理页,生成物理页对应的页描述符。

在本步骤中,为了方便对内存块中的每个物理页进行管理,需要对于内存块中的每个物理页,生成物理页对应的页描述符。

S303:用户态内存管理线程将内存块的内存块起始物理地址、内存块的内存块起始虚拟地址、内存块的容量、内存块中每个物理页对应的页描述符存储至内存块中。

在本步骤中,用户态内存管理线程生成页描述符后,将内存块的内存块起始物理地址、内存块的内存块起始虚拟地址、内存块的容量、内存块中每个物理页对应的页描述符存储至内存块中,以便后续使用内存块。

示例性的,图3b为本申请提供的内存块的包含内容示意图;如图3b所示,内存块中包括内存块起始物理地址、内存块起始虚拟地址、内存块的容量、页描述符集合,其中页描述符集合中包括4个物理页对应的页描述符。

需要说明的是,上述例子仅是对内存块包含的内容进行示例,本申请实施例不对其进行限定,可根据实际情况进行设置。

本实施例提供的微内核操作系统中内存地址转换方法,通过在用户态内存管理线程获取到内存块时,生成页描述符并存储。相较于现有技术中操作系统在初始化时,为所有内存的物理页生成页描述符,并将页描述符进行存储,本方案仅存储获取到的内存块对应的页描述符,有效减小了内存浪费,节省了内存资源。

下面对本申请提供的用户态内存管理线程将内存块的内存块起始物理地址、内存块的内存块起始虚拟地址、内存块的容量、内存块中每个物理页对应的页描述符存储至内存块中后,将内存块以红黑树数据结构进程存储的情况进行说明。

用户态内存管理线程将内存块的内存块起始物理地址、内存块的内存块起始虚拟地址、内存块的容量、内存块中每个物理页对应的页描述符存储至内存块中后,为了提高后续查找内存块的效率,可将内存块与用户态内存管理线程已获取的内存块之间建立红黑树的数据结构,存储至内存块集合中。

示例性的,图4为本申提供的内存块数据结构图;如图4所示,共有7个内存块,内存块以红黑树的数据结构进行存储。本申请实施例不对内存块的数量进行限定,可根据实际情况进行确定。

本实施例提供的微内核操作系统中内存地址转换方法,通过将内存块以红黑树的数据结构进行存储,提高了查找内存块的效率。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

图5为本申请提供的微内核操作系统中内存地址转换装置实施例的结构示意图;该装置可以集成于上述方法实施例中的终端设备中,也可以通过上述方法实施例中的终端设备实现。如图5所示,该微内核操作系统中内存地址转换装置50包括:

通信模块51,用于通过应用程序对应的应用程序进程根据虚拟内存地址,调用驱动程序;

转换模块52,用于:

通过所述驱动程序对应的驱动程序线程进程调用用户态内存管理程序的内存地址转换接口,所述驱动程序包括所述用户态内存管理程序;

通过所述用户态内存管理程序对应的用户态内存管理线程根据所述虚拟内存地址,从内存块集合中查找所述虚拟内存地址对应的目标内存块;

通过所述用户态内存管理线程根据所述虚拟内存地址,所述目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定所述虚拟内存地址对应的物理内存地址。

进一步地,所述转换模块52,具体用于:

通过所述用户态内存管理线程采用公式:P=PS+(V-VS),计算得到所述虚拟内存地址对应的物理内存地址,其中,P表示所述虚拟内存地址对应的物理内存地址,PS表示目标内存块中存储的内存块起始物理地址,V表示所述虚拟内存地址,VS表示目标内存块中存储的内存块起始虚拟地址。

获取模块53,用于通过所述驱动程序线程获取物理外设存储数据的物理内存地址;

进一步地,所述转换模块52,还用于:

通过所述驱动程序线程调用所述用户态内存管理程序的内存地址转换接口;

通过所述用户态内存管理线程根据所述物理内存地址,从内存块集合中查找所述物理内存地址对应的目标内存块;

通过所述用户态内存管理线程根据所述物理内存地址,所述目标内存块中存储的内存块起始物理地址、内存块起始虚拟地址,确定所述物理内存地址对应的虚拟内存地址;

进一步地,所述通信模块51,还用于通过所述驱动程序线程将所述物理内存地址对应的虚拟内存地址发送至应用程序进程。

进一步地,所述转换模块52,还用于:

通过所述用户态内存管理线程采用公式:V=VS+(P-PS),计算得到所述物理内存地址对应的虚拟内存地址,其中,V表示所述物理内存地址对应的虚拟内存地址,PS表示目标内存块中存储的内存块起始物理地址,P表示所述物理内存地址,VS表示目标内存块中存储的内存块起始虚拟地址。

进一步地,所述获取模块53,还用于:

通过所述用户态内存管理线程通过内核态内存管理程序,得到内存块、所述内存块的内存块起始物理地址、所述内存块的内存块起始虚拟地址、所述内存块的容量;

通过所述用户态内存管理线程对于所述内存块中的每个物理页,生成所述物理页对应的页描述符;

通过所述用户态内存管理线程将所述内存块的内存块起始物理地址、所述内存块的内存块起始虚拟地址、所述内存块的容量、所述内存块中每个物理页对应的页描述符存储至所述内存块中。

进一步地,所述获取模块53,还用于:

通过所述用户态内存管理线程将所述内存块与所述用户态内存管理线程已获取的内存块之间建立红黑树的数据结构,存储至所述内存块集合中。

本实施例提供的微内核操作系统中内存地址转换装置,用于执行前述任一方法实施例中的技术方案,其实现原理和技术效果类似,在此不再赘述。

图6为本申请提供的一种电子设备的结构示意图。如图6所示,该电子设备60包括:

处理器61,存储器62,以及通信接口63;

所述存储器62用于存储所述处理器61的可执行指令;

其中,所述处理器61配置为经由执行所述可执行指令来执行前述任一方法实施例中的技术方案。

可选的,存储器62既可以是独立的,也可以跟处理器61集成在一起。

可选的,当所述存储器62是独立于处理器61之外的器件时,所述电子设备60还可以包括:

总线64,存储器62和通信接口63通过总线64与处理器61连接并完成相互间的通信,通信接口63用于和其他设备进行通信。

可选的,通信接口63具体可以通过收发器实现。通信接口用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(random access memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

总线64可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

上述的处理器可以是通用处理器,包括中央处理器CPU、网络处理器(networkprocessor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

该电子设备用于执行前述任一方法实施例中的技术方案,其实现原理和技术效果类似,在此不再赘述。

本申请实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述任一方法实施例提供的技术方案。

本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现前述任一方法实施例提供的技术方案。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

技术分类

06120115636200