内存分配方法、装置和系统与流程

文档序号:32213664发布日期:2022-11-16 06:51阅读:108来源:国知局
内存分配方法、装置和系统与流程

1.本技术涉及计算机技术领域,并且更具体地,涉及一种内存分配方法、装置和系统。


背景技术:

2.运行操作系统时处理器可以根据功能分为内核态和用户态两种运行模式,处理器处于内核态模式时主要执行操作系统的一些关键任务、控制计算机的硬件资源。用户态相较于内核态执行权限较低,处理器处于用户态模式时主要执行应用程序相关的进程,处理器通过划分用户态和内核态,能够实现系统关键数据与应用数据的隔离,提高安全性和可靠性。
3.内存管理是操作系统的一个重要功能,主要用于内存资源的分配、使用,如为进程分配运行所需的内存空间等。内存管理可以由处理器处于内核态时实现或者处于用户态时实现。内存管理在用户态实现时,可以降低内核态的复杂度,但存在的问题是系统服务进程所需的内存也需要通过进程间通信(inter-process communication,ipc)向用户态内存管理进程申请,当所需内存较大时,频繁的ipc将带来较大的开销。内存管理在内核态实现时,由于内存管理使用的数据结构和算法复杂,将使得内核的形式化验证和通过高等级的安全认证变得非常困难,并且增加了被攻击的概率。目前操作系统的内存管理方式还有待优化。


技术实现要素:

4.本技术提供了一种内存分配方法、装置和系统,以提高内存分配的工作效率。
5.第一方面,提供了一种内存分配方法,该方法包括:
6.第一用户态进程接收第二用户态进程的任务请求,该任务请求用于请求分配内存空间;该第一用户态进程从第一物理内存空间中为该第二用户态进程分配第一物理内存区间,其中该第一物理内存空间是内核授权给该第一用户态进程的物理内存空间。
7.根据上述方案,内核可以执行第一级内存空间管理,即为第一用户态进程授权部分物理内存空间,使得用户态进程可以根据需求分配被授权的物理内存空间,即第二级内存空间管理,通过采用两级物理内存空间的管理方式,在内核负责完成少量的工作的情况下,减少了用户态进程之间频繁的通信,能够减小能耗以及减小内存分配的时间开销,提高内存分配的效率。
8.结合第一方面,在第一方面的某些实现方式中,该通过该第一用户态进程为第二用户态进程分配该第一物理内存区间之前,该方法还包括:当该第一用户态进程被授权的第二物理内存空间中空闲内存空间大小不满足该任务请求所需的内存空间大小时,该第一用户态进程中向该内核申请物理内存空间;该内核为该第一用户态进程授权该第三物理内存空间,其中,该第一物理内存空间包括该第二物理内存空间和该第三物理内存空间。
9.根据上述方案,在第一用户态进程被授权的物理内存空间不满足需求的情况下,第一用户态进程可以进一步向内核申请物理内存空间,以获取足够的被授权物理内存空
间,避免因第一用户态进程被授权的物理内存空间不足造成第二用户态进程请求内存失败的情况,提高了物理内存空间管理的灵活性。
10.结合第一方面,在第一方面的某些实现方式中,该方法还包括:该第一用户态进程中为该第一物理内存区间分配相应的第一虚拟内存区间;在该第一用户态进程中向该内核发送内存映射请求,该内存映射请求用于请求建立该第一物理内存区间与该第一虚拟内存区间之间的映射关系。
11.根据上述方案,第一用户态进程在分配第一物理内存区间后,再分配相应地第一虚拟内存区间,并请求内核进行内存映射,以完成第一物理内存区间与第一虚拟内存区间之间的映射。
12.结合第一方面,在第一方面的某些实现方式中,该方法还包括:该第一用户态进程为第三用户态进程授权物理内存空间分配权限。
13.根据上述方案,第一用户态进程还具有为其他用户进程(如第三用户态进程)授权物理内存空间分配权限的功能,使得第三用户态进程获取分配权限后,可以向内核请求物理内存空间,从而第三用户态进程可以根据需求按需分配被授权的物理内存空间,能够避免第三用户态进程通过进程间通信请求物理内存,减少了进程间通信带来的开销,提高内存分配的效率。
14.示例性地,第一用户态进程可以是用户态主内存管理进程,第三用户态进程可以是提供系统服务的相关进程。
15.结合第一方面,在第一方面的某些实现方式中,该任务请求为文件映射请求,该第一用户态进程为文件系统进程或虚拟文件系统进程,该方法还包括:该第一用户进程响应该文件映射请求,将该文件映射请求所请求的文件映射至该第一物理内存区间;该第一用户进程中向该第二用户进程发送该第一物理内存区间。
16.根据上述方案,第一用户进程接收到文件映射的任务请求后,为该文件映射任务分配第一物理内存区间,并将其请求的文件映射至第一物理内存区间,再通知第二用户态进程,该第一用户态进程为该文件映射任务分配的第一物理内存区间。使得第一用户态进程可以为文件映射任务分配物理内存区间并完成文件映射,避免了通过进程间通信请求物理内存,减少了进程间通信带来的开销,提高内存分配的效率。
17.示例性地,第一用户态进程可以是用户态虚拟文件系统(vfs)进程,第二用户态进程可以是主服务进程。其中主服务进程通过文件映射请求获取到vfs进程为文件映射任务分配的第一物理内存区间后为第一物理内存区间分配相应的虚拟地址区间,以请求内核完成第一物理内存区间与虚拟地址区间之间的映射。
18.结合第一方面,在第一方面的某些实现方式中,该任务请求为文件读/写请求,该第一用户态进程为文件系统进程或虚拟文件系统进程,该方法还包括:该第一用户进程中对该第一物理内存区间执行该文件读/写请求所请求的读/写操作。
19.根据上述方案,第一用户进程接收到文件读/写的任务请求后,为该文件读/写任务分配第一物理内存区间,并将对该第一物理内存区间执行读写操作。使得第一用户态进程可以为文件读/写任务分配物理内存区间并完成文件读/写,避免了通过进程间通信请求物理内存,减少了进程间通信带来的开销,提高内存分配的效率。
20.结合第一方面,在第一方面的某些实现方式中,该方法还包括:在该第二用户态进
程中为该第一用户态进程授权物理内存空间分配权限。
21.根据上述方案,用户态进程还具有为其他用户进程(如第一用户态进程)授权物理内存空间分配权限的功能,能够避免用户态进程需要通过进程间通信请求物理内存,减少了进程间通信带来的开销,提高内存分配的效率。
22.第二方面,提供了一种内存分配装置,包括:请求单元,用于在第二用户态进程向第一用户态进程发送任务请求;处理单元,用于在该第一用户态进程中为该任务请求分配第一物理内存区间,该第一物理内存区间属于第一物理内存空间,该第一物理内存空间是内核为该第一用户态进程授权的物理内存空间。
23.结合第二方面,在第二方面的某些实现方式中,在该处理单元在该第一用户态进程为第二用户态进程的任务请求分配该第一物理内存区间之前,该处理单元还用于确定该第一用户态进程被授权的物理内存空间中空闲内存空间大小不满足该任务请求所需的内存空间大小;该请求单元还用于在该第一用户态进程中向该内核申请物理内存空间;该处理单元还用于在该内核为该第一用户态进程授权该第一物理内存空间。
24.结合第二方面,在第二方面的某些实现方式中,该处理单元还用于在该第一用户态进程中为该任务请求分配第一虚拟内存区间;该请求单元还用于在该第一用户态进程中向该内核发送内存映射请求,该内存映射请求用于请求建立该第一物理内存区间与该第一虚拟内存区间之间的映射关系。
25.结合第二方面,在第二方面的某些实现方式中,该处理单元还用于在该第一用户态进程中为第三用户态进程授权物理内存空间分配权限。
26.结合第二方面,在第二方面的某些实现方式中该任务请求为文件映射请求,该第一用户态进程为文件系统进程或虚拟文件系统进程,该处理单元还用于在该第一用户进程中响应该文件映射请求,将该文件映射请求所请求的文件映射至该第一物理内存区间;以及,该装置还包括:收发单元,用于在该第一用户进程中向该第二用户进程发送该第一物理内存区间。
27.结合第二方面,在第二方面的某些实现方式中,该任务请求为文件读写请求,该第一用户态进程为文件系统进程或虚拟文件系统进程,该处理单元还用于在该第一用户进程中对该第一物理内存区间执行该文件读写请求所请求的读写操作。
28.结合第二方面,在第二方面的某些实现方式中,该处理单元还用于在该第二用户态进程中为该第一用户态进程授权物理内存空间分配权限。
29.第三方面,提供了一种通信装置,包括处理器。该处理器可以实现上述第一方面以及第一方面中任一种可能实现方式中的方法。
30.可选地,该通信装置还包括存储器,该处理器与该存储器耦合,可用于执行存储器中的指令,以实现上述第一方面以及第一方面中任一种可能实现方式中的方法。
31.可选地,该通信装置还包括通信接口,处理器与通信接口耦合。
32.本技术实施例中,通信接口可以是收发器、管脚、电路、总线、模块或其它类型的通信接口,不予限制。
33.第四方面,提供了一种操作系统,包括计算机程序,计算机程序代码,当该计算机程序代码被调用时,使得计算机操作系统执行第一方面以及第一方面中任一种可能实现方式中的方法。
34.第五方面,提供了一种处理器,包括:输入电路、输出电路和处理电路。该处理电路用于通过该输入电路接收信号,并通过该输出电路发射信号,使得该处理器执行第一方面以及第一方面中任一种可能实现方式中的方法。
35.在具体实现过程中,上述处理器可以为一个或多个芯片,输入电路可以为输入管脚,输出电路可以为输出管脚,处理电路可以为晶体管、门电路、触发器和各种逻辑电路等。输入电路所接收的输入的信号可以是由例如但不限于接收器接收并输入的,输出电路所输出的信号可以是例如但不限于输出给发射器并由发射器发射的,且输入电路和输出电路可以是同一电路,该电路在不同的时刻分别用作输入电路和输出电路。本技术实施例对处理器及各种电路的具体实现方式不做限定。
36.第六方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序(也可以称为代码,或指令),当该计算机程序被运行时,使得计算机执行上述第一方面以及第一方面中任一种可能实现方式中的方法。
37.第七方面,提供了一种计算机可读介质,该计算机可读介质存储有计算机程序(也可以称为代码,或指令)当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面中任一种可能实现方式中的方法。
附图说明
38.图1为适用于本技术的操作系统架构的一个示意图;
39.图2是本技术实施例提供的内存分配方法的一示意性流程图;
40.图3是本技术提供的内存分配方法实施例一的一个示意性流程图;
41.图4是本技术提供的内存分配方法实施例二的一个示意性流程图;
42.图5是本技术提供的内存分配方法实施例三的一个示意性流程图;
43.图6是本技术提供的内存分配方法实施例四的一个示意性流程图;
44.图7是本技术提供的通信装置的一例的示意性框图;
45.图8是本技术提供的通信设备的一例的示意性结构图。
具体实施方式
46.下面将结合附图,对本技术中的技术方案进行描述。
47.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
48.本技术实施例的说明书、权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
49.首先,对本技术涉及到的相关技术和术语进行介绍。
50.1.微内核架构
51.在微内核架构中,运行操作系统的处理器的功能被分为内核态(某些语境下也可以简称为内核)和用户态,内核态只负责部分关键业务功能,大部分操作系统功能放在用户态,这样可以确保内核态的“微型”化,同时把不同功能模块分开管理,以不同的进程运行,一个模块的问题不会影响到其他模块,实现更好的安全性和可靠性。典型的微内核架构操作系统有sel4,qnx,minix,fuchsia等。
52.2.宏内核架构
53.在宏内核架构中,运行操作系统的处理器所有功能都运行在内核态,实现一个“宏大”的内核,因为所有模块都运行在一个地址空间,可以直接互相访问,宏内核架构可以实现非常高效的性能,但也存在一个模块出了问题会导致整个内核崩溃的安全和可靠性问题。典型的宏内核架构操作系统有linux。
54.需要说明的是,本技术提供的方案可以适用于微内核架构的操作系统也可以适用于宏内核架构的操作系统,本技术对此不做限定。
55.3.系统服务(system service)进程
56.系统服务进程可以简称为系统服务或服务进程,系统服务进程是执行指定系统功能的进程,通常本地和通过网络为用户提供一些系统功能的服务,例如,系统服务进程可以包括但不限于文件系统进程(file system,fs)、客户端/服务器进程、web服务器进程等。
57.系统服务进程一般在后台运行,不会向用户应用进程出现程序窗口或对话框,可以在任务管理器中查找到已启动的系统服务进程。
58.图1为适用于本技术的操作系统架构的一个示意图。
59.如图1所示,操作系统可以根据功能权限划分为内核态模式和用户态模式,或者说,当处理装置运行操作系统时,处理装置的工作模式可以包括内核态模式或用户态模式。其中,用户态模式包括至少一个用户态进程,如用户态模式可以包括系统管理者(systemmanager,sysmgr)进程,负责启动并管理系统组件以及系统服务,为用户应用(user application,uapp)请求提供相应的系统服务,用户态模式还可以包括虚拟文件系统进程(virtual file system,vfs),负责管理和存储文件信息。用户态模式还可以包括其他系统服务进程,本技术不限于此。内核态模式包括至少一个内核态进程,负责关键业务功能。应理解,图1仅为适用于本技术的操作系统的一个系统架构示意图,但本技术不限于此,本技术的方案还可以应用于其他系统架构的操作系统中。
60.目前处理器运行操作系统时实现内存管理的方式主要包括两种:在用户态实现和在内核态实现。
61.例如,嵌入式实时操作系统(quick unix,qnx)中的内存管理完全放在用户态实现,内核负责地址空间映射时页表填充的部分。以读文件为例,具体流程步骤如下:
62.步骤一:uapp发送读文件请求给fs进程(以下简称fs);
63.步骤二:fs判断文件是否读取完毕,读取完毕则结束返回,否则继续;
64.步骤三:fs向内存管理进程申请内容作为高速缓冲存储器(cache);
65.步骤四:fs读取文件并写入cache;
66.步骤五:fs将cache中的内容拷贝至uapp指定的地址;
67.步骤六:返回步骤二。
68.其中,上述步骤三中fs需要通过进程间通信(ipc)向内存管理进程申请cache,在读取的文件内容较大时,以页(page)为单位的cache分配将非常频繁,由于ipc耗时较长,频繁的ipc将影响文件读写的性能。
69.再例如,fuchsia操作系统中的内存管理完全放在内核态实现,用户态系统服务进程的内存分配操作可以直接通过系统调用的方式向内核申请,虽然能够提高性能,但内核态中的内存管理模块较为庞大,这使得fuchsia的内核相比传统微内核会更大更复杂,通过各种安全认证的难度和工作量都会更大。
70.针对目前操作系统中的内存管理方式存在的上述问题,本技术提出内核可以执行第一级内存空间管理,为第一用户态进程授权部分物理内存空间,由用户态进程执行第二级内存空间管理,根据任务需求分配被授权的物理内存空间,能够避免用户态进程在接收到任务请求后通过进程间通信(ipc)向其他用户态进程请求物理内存空间,或者通过系统调用向内核请求物理内存空间。通过采用两级物理内存空间的管理方式,在内核负责完成少量的工作量的情况下,减少用户态进程之间频繁的通信,能够减小系统能耗、开销,提高内存分配的工作效率。
71.下面结合附图对本技术提供的内存分配方法进行说明。
72.图2是本技术提供的内存分配方法的一个示意性流程图。该内存分配方法可以由操作系统执行,或者可以是处理装置运行操作系统时执行该内存分配方法,操作系统包括多个用户态进程程序和内核程序(可以称为内核)。下面由操作系统该内存分配方法为例进行说明,但本技术不限于此。
73.s210,内核为第一用户态进程授权第一物理内存空间。
74.处理装置运行操作系统,该操作系统的内核用于管理该操作系统的物理内存空间。该内核可以用于为第一用户态进程授权系统的物理内存空间中的部分物理内存空间,如内核为第一用户态进程授权第一物理内存空间。该第一用户态进程可以对被授权的第一物理内存空间进行分配。
75.作为示例非限定,该第一用户态进程为系统服务进程。
76.需要说明的是,本技术中涉及到的内核的操作或用户态进程的操作(如执行、授权、发送、接收、确定、管理等操作)可以理解为是处理装置在运行到操作系统的该进程时执行的操作,或者操作系统运行到该进程时执行的操作。
77.一种实施方式中,该操作系统创建该第一用户态进程后,由该第一用户态进程向内核申请物理内存空间。该内核响应第一用户态进程的申请,为该第一用户进程分配该第一物理内存空间。
78.另一种实施方式中,第一用户态进程被授权的物理内存空间不足时,如第一用户态进程被授权的物理内存空间中,空闲物理内存(空闲物理内存也可以称为待分配的物理内存或待使用的物理内存)的大小不满足其他进程请求的物理内存大小时,第一用户态进程可以向内核申请物理内存空间。内核响应第一用户态进程的申请,为该第一用户进程分配该第一物理内存空间。
79.s220,第一用户态进程为第二用户态进程分配第一物理内存空间中的第一物理内存区间。
80.第一用户态进程接收第二用户态进程的任务请求,例如,该任务请求可以是来自应用进程的文件映射请求、文件读写请求等。第一用户态进程可以确定该任务请求所需的内存空间大小,并在该第一用户态进程被授权的第一物理内存空间中确定第一物理内存地址区间,则为该任务请求分配该第一内存地址区间。
81.具体地,该第一用户态进程基于该任务请求所需的内存空间大小,判断该第一用户态进程被授权的物理内存空间中待分配的物理内存空间的大小是否满足该任务请求所需的内存空间大小。若满足,则在该待分配的物理内存空间中为该任务请求分配物理内存地址区间;若不满足,则第一用户态进程向内核申请物理内存空间,该内核为该第一用户进程授权部分物理内存空间,第一用户态进程在被授权的物理内存空间内为该任务请求分配第一物理内存区间。
82.可选地,该第一用户态进程可以是用户态进程中的内存管理的主服务进程,或者可以称为主内存管理进程,该主服务进程可以为其他系统服务进程授权物理内存空间分配权限。
83.例如,其他系统服务进程可以包括文件系统进程,该主服务进程授权文件系统进程物理内存空间分配权限,文件系统进程被授权物理内存空间分配权限后可以向内核申请物理内存空间,内核为该文件系统进程授权部分物理内存空间后,该文件系统进程可以为其他进程的任务请求分配该部分物理内存空间中的物理内存区间。但本技术不限于此。
84.可选地,内核获取到用户态进程申请物理内存空间的请求后,基于该请求所需的物理内存空间的大小,确定内核管理的物理内存空间中待分配的物理内存空间的大小是否满足该请求所需的内存空间的大小。若满足,则为用户态进程授权部分物理内存空间,若不满足,内核可以发起物理内存空间回收,比如向具有物理内存空间分配权限的用户态进程发起物理内存空间请求,从而回收部分物理内存空间后,再为用户态进程授权物理内存空间。
85.根据本技术的上述方案,采用两级物理内存空间的管理方式,可以在内核负责完成少量的工作量的情况下,减少用户态进程的之间频繁通信,能够减小系统能耗、开销。
86.图3是本技术提供的内存分配方法的实施例一的流程图。图3示出了操作系统启动初始化阶段,采用本技术提供的内存分配方法分配内存的示意性流程图。
87.处理装置启动操作系统的初始化阶段的流程包括但不限于如下步骤:
88.1.启动内核;
89.2.在内核启动过程中,首先创建并使用启动分配器(boot allocator),用于内核启动阶段对内存的使用需求,当内核启动过程中完成了对内存的使用后,结束boot allocator的生命周期;
90.3.在内核启动过程中对剩余物理内存空间完成元数据的初始化;
91.4.内核启动的初始化完毕后,创建用户态内存管理主服务进程,例如,该内存管理主服务进程可以是系统管理者sysmgr进程;
92.5.主服务进程中向内核申请主服务进程的物理内存空间;
93.例如,主服务进程(即第一用户态进程的一个示例)可以包括第一物理内存管理算法(physical memory management algorithm,phymgr),内核可以包括全局phymgr(global phymgr),主服务进程通过物理内存管理算法向内核申请物理内存空间,内核响应该申请,
通过该全局phymgr为主服务进程授权部分物理内存空间(即第一物理内存空间的一个示例)。
94.6.在主服务进程对该主服务进程被授权的物理内存空间完成元数据的初始化;
95.7.在主服务进程初始化完成后,创建初始化(initialization,init)进程;
96.8.在init进程中创建其他系统服务进程,例如,创建文件系统进程等;
97.9.可选地,主服务进程可以授权一个或多个系统服务进程物理内存空间管理权限。
98.例如,虚拟文件系统(vfs)进程对物理内存有较高的分配需求,主服务进程可以授权vfs进程物理内存管理权限,但本技术不限于此,主服务进程还可以授权其他对物理内存有较高的分配需求的进程物理内存管理权限。
99.10.在步骤9中被授权物理内存管理权限的系统服务进程(即第一用户态进程的另一个示例)向内核申请物理内存空间。
100.11.被授权物理管理权限的系统服务进程完成被授权的物理内存空间(即第一物理内存空间的另一个示例)元数据的初始化。被授权物理管理权限的系统服务对被授权的物理内存空间具有分配权限。
101.12.执行其他剩余操作系统启动流程后,完成操作系统的启动。
102.在操作系统初始化阶段,内核为主服务进程授权部分物理内存空间,使得操作系统运行阶段,主服务进程可以根据需求分配被授权的物理内存空间。通过物理内存空间的两极化管理,能够实现内核的微型化,减少内核的工作量,提高系统的安全性。
103.图4是本技术提供的内存分配方法的实施例二的一个示意性流程图。图4示出了处理装置在运行主服务进程时获取到uapp的匿名内存映射请求后,响应该匿名内存映射请求进行内存分配的示意性流程。其中,vfs进程可以例如图3所示,在初始化阶段被主服务进程授权物理内存空间管理权限,并被内核授权、该vfs进程具有分配权限的部分物理内存空间,但本技术不限于此。
104.该处理装置响应uapp的匿名内存映射请求的流程,包括但不限于如下步骤:
105.1.在主服务进程中获取到uapp的匿名内存映射(uapp anon map with populate)请求;
106.匿名内存映射是指映射区不与文件相关联。
107.2.在主服务进程中为该匿名内存映射任务(或者说为发起该匿名内存映射请求的进程)分配相应的虚拟内存区间;
108.其中,虚拟内存区间可以是一个虚拟内存地址区间,或称为虚拟内存地址段,物理内存区间可以是一个物理内存地址区间,或称为物理内存地址段。
109.3.判断主服务进程被授权的物理内存空间中待分配的物理内存空间是否足够;
110.处理装置首先要判断该主服务进程被授权的物理内存空间中待分配的物理内存空间是否能够满足该内存映射请求所需的内存空间大小。若不满足,则在步骤4中向内核申请物理内存空间;若满足,执行步骤8,在主服务进程被授权的物理内存空间中,为该匿名内存映射请求分配物理内存区间;
111.4.在主服务进程中向内核申请物理内存空间;
112.5.内核判断全局物理内存空间中待分配的物理内存空间是否够;
113.处理装置在内核获取到该主服务进程的申请后,判断全局物理内存空间中待分配的物理内存空间大小是否满足主服务进程申请的物理内存空间大小。若满足,则内核为主服务进程授权部分物理内存空间后,返回步骤3;若不满足,则在步骤6中发起内存回收。
114.6.内核发起内存回收请求,以回收部分物理内存空间;
115.7.在全局物理内存空间足够的情况下,内核为主服务进程授权部分物理内存空间,并在主服务进程对被授权的部分物理内存空间执行元数据初始化,返回步骤3;
116.8.在主服务进程中为该匿名内存映射任务分配主服务进程被授权的物理内存空间中的物理内存区间;
117.9.在主服务进程中向内核发起映射请求,即将为该匿名内存映射请求分配的虚拟内存区间和物理内存区间发送给内核发起映射请求;
118.10.处理装置完成剩余流程。
119.图5是本技术提供的内存分配方法的实施例三的一个示意性流程图。图5示出了处理装置在运行主服务进程时获取到uapp的文件映射请求后,响应该文件映射请求时执行内存分配流程的示意性流程图。其中,vfs进程可以例如图3所示,在初始化阶段被主服务进程授权物理内存空间管理权限,并被内核授权、该vfs进程具有分配权限的部分物理内存空间,但本技术不限于此。
120.该处理装置响应uapp的文件映射请求的流程,包括但不限于如下步骤:
121.1.在主服务进程中获取到uapp的文件映射(uapp file map with populate)请求;
122.例如,该文件映射请求可以是mmap文件映射函数携带populated标志位(with populated flag),但本技术不限于此。
123.2.在主服务进程中为该文件映射任务(或者说为发起该文件映射任务的进程)分配相应的虚拟内存区间;
124.3.在主服务进程向vfs进程请求与该uapp对应的页高速缓存器(page cache),请求vfs进程提供与该uapp对应的文件页的物理内存(区间);
125.4.判断vfs进程是否有与该uapp对应的页高速缓存器,若没有,则执行步骤5;若有则执行步骤11,向主服务进程返回该uapp对应的页高速缓存器;
126.5.判断vfs被授权的物理内存空间是否足够;
127.处理装置首先要判断该vfs进程被授权的物理内存空间中待分配的物理内存空间是否能够满足该文件映射请求所需的内存空间大小。若不满足,则在步骤6中向内核申请物理内存空间;若满足,执行步骤10,在vfs进程被授权的物理内存空间中,为该文件映射任务分配物理内存区间作为页高速缓存器。
128.6.在vfs进程中向内核申请物理内存空间;
129.7.内核判断全局物理内存空间中待分配的物理内存空间是否够;
130.内核获取到该vfs进程的申请后,判断全局物理内存空间中待分配的物理内存空间大小是否满足vfs进程申请的物理内存空间大小。若不满足,则在步骤8中发起内存回收;若满足,则步骤9中内核为vfs进程授权部分物理内存空间后,返回步骤5。
131.8.内核发起内存回收请求,以回收部分物理内存空间;
132.9.在全局物理内存空间足够的情况下,内核为vfs进程授权部分物理内存空间,并
在vfs进程对被授权的物理内存空间执行元数据初始化,返回步骤5;
133.10.在vfs进程被授权的物理内存空间中为该文件映射任务分配vfs进程的物理内存区间作为页高速缓存器;
134.可选地,在vfs进程中通过该vfs进程相对应的物理内存管理算法(phymgr)从被授权的物理内存空间中为该文件映射任务分配物理内存区间。
135.11.在vfs进程将文件内容写入页高速缓存器;
136.12.在vfs进程向vfs进程返回该uapp对应的页高速缓存器;
137.13.在主服务进程中向内核发起映射请求,即将为该文件映射请求分配的虚拟内存区间和物理内存区间发送给内核发起映射请求;
138.14.处理装置完成剩余流程。
139.应理解,根据上述处理流程可知,本技术对系统服务(如vfs进程等)的物理内存分配和使用明确的权限管理和操作边界,系统服务管理的物理内存只用于满足自身功能和逻辑实现的需要(如文件映射任务等),不能用于满足应用程序的物理内存分配,应用程序的物理内存分配还是由主内存管理进程负责。由此可以减少进程间的频繁交互,也并未增加整体的内存管理复杂性,物理内存的访问控制还是统一在主内存管理进程中处理。
140.目前微内核操作系统中,文件读写性能相对宏内核操作系统会有明显的劣势,通过使用本技术提供的内存分配方法后,文件读写性能可以持平或超越典型的宏内核操作系统linux。在测试实验中,对比了本技术提供的内存分配方法与现有技术中linux操作系统的读能力和写能力。对于相同大小的文件在每次读取相同字节数时,无论是顺序读取的方式还是随机读取的方式,本技术提供的内存分配方法相较于linux操作系统处理效率可以提高35%以上。对于相同大小的文件在每次写入相同字节数时,无论是顺序写入的方式还是随机写入的方式,本技术提供的内存分配方法相较于linux操作系统处理效率可以提高15%以上。尤其对于每秒写入较大字节量时,本技术提供的内存分配方法的处理效率提高更为明显,例如每秒写入2兆字节时,处理效率可以提高60%。
141.图6是本技术提供的内存分配方法的实施例四的一个示意性流程图。图6示出了处理装置在运行vfs进程时获取到uapp的文件读写请求后,响应该文件映射请求时执行内存分配流程的示意性流程图,其中,vfs进程可以例如图3所示,在初始化阶段被主服务进程授权物理内存空间管理权限,并被内核授权、该vfs进程具有分配权限的部分物理内存空间,但本技术不限于此。
142.该处理装置响应uapp的文件读写请求的流程,包括但不限于如下步骤:
143.1.在vfs进程中获取到uapp的文件读写请求;
144.uapp的文件读写请求直接发送给vfs进程,在vfs进程中响应该文件读写请求根据文件指示符fd、调用相应的读(read)函数或写(write)函数,找到对应的文件位置。
145.2.判断是否存在该文件对应的page cache;若不存在,处理装置执行步骤3;若存在,则执行步骤9,对该page cache执行uapp请求相对应的读写操作;
146.3.判断是vfs进程被授权的物理内存空间是否足够;
147.处理装置判断被授权的物理内存空间中待分配的物理内存空间大小是否满足该读写任务所需的page cache的大小。若不满足,则执行步骤4,向内核申请授权vfs进程部分物理内存空间;若满足,则执行步骤8,为该读写任务分配物理内存区间作为该读写任务的
page cache。
148.4.在vfs进程向内核申请物理内存空间;
149.5.内核判断全局物理内存空间是否足够;
150.内核判断全局物理内存空间中待分配物理内存空间大小是否能够满足vfs进程申请的内存空间,若足够,则执行步骤7内核为vfs进程授权部分物理内存空间;若不足,则执行步骤6内核发起内存空间回收请求;
151.6.内核发起内存空间回收请求,以回收部分物理内存空间后未vfs进程授权部分物理内存空间;
152.7.内核为vfs进程授权部分物理内存空间,并在vfs进程对被授权的物理内存空间执行元数据初始化,返回步骤3;
153.8.在vfs进程为该文件读写任务分配相应的物理内存区间作为page cache;
154.9.在vfs进程对该文件相应的page cache执行读写操作;
155.10.流程结束。
156.在图6所示的处理文件读写任务时,处理装置在vfs进程接收到文件读写请求,在不存在相应的page cache,可以在vfs进程被授权的物理内存空间中为该文件读写任务分配相应的page cache。在vfs进程中具有物理内存空间分配权限,能够减少vfs进程向内存管理进程请求物理内存区间而带来的进程间通信开销,提高了处理效率。
157.以上结合图2至图6对本技术提供的内存分配方法进行了说明。下面结合图7对本技术提供的通信装置进行说明。
158.图7为本技术提供的内存分配装置的示意性结构图。如图7所示,该内存分配装置包括请求单元710和处理单元720。
159.该请求单元,用于在第二用户态进程向第一用户态进程发送任务请求;
160.该处理单元,用于在该第一用户态进程中为该任务请求分配第一物理内存区间,该第一物理内存区间属于第一物理内存空间,该第一物理内存空间是内核为该第一用户态进程授权的物理内存空间。
161.可选地,在该处理单元在该第一用户态进程为第二用户态进程的任务请求分配该第一物理内存区间之前,
162.该处理单元还用于确定该第一用户态进程被授权的物理内存空间中待分配的内存空间大小不满足该任务请求所需的内存空间大小;
163.该请求单元还用于在该第一用户态进程中向该内核申请物理内存空间;
164.该处理单元还用于在该内核为该第一用户态进程授权该第一物理内存空间。
165.可选地,该处理单元还用于在该第一用户态进程中为该任务请求分配第一虚拟内存区间;
166.该请求单元还用于在该第一用户态进程中向该内核发送内存映射请求,该内存映射请求用于请求建立该第一物理内存区间与该第一虚拟内存区间之间的映射关系。
167.可选地,该处理单元还用于在该第一用户态进程中为第三用户态进程授权物理内存空间分配权限。
168.可选地,该任务请求为文件映射请求,该第一用户态进程为文件系统进程或虚拟文件系统进程,
169.该处理单元还用于在该第一用户进程中响应该文件映射请求,将该文件映射请求所请求的文件映射至该第一物理内存区间;以及,该装置还包括:
170.收发单元,用于在该第一用户进程中向该第二用户进程发送该第一物理内存区间。
171.可选地,该任务请求为文件读写请求,该第一用户态进程为文件系统进程或虚拟文件系统进程,
172.该处理单元还用于在该第一用户进程中对该第一物理内存区间执行该文件读写请求所请求的读写操作。
173.可选地,该处理单元还用于在该第二用户态进程中为该第一用户态进程授权物理内存空间分配权限。
174.图8是本技术实施例提供的通信设备800的结构示意图,该通信设备800可以配置有如图1所示的操作系统。该通信设备800包括总线840,以及与总线840相连的处理器810,该通信设备800还可以包括通信接口820和存储器830。
175.应理解,图8所示的通信设备800能够实现任一方法实施例中的内存分配方法的各个过程。通信设备800中的各个模块的操作和/或功能,分别为了实现上述方法实施例中的相应流程。具体可参见上述方法实施例中的描述,为避免重复,此处适当省略详细描述。
176.可选地,该通信设备可以是终端,也可以称为用户设备(user equipment,ue),该通信设备可以是手机、平板电脑或计算机设备等。
177.本技术实施例还提供了一种计算机操作系统,包括:计算机程序代码,当该计算机程序代码被调用时,使得计算机操作系统执行上述任一方法实施例中的方法。
178.本技术实施例还提供了一种处理装置,包括处理器和接口;所述处理器用于执行上述任一方法实施例中的方法。
179.本技术还提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码由一个或多个处理器执行时,使得包括该处理器的装置执行上述任一方法实施例中的方法。
180.本技术还提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该程序代码由一个或多个处理器运行时,使得包括该处理器的装置执行上述任一方法实施例中的方法。
181.在本技术实施例中,在无逻辑矛盾的前提下,各实施例之间可以相互引用,例如方法实施例之间的方法和/或术语可以相互引用,例如装置实施例之间的功能和/或术语可以相互引用,例如装置实施例和方法实施例之间的功能和/或术语可以相互引用。
182.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1