一种内存区域分配方法、装置、设备及介质与流程

文档序号:33337887发布日期:2023-03-04 01:42阅读:38来源:国知局
一种内存区域分配方法、装置、设备及介质与流程

1.本发明涉及计算机技术领域,尤其涉及一种内存区域分配方法、装置、设备及介质。


背景技术:

2.用户进程运行过程中,电子设备的处理器通常从内存区域的非镜像区域为用户进程分配内存区域,而当非镜像区域内存不足时,处理器也会从内存区域的镜像区域为用户进程分配内存区域,这将导致镜像区域无法满足内核进程的运行需求。


技术实现要素:

3.基于以上问题,本发明实施例提供了一种内存区域分配方法、装置、设备及介质。
4.本发明实施例提供的技术方案是这样的:
5.本发明实施例提供了一种内存区域分配方法,所述方法包括:
6.若检测到进程发送的内存分配请求,且所述内存分配请求中的第一标识不为镜像标识,获取第二标识;其中,所述第一标识包括所述进程关联的内存区域的标识;所述第二标识包括内存区域链表中区域指针所指向的可用内存区域的地址标识;所述镜像标识包括内存空间中镜像区域的标识;
7.若所述第二标识为所述镜像标识,获取配置信息;其中,所述配置信息包括是否允许从所述镜像区域中分配内存区域至所述进程的信息;
8.基于所述配置信息,确定是否从所述镜像区域中分配内存区域至所述进程。
9.在一些实施例中,所述内存区域链表至少包括依次相邻设置的第一结点集合、第二结点集合以及第三结点集合;所述第一结点集合包括包含第一镜像区域的地址标识的结点集合;所述第二结点集合包括包含第一非镜像区域的地址标识的结点集合;所述第三结点集合包括包含第二镜像区域的地址标识的结点集合。
10.在一些实施例中,所述获取配置信息,包括:
11.若所述第二标识指向所述第二结点集合尾结点的下一结点,获取所述配置信息。
12.在一些实施例中,所述内存区域链表还包括第一空结点;所述第三结点集合的尾结点关联至所述第一空结点;所述若所述第二标识指向所述第二结点集合尾结点的下一结点,获取所述配置信息,包括:
13.若所述第二标识指向所述第三结点集合,控制第三标识指向所述第三结点集合的尾结点的下一结点;
14.若所述第三标识指向所述第一空结点,并获取所述配置信息。
15.在一些实施例中,所述方法还包括:
16.若所述第二标识指向所述第一结点集合中的任一结点,控制所述第二标识指向所述第一结点集合的尾结点的下一结点。
17.在一些实施例中,所述区域链表集合还包括第二空结点;所述第二结点集合的尾
结点关联至所述第二空结点;所述第二空结点关联至所述第三结点集合的首结点;所述控制所述第二标识指向所述第一结点集合的尾结点的下一结点之后,所述方法还包括:
18.若所述第二标识指向所述第二结点集合,控制第四标识指向所述第二结点集合的尾结点的下一结点;
19.若所述第四标识指向所述第二空结点,基于所述第二标识,从所述第二结点集合对应的所述第一非镜像区域中为所述进程分配内存区域。
20.在一些实施例中,所述内存区域链表还包括第四结点集合;所述第四结点集合的尾结点关联至所述第一结点集合的首结点;所述第四结点集合包括第二非镜像区域的地址标识的结点集合;所述方法还包括:
21.若所述第二标识不为所述镜像标识,基于所述第二标识从所述第一非镜像区域或所述第二非镜像区域中为所述进程分配内存区域。
22.在一些实施例中,所述第一镜像区域以及所述第二镜像区域中分别包括至少两个内存区域;所述方法还包括:
23.对所述内存空间中内存节点包含的所述镜像区域进行统计,得到所述第一镜像区域以及所述第二镜像区域。
24.在一些实施例中,所述方法还包括:
25.关联用户进程标识以及使能标识;其中,所述使能标识包括允许分配所述镜像区域中的内存区域至用户进程的标识;
26.基于关联后的用户进程标识以及使能标识,确定所述配置信息。
27.本发明实施例还提供了一种内存区域分配装置,所述装置包括:
28.获取模块,用于若检测到进程发送的内存分配请求,且所述内存分配请求中的第一标识不为镜像标识,获取第二标识;其中,所述第一标识包括所述进程关联的内存区域的标识;所述第二标识包括内存区域链表中区域指针所指向的可用内存区域的地址标识;所述镜像标识包括内存空间中镜像区域的标识;
29.所述获取模块,还用于若所述第二标识为所述镜像标识,获取配置信息;其中,所述配置信息包括是否允许从所述镜像区域中分配内存区域至所述进程的信息;
30.分配模块,用于基于所述配置信息,确定是否从所述镜像区域中分配内存区域至所述进程。
31.本发明实施例还提供了一种电子设备,所述电子设备包括处理器和存储器;所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,能够实现如前任一所述的内存区域分配方法。
32.本发明实施例还提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序被电子设备的处理器执行时,能够实现如前任一所述的内存区域分配方法。
33.由以上可知,在本发明实施例中,首先,若进程发送的内存分配请求中的第一标识不为镜像标识,但内存区域链表中区域指针即第二标识为镜像标识时,能够基于配置信息确定是否从镜像区域中分配内存区域至进程,从而使得在进程所能够申请的内存区域的级别不为镜像区域,但内存空间中可用内存区域仅剩镜像区域时,能够对是否为进程分配镜像区域的有效控制;并且,通过调整配置信息,能够实现对镜像区域中内存区域分配的灵活
按需控制,从而能够满足多样化的内存分配需求,也能够进一步改善内核进程的运行状态,提高内核运行的稳定性;与此同时,通过对配置信息的动态调整,能够降低镜像区域中内存区域的不必要浪费,提高镜像区域中内存区域的利用率,还能够提高关键进程比如内核进程对镜像区域申请的成功率。
附图说明
34.图1为本发明实施例提供的内存区域分配方法的流程示意图;
35.图2为本发明实施例提供的内存区域链表的结构示意图;
36.图3为本发明实施例提供的内存区域分配方法的又一流程示意图;
37.图4为本发明实施例提供的分配内存区域的结构示意图;
38.图5为本发明实施例提供的内存区域分配装置的结构示意图;
39.图6为本发明实施例提供的电子设备的结构示意图。
具体实施方式
40.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
41.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
42.计算机设备的内存空间可以划分为镜像区域以及非镜像区域。其中,内核进程通常从镜像区域申请内存区域,借助于镜像区域的镜像备份机制,在内核进程异常时,通过镜像区域的镜像备份机制可以实现内核进程的数据恢复功能;用户进程通常从非镜像区域申请内存区域。
43.但在实际应用中,在非镜像区域的内存空间不足时,处理器也会从镜像区域为用户进程分配内存区域,这就导致镜像区域中内核进程可用内存区域减少,在镜像区域减少到一定程度后,就会使得内核进程失去镜像区域的数据保护功能,并且,在镜像区域中存储空间数量进一步减少时,甚至会触发内核进程的内存溢出(out of memory,oom)异常。因此,相关技术中对内存空间的镜像区域的分配方式,严重的影响了内核进程的稳定运行。
44.基于以上问题,本发明实施例提供了一种内存区域分配方法、装置、设备及介质。
45.本发明实施例提供的内存区域分配方法,在检测到进程发送的内存分配请求、且内存分配请求中的第一标识不为镜像标识的情况下,能够获取内存区域链表中区域指针所指向的可用内存区域的地址标识即第二标识,若第二标识为镜像标识,则获取配置信息,并根据配置信息确定是否从镜像区域中分配内存区域至进程,从而实现了对镜像区域的内存区域分配的有效控制,降低了用户进程对镜像区域的冲击,进而能够提高内核进程对镜像区域的申请效率和使用效率,改善内核进程运行的稳定性。
46.需要说明的是,本发明实施例提供的内存区域分配方法,可以通过电子设备的处理器实现,上述处理器可以为特定用途集成电路(application specific integrated circuit,asic)、数字信号处理器(digital signal processor,dsp)、数字信号处理装置(digital signal processing device,dspd)、可编程逻辑装置(programmable logic device,pld)、现场可编程逻辑门阵列(field programmable gate array,fpga)、中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器中的至少一种。
47.图1为本发明实施例提供的内存区域分配方法的流程示意图,如图1所示,该流程可以包括步骤101至步骤103:
48.步骤101、若检测到进程发送的内存分配请求,且内存分配请求中的第一标识不为镜像标识,获取第二标识。
49.其中,第一标识包括进程关联的内存区域的标识;第二标识包括内存区域链表中区域指针所指向的可用内存区域的地址标识;镜像标识包括内存空间中镜像区域的标识。
50.示例性地,若未检测到进程发送的内存分配请求,则可以不执行获取第一标识的操作;示例性地,若第一标识为镜像标识,则依然可以执行获取第二标识的操作。
51.在一种实施方式中,镜像区域可以包括内存空间中预先设置的具备数据备份功能的内存区域;示例性地,镜像区域中内存区域的数量可以为多个。
52.在一种实施方式中,内存区域链表可以包括包含内存空间中多个内存区域的地址标识的链表;示例性地,内存区域链表中的第k结点可以包括第k内存区域的地址标识、第k结点的pre指针以及第k结点的next指针,并且,第k结点的pre指针指向第k-1结点,第k结点的next指针指向第k+1结点;示例性地,第k内存区域可以为内存空间中的任一zone;示例性地,第k-1内存区域、第k内存区域以及第k+1内存区域在内存空间中可以是相邻的,也可以是不相邻的;其中,k可以为大于或等于1的整数。
53.在一种实施方式中,区域指针可以包括用于在内存区域链表中的结点之间切换的指针变量。
54.在一种实施方式中,内存区域链表中不同类型的内存区域的地址标识可以连续相邻设置,比如normal区中内存区域地址标识的结点可以在内存区域链表中连续相邻设置,movable区中内存区域地址标识的结点可以在内存区域链表中连续相邻设置;示例性地,内存区域链表可以为zonelist,电子设备的处理器可以依据zonelist确定可用内存区域的区域指针,并依据可用内存区域的区域指针为请求分配内存区域的进程分配内存区域。
55.在一种实施方式中,可用内存区域可以包括内存空间中任一未被分配的内存区域;示例性地,可用内存区域可以包括normal、movable、以及dma区中的内存区域中的至少一个;示例性地,当内存空间划分为镜像区域以及非镜像区域时,可用内存区域可以包括镜像区域和/或非镜像区域中的内存区域。
56.在一种实施方式中,地址标识可以包括内存区域的物理地址;示例性地,地址标识可以以十六进制或二进制的形式体现;示例性地,第二标识可以包括内存空间中可用内存区域的地址。
57.在一种实施方式中,镜像标识可以包括预先为内存空间中镜像区域设置的级别标识或类型标识;示例性地,上述级别标识或类型可以通过枚举类型的常量体现;示例性地,在枚举类型enmuzone_type中可以根据存储区域类型,为不同的存储区域设置不同的枚举标识;示例性地,enmuzone_type中每一类型的存储区域的枚举标识可以通过十六进制的形式体现;示例性地,normal区以及movable区中的至少部分区域可以包含在非镜像区域中;示例性地,normal区以及movable区中的部分区域可以包含在镜像区域中。
58.在一种实施方式中,第一标识可以包括进程所能够申请的内存区域的级别标识,或进程所能够寻址的内存区域的范围标识;比如,若第一标识为非镜像区域的标识,则表示该进程优先分配的内存区域为非镜像区域,或者为该进程分配内存区域时可以优先寻址非
镜像区域。
59.在一种实施方式中,内存分配请求中可以包括进程标识;示例性地,内存分配请求可以是切换至启动或运行状态的任一进程发送的,本发明实施例对此不作限定。
60.步骤102、若第二标识为镜像标识,获取配置信息。
61.其中,配置信息包括是否允许从镜像区域中分配内存区域至进程的信息。
62.示例性地,若第二标识不为镜像标识,则可以不获取配置信息。
63.示例性地,若第二标识不为镜像标识,则可以直接从第二标识指向的内存区域中为上述进程分配内存区域。
64.在一种实施方式中,配置信息可以是预先设置的;示例性地,配置信息可以包括是否允许从镜像区域中分配内存区域至任一进程的信息;示例性地,配置信息可以根据时段、电子设备的处理器运行状态、内存空间利用率、以及进程启动数量中的至少一种设定;示例性地,不同时段对应的配置信息可以不同,比如在第一时段对应的配置信息可以为第一信息,第二时段对应的配置信息可以为第二信息;示例性地,在内存空间利用率为第一百分比的情况下,配置信息可以为第三信息,而在内存空间利用率为第二百分比的情况下,配置信息可以为第四信息。
65.在一种实施方式中,配置信息可以是固定的,也可以是可调的,比如根据时段、电子设备的处理器运行状态、内存空间利用率、以及进程启动数量中的至少一种对已经设定的配置信息进行调整,以适应进程的运行或电子设备整体运行状态的需要。
66.步骤103、基于配置信息,确定是否从镜像区域中分配内存区域至进程。
67.在一种实施方式中,在配置信息表示允许从镜像区域中分配内存区域至进程的条件下,可以分配镜像区域中的内存区域至进程;示例性地,在配置信息表示不允许从镜像区域中分配内存区域至进程的条件下,可以不分配镜像区域中的内存区域至进程,此时可以尝试从非镜像区域中分配存储区域至进程。
68.由以上可知,本发明实施例提供的内存区域分配方法中,若检测到进程发送的内存分配请求,且内存分配请求中的第一标识不为镜像标识,则获取第二标识,若第二标识为镜像标识,则获取配置信息,并基于配置信息确定是否从镜像区域中分配内存区域至进程;其中,第一标识包括进程关联的内存区域,第二标识包括可用内存区域的地址标识;镜像标识包括内存空间中镜像区域的标识。
69.由此,在本发明实施例中,首先,若进程发送的内存分配请求中的第一标识不为镜像标识,但内存区域链表中区域指针即第二标识为镜像标识时,能够基于配置信息确定是否从镜像区域中分配内存区域至进程,从而使得在进程所能够申请的内存区域的级别不为镜像区域,但内存空间中可用内存区域仅剩镜像区域时,能够对是否为进程分配镜像区域的有效控制;其次,通过调整配置信息,能够实现对镜像区域中内存区域分配的灵活按需控制,从而能够满足多样化的内存分配需求,也能够进一步改善内核进程的运行状态,提高内核运行的稳定性;与此同时,通过对配置信息的动态调整,能够降低镜像区域中内存区域的不必要浪费,提高镜像区域中内存区域的利用率,又能够改善关键进程比如内核进程对镜像区域申请的成功率。
70.因此,本发明实施例提供的内存区域分配方法,能够减少内核进程比如内核关键程序由于镜像区域中可用内存区域不足而产生不可修正错误(uncorrected eror,ue)导致
的宕机问题、以及部分进程对镜像区域随意进行内存申请导致的镜像区域可用内存区域不足的问题,还能够兼顾部分进程对镜像区域的内存申请需求。
71.基于前述实施例,本发明实施例提供的内存区域分配方法中,内存区域链表至少包括依次相邻设置的第一结点集合、第二结点集合以及第三结点集合;第一结点集合包括包含第一镜像区域的地址标识的结点集合;第二结点集合包括包含第一非镜像区域的地址标识的结点集合;第三结点集合包括包含第二镜像区域的地址标识的结点集合。
72.在一种实施方式中,第一镜像区域、第一非镜像区域以及第二镜像区域中所包含的内存区域的数量,可以分别为至少一个;示例性地,第一镜像区域、第一非镜像区域以及第二镜像区域可以包括内存空间中的至少部分内存区域。
73.在一种实施方式中,第一结点集合的头结点可以为内存区域链表的头结点,而第三结点集合的尾结点可以为内存区域链表的尾结点,且第一结点集合的尾结点可以关联至第二结点集合的头结点,第二结点集合的尾结点可以关联第三结点集合的头结点。
74.在实际应用中,电子设备为进程分配内存区域时,通常是基于zonelist中结点的顺序执行的,且在相关技术中,zonelist中内存区域结点的排列顺序为非镜像区域与镜像区域依次相邻设置,如此,电子设备将zonelist中的非镜像区域分配完毕之后,直接分配镜像区域,这将导致镜像区域分配完毕之后,即使非镜像区域中的部分内存区域被动态释放,也无法为进程分配非镜像区域的内存区域。
75.而在本发明实施例提供的内存区域链表即zonelist中,第一结点集合、第二结点集合以及第三结点集合依次相邻设置,这样,即使在电子设备按照zonelist中结点的排布顺序为进程分配内存区域,那么,当第一结点集合对应的镜像区域的内存区域被分配完毕之后,依然可以为进程分配第二结点集合中的非镜像区域。
76.由以上可知,在本发明实施例提供的内存区域分配方法中,内存区域链表中的第一结点集合、第二结点集合以及第三结点集合依次相邻设置,如此,在内存区域链表为zonelist的情况下,即使电子设备的处理器按照相关技术中的对zonelist顺序寻址分配内存区域的方法,为进程分配内存区域,也能够大大减少在镜像区域被分配完毕而无法分配非镜像区域导致的内核进程的oom异常。
77.基于前述实施例,本技术实施例提供的内存区域分配方法中,获取配置信息,可以通过以下方式实现:
78.若第二标识指向第二结点集合尾结点的下一结点,获取配置信息。
79.示例性地,若第二标识未指向第二结点集合尾结点的下一结点,则可以不执行获取配置信息的操作。
80.示例性地,若第二标识指向第二结点集合尾结点的下一结点,可以表示当前时刻内存空间中可用内存区域仅剩下镜像区域,此时为了满足进程的数据处理需求,可以从镜像区域中为进程分配内存区域。
81.示例性地,若第二标识指向第二结点集合尾结点的下一结点,还可以表示非镜像区域中存在可用内存区域,但非镜像区域中存在的可用内存区域可以为其它进程在短暂时间内动态释放的。
82.由以上可知,在本发明实施例提供的内存区域分配方法中,首先,当第二标识指向第二结点集合尾结点的下一结点时,可以表示内存空间中的可用内存区域位于第二镜像区
域,此时获取配置信息,能够实现对获取配置信息这一操作的针对性控制;其次,当可用内存空间仅剩镜像区域时获取配置信息,能够结合可用内存区域的实际情况对获取配置信息这一操作的精准实时控制。
83.基于前述实施例,本发明实施例提供的内存区域分配方法中,内存区域链表还包括第一空结点;第三结点集合的尾结点关联至第一空结点。
84.示例性地,第三结点集合尾结点的next指针可以指向第一空结点,第一空结点的pre指针可以指向第三结点集合的尾结点。
85.示例性地,第一空结点中结点的数量可以为至少一个;示例性地,第一空结点可以作为内存区域链表的尾结点,因此,若检测到第一空结点可以表示对内存区域链表的遍历已到达内存区域链表的尾端。
86.相应的,若第二标识指向第二结点集合尾结点的下一结点,获取配置信息,包括:
87.若第二标识指向第三结点集合,控制第三标识指向第三结点集合的尾结点的下一结点;若第三标识指向第一空结点,获取配置信息。
88.示例性地,若第二标识未指向第三结点集合,则可以不执行控制第三标识指向第三结点集合的尾结点的下一结点的操作。
89.在一种实施方式中,第三标识可以是对第二标识进行处理而得到的;示例性地,可以根据第三结点集合中结点的数量确定第一指针跨度,并对第二标识以及第一指针跨度执行加法计算,从而得到第三标识;示例性地,在内存区域链表中的每一结点中可以包括结点类型标识,因此,可以基于第二标识、以及第二标识指向的结点及其后续结点的结点类型标识,对第二标识执行地址累加计算,当结点类型标识从镜像标识切换为空时,可以确定累加计算后的第二标识为第三标识。
90.示例性地,若第二标识指向第三结点集合的首结点,则确定第三标识,并对第三标识进行判断,从而确定当前可用内存区域是否仅剩下第二镜像区域,若当前可用内存区域仅剩下第二镜像区域,则获取配置信息。
91.由以上可知,本发明实施例提供的内存区域分配方法中,内存区域链表包括第一空结点,且第三结点集合的尾结点关联至第一空结点,那么,通过第三结点集合与第一空结点之间的相邻关系,不仅能够快速的判断第二标识是否已经指向内存区域链表的末端的第二镜像区域的地址标识,即可用内存区域是否仅剩第二镜像区域,而且,通过上述操作,还能实现对获取配置信息这一操作的严格精准控制。
92.基于前述实施例,本发明实施例提供的内存区域分配方法,还可以包括以下操作:
93.若第二标识指向第一结点集合中的任一结点,控制第二标识指向第一结点集合的尾结点的下一结点。
94.示例性地,若第二标识未指向第一结点集合中的任一结点,则可以不执行控制第二标识执行第一结点集合的尾结点的下一结点的操作。
95.示例性地,第二标识指向第一结点集合中的任一结点,可以表示虽然进程能够申请的内存区域级别不为镜像区域,但电子设备的处理器当前可分配的存储区域为镜像区域,此时,为了减少保障内核进程的稳定运行,可以优先分配与第一结点集合相邻的第二结点集合中的内存区域,即第一非镜像区域中的内存区域。
96.示例性地,由于在内存区域链表中第一结点集合与第二结点集合依次相邻设置,
因此,第一结点集合的尾结点的下一结点,可以为第二结点集合的首结点,也就是说,控制第二标识指向第一结点集合的尾结点的下一结点,可以使得第二标识指向第二结点集合的首结点,从而能够从第二结点集合对应的第一非镜像区域中为进程分配内存区域,此时无需获取配置信息。
97.由以上可知,本发明实施例提供的内存区域分配方法中,若第二标识指向第一结点集合中的任一结点,则可以表示当前可用内存区域位于镜像区域;而内存区域链表中第一结点集合与第二结点集合依次相邻设置,可以表明内存空间中的第一非镜像区域中的至少部分存储区域尚未被分配;此时,控制第二标识指向第一结点集合的尾结点的下一结点,使得第二标识跳过了第一镜像区域对应的结点集合,指向了第一非镜像区域,从而能够从第一非镜像区域中为进程分配存储区域,进而缓解了相关技术中在非镜像区域中仍然包含可用存储区域时,对镜像区域随意分配而导致的对内核进程的冲击。
98.基于前述实施例,本发明实施例提供的内存区域分配方法中,区域链表结合还包括第二空结点;第二结点集合的尾结点关联至第二空结点;第二空结点关联至第三结点集合的首结点。
99.在一种实施方式中,第二空结点的pre指针可以指向第二结点集合的尾结点,第二结点集合的尾结点的next指针可以指向第二空结点;示例性地,第二空结点的next指针可以指向第三结点集合的首结点,第三结点集合的首结点的pre指针可以指向第二空结点。
100.在一种实施方式中,第一空结点中空结点的数量可以与第二空结点中空结点的数量可以不同,比如,第一空结点中空结点的数量可以为2,而第二空结点中空结点的数量可以为1,从而实现第一空结点与第二空结点之间的快速简单区分,提高内存分配时不同空结点的识别效率,也能够提高对区域链表集合中不同的结点集合位置的区分效率。
101.相应的,控制第二标识指向第一结点集合的尾结点的下一结点之后,本发明实施例提供的内存区域分配方法,还可以执行以下操作:
102.若第二标识指向第二结点集合,控制第四标识指向第二结点集合的尾结点的下一结点;若第四标识指向第二空结点,基于第二标识,从第二结点集合对应的第一非镜像区域中为进程分配内存区域。
103.示例性地,若第二标识未指向第二结点集合,则可以不执行控制第四标识指向第二结点集合的尾结点的下一结点的操作。
104.在一种实施方式中,第四标识可以是对第二标识进行处理而得到的;示例性地,可以根据第二结点集合中结点的数量确定第二指针跨度,并对第二标识以及第二指针跨度执行加法计算,从而得到第四标识;示例性地,在内存区域链表中的每一结点中可以包括结点类型标识,可以基于第二标识、以及第二标识指向的结点及其后续结点的结点类型标识,对第二标识执行地址累加计算,当结点类型标识从镜像标识切换为空时,可以确定累加计算后的第二标识为第四标识。
105.示例性地,若第二标识集合指向第二空结点,则可以控制第二标识指向第二结点集合的首结点,并将第二结点集合的首结点指向的第一非镜像区域中的存储区域,分配至上述进程。
106.由以上可知,本发明实施例提供的内存区域分配方法中,区域链表集合中包含的第二空结点设置在第二结点集合与第三结点集合之间,从而能够实现对第二结点集合与第
三结点集合的有效隔离和区分;并且,在第二标识指向第二结点集合的情况下,通过第四标识的指向结点的判断实现了对内存区域分配的精准控制,降低了分配镜像区域的内存区域至上述进程的概率;与此同时,基于第二标识从第二结点集合对应的第一非镜像区为进程分配内存区域,不仅能够降低对镜像区域的冲击,降低内核进程oom的概率,还能实现对进程所需内存的针对性分配。
107.基于前述实施例,本发明实施例提供的内存区域分配方法中,内存区域链表还包括第四结点集合;第四结点集合的尾结点关联至第一结点集合的首结点;第四结点集合包括第二非镜像区域的地址标识的结点集合。
108.在一种实施方式中,第一非镜像区域以及第二非镜像区域可以为内存空间中非镜像区域的至少部分内存区域;示例性地,第一非镜像区域以及第二非镜像区域所包含的内存区域的类型可以不同,比如第一非镜像区域可以包括normal区域,而第二非镜像区域可以包括movable区域;示例性地,第一非镜像区域以及第二非镜像区域对应的内存节点可以不同,比如,第一非镜像区域可以包括第一内存节点中的非镜像区域,而第二非镜像区域可以包括第二内存节点中的非镜像区域;示例性地,第一非镜像区域以及第二非镜像区域中所包含的非镜像区域的类型、节点以及数量中的至少一种,可以是电子设备的处理器随机分配的,也可以时候预先设定的,本发明实施例对此不作限定。
109.在本发明实施例中,内存区域链表中第四结点集合、第一结点集合、第二结点集合以及第三结点集合之间依次相邻设置,在内存区域链表为zonelist的条件下,即使采用相关技术中对zonelist中结点的顺序遍历的方法进行内存区域分配,也能实现对非镜像区域与镜像区域中内存区域的均衡分配,从而降低对镜像区域的冲击,减少oom数量。
110.示例性地,本发明实施例提供的内存区域分配方法,还可以执行以下操作:
111.若第二标识不为镜像标识,基于第二标识从第一非镜像区域或第二非镜像区域中为进程分配内存区域。
112.示例性地,若第二标识为镜像标识,则可以采用前述实施例提供的方法,从第一非镜像区域中为上述进程分配内存区域。
113.示例性地,若第二标识不为镜像标识,且第二标识指向第四结点集合或第二结点集合中的任一结点,则可以将第四结点集合或第二结点集合中的任一结点对应的非镜像区域分配至上述进程。
114.由以上可知,本发明实施例提供的内存区域分配方法中,内存区域链表包括第四结点集合,且第四结点集合的尾结点关联至第一结点集合的首结点,第四结点集合包括第二非镜像区域的地址标识的结点集合,那么,在内存区域链表中非镜像区域的地址标识的结点集合、与镜像区域的地址标识的结点集合两两相邻设置,内存区域链表中第四结点集合、第一结点集合、第二结点集合以及第三结点集合之间依次相邻设置,在内存区域链表为zonelist的条件下,即使采用相关技术中对zonelist中结点顺序寻址的内存区域分配方法,也能使得非镜像区域与镜像区域中内存区域的均衡分配,从而降低对镜像区域的冲击,减少oom数量;并且,若第二标识不为镜像标识,则能够基于第二标识从第一非镜像区域以及第二非镜像区域中灵活的为进程分配内存区域,从而实现了对各种内存区域的灵活高效分配。
115.基于前述实施例,本发明实施例提供的内存区域分配方法中,第一镜像区域以及
第二镜像区域分别包括至少两个内存区域。
116.在一种实施方式中,第一镜像区域以及第二镜像区域可以构成内存空间中至少一个内存节点中镜像区域的总和。
117.示例性地,本发明实施例提供的内存区域分配方法,还可以包括执行以下操作:
118.对内存空间中内存节点包含的镜像区域进行统计,得到第一镜像区域以及第二镜像区域。
119.在一种实施方式中,可以对内存空间中的至少部分内存节点所包含的镜像区域进行统计,得到统计结果,并对统计结果进行划分从而得到第一镜像区域以及第二镜像区域;示例性地,第一镜像区域与第二镜像区域所关联的内存节点可以不同,比如第一镜像区域中的内存区域包括第一内存节点中的镜像区域,而第二镜像区域中的内存区域包括第二内存节点中的镜像区域;示例性地,第一镜像区域与第二镜像区域中所包含的内存区域,可以包括内存空间中分布集中程度大于或等于集中阈值的内存区域。
120.由以上可知,本发明实施例提供的内存区域分配方法中,第一镜像区域以及第二镜像区域中包括至少两个内存区域,那么,通过对内存区域链表中第一结点集合以及第三结点集合的寻址,能够提高电子设备的处理器对内存区域链表中镜像区域的寻址效率;并且,通过对内存空间中内存节点包含的镜像区域进行统计得到第一镜像区域以及第二镜像区域,也实现了对内存空间中镜像区域的集中管理,从而能够降低内存节点中镜像区域中的内存区域的碎片化程度。
121.图2为本发明实施例提供的内存区域链表的结构示意图,如图2所示,内存区域链表2包括第一结点集合201、第二结点集合202、第三结点集合203以及第四结点集合204;其中,第三结点集合203的尾结点关联至第一空结点205,在第二结点集合202与第三结点集合203之间还设置有第二空结点206。
122.其中,第一结点集合201对应的第一镜像区域、以及第三结点集合203对应的第二镜像区域,可以包括对内存空间中至少部分内存节点的镜像区域进行统计得到的镜像区域;示例性地,第一镜像区域以及第二镜像区域中包含的内存区域可以为至少两个,因此,第一结点集合201以及第三结点集合203中所包含的结点数量,也可以分别为至少两个。
123.在内存区域链表2中,第二结点集合202以及第四结点集合204分别对应于第一非镜像区域以及第二非镜像区域;示例性地,第一非镜像区域以及第二非镜像区域中内存区域的数量也可以均为至少两个,相应的,第二结点集合202以及第四结点集合204中结点的数量也可以均为至少两个;示例性地,第一非镜像区域以及第二非镜像区域中的内存区域,也可以是对内存空间中至少一个内存节点中的存储区域进行统计而得到的,本发明实施例对此不作限定。
124.在内存区域链表2中,第一空结点205所包含的空结点数量,可以与第二空结点206中所包含的空结点数量不同,如图所示,第一空结点205中可以包括两个空结点,以表示内存区域链表2的尾结点,而第二空结点206中可以包括一个空结点,以隔离第二结点集合202与第三结点集合203。
125.本发明实施例中的内存区域链表可以是对zonelist进行结构调整而得到的,也就是说,本发明实施例中的内存区域链表在zonelist中间隔性的设置第二空结点以及镜像区域的地址标识结点集合,并在zonelist的末尾添加两个空结点作为zonelist结束的标记,
不仅实现了镜像区域的地址标识与非镜像区域的地址标识之间的相邻设置、对镜像区域的地址标识以及非镜像区域的地址标识的隔离设置,而且能够实现了对zonelist末尾结点的显著标识;与此同时,通过对不同位置设置不同数量的空结点的判断,能够实现对不同存储区域、以及zonelist位置的高效识别,从而提高内存区域分配的效率。
126.图3为本发明实施例提供的内存区域分配方法的又一流程示意图,如图3所示,该流程可以包括以下步骤:
127.步骤301、开始。
128.示例性地,电子设备的处理器可以对内存空间的内存区域进行统计,从而确定第一镜像区域、第二镜像区域、第一非镜像区域以及第二非镜像区域,然后根据上述各个内存区域确定第一结点集合、第三结点集合、第二结点集合以及第四结点集合,并在第一结点集合与第二结点集合之间设置第二空结点,并将第三结点集合的尾结点关联至第一空结点,设置第一空结点中的空结点数量与第二空结点中的空结点数量不同,从而得到内存区域链表即zonelist。
129.步骤302、获取进程的highest_zoneidx以及z。
130.示例性地,若检测到进程发送的内存分配请求,则可以从内存分配请求中获取highest_zoneidx;示例性地,highest_zoneidx可以为前述实施例中的第一标识;示例性地,不同优先级的进程对应的highest_zoneidx可以不同。
131.示例性地,电子设备的处理器还可以获取z;示例性地,z可以为前述实施例中的第二标识;在实际应用中,z可以为zone-》z,用于表示zonelist中当前指针所指向的结点,即当前可用内存区域的地址。
132.步骤303、判断highest_zoneidx是否大于zone_mirror。
133.示例性地,zone_mirror可以为前述实施例中的镜像标识。
134.示例性地,若highest_zoneidx大于zone_mirror,则表示当前可用内存区域为非镜像区域,此时可以执行步骤304至步骤307;若highest_zoneidx不大于zone_mirror,则可以执行步骤307。
135.步骤304、判断z是否等于zone_mirror。
136.示例性地,若z等于zone_mirror,可以表示zonelist中当前指针指向的结点为镜像区域对应的结点,也即当前可用内存区域为镜像区域,此时可以执行步骤305;示例性地,若z不等于zone_mirror,可以表示zonelist中当前指针指向的结点不为镜像区域对应的结点,即当前可用内存区域为非镜像区域,此时可以执行步骤308至步骤310。
137.步骤305、控制z跳过所有zone_mirror后判断是否为z不为空或z+1不为空。
138.示例性地,在步骤304中的z指向的结点为第一镜像区域的结点集合即第一结点集合中的结点时,控制z跳过所有zone_mirror后,z可以指向第一结点集合的尾结点,此时z不为空,同时z+1指向第二空结点,因此,z+1为空,从而使得z不为空或z+1不为空的条件判断为真,此时可以执行步骤306。
139.示例性地,若在步骤304中的z指向的结点为第二镜像区域的结点集合即第三结点集合中的结点时,控制z跳过所有的zone_mirror后,z可以指向第一空结点,此时意味着z未跳过zone_mirror时,指向的是zonelist末端可用的第二镜像区域,此时只能从第二镜像区域中为进程分配内存区域,此时可以执行步骤307。
140.步骤306、跳过镜像区域使z指向非镜像区域。
141.示例性地,此时可以控制z指向第一非镜像区域对应的结点即第二结点集合,并执行步骤307。
142.步骤307、返回z,并分配内存区域。
143.示例性地,此时可以返回z,并将z指向的结点对应的内存区域分配给进程;示例性地,在步骤301之后可以执行步骤311。
144.步骤308、判断是否z为空并且z+1不为空。
145.示例性地,若z为空并且z+1不为空,则可以确定z指向第二空结点,表示zonelist中当前可用内存区域为第二镜像区域,此时可以执行步骤309;示例性地,若不满足z为空并且z+1不为空,则可以确定z指向第一非镜像区域或第二非镜像区域对应的结点集合,此时可以执行步骤307。
146.步骤309、判断控制跳过文件开关是否打开。
147.示例性地,是否跳过文件开关可以为前述实施中的配置文件;示例性地,若跳过文件开关处于打开状态,则表示可以从第二镜像区域分配内存区域至进程,此时可以执行步骤310;示例性地,若跳过文件开关处于未打开状态,则表示不允许从第二镜像区域中分配内存区域至进程,此时可以执行步骤307。
148.步骤310、z自增。
149.示例性地,通过z的自增操作,可以控制z指向第二镜像区域对应的结点集合即第三结点集合,在步骤310执行结束之后,可以执行步骤307。
150.步骤311、结束。
151.示例性地,若分配内存区域至进程,则进程可以继续运行;若未分配内存区域至进程,则可以进行进程调度,从而切换至其它进程执行,或者输出进程内存区域分配异常的提示信息。
152.由以上可知,本发明实施例提供的内存区域分配方法,通过调整zonelist,增加空时跳过文件开关,修改zonelist的访问逻辑,实现了对镜像区域中的内存区域分配的灵活高效控制。
153.基于前述实施例,本发明实施例提供的内存区域分配方法中,获取配置信息,还可以以下方式实现:
154.若进程为用户进程,获取配置信息。
155.示例性地,若进程不为用户进程,则可以不获取配置信息。
156.示例性地,可以通过配置信息对所有的用户进程分配镜像内存的操作进行多样化控制;示例性地,可以通过配置信息对部分用户进程申请分配镜像内存的操作进行控制,从而实现对用户进程能否从镜像区域申请内存区域的有效控制。
157.由以上可知,在本发明实施例提供的内存区域分配方法中,若进程为用户进程,则获取配置信息,如此,一方面能够实现为用户进程分配镜像区域的有效控制,降低对镜像区域的冲击,另一方面,通过修改配置信息,能够使能为高优先级的、用户指定的用户进程分配镜像区域,从而能够实现对用户进程的内存区域分配的多样化、灵活化的处理,进而能够满足用户进程数据处理的需要。
158.基于前述实施例,本发明实施例提供的内存区域分配方法,还可以执行以下操作:
159.若进程为内核进程,从镜像区域为内核进程分配内存区域;若镜像区域中可用内存不足,从非镜像区域为内核进程分配内存区域。
160.示例性地,若进程不为内核进程,则可以通过前述实施例提供的内存区域分配方法,为用户进程分配内存区域;示例性地,若镜像区域中可用内存空间充足,则从镜像区域中为内核进程分配内存区域。
161.示例性地,若进程为内核进程且镜像区域中可用内存区域充足,则可以控制第二标识指向内存区域链表中与第二标识当前指向的结点距离相近的镜像区域的结点,比如第一结点集合中的结点或第三结点集合中的结点,并从该结点对应的镜像区域为内核进程分配内存区域。
162.示例性地,若镜像区域中可用内存区域不足,比如第一结点集合指向的第一镜像区域的可用内存区域不足,则可以控制第二标识指向第二结点集合中的结点,从而从第一非镜像区域中分配内存区域至内核进程。
163.由以上可知,本发明实施例提供的内存区域分配方法中,若进程为内核进程,则直接从镜像区域为内核进程分配内存区域,从而提高了为内核进程分配内存区域的效率;并且,若镜像区域中可用内存不足,则从非镜像区域为内核进程分配内存区域,从而减少了内核区域oom的次数,提高了内核进程运行的稳定性,也实现了对非镜像区域中内存区域的灵活分配。
164.图4为本发明实施例提供的分配内存区域的结构示意图,如图4所示,内核进程401在申请分配内存区域时,可以基于第二标识指向的第一结点集合或第三结点集合中的结点,为内核进程401分配镜像区域402,也可以通过前述实施例提供的方法,控制第二标识指向第一结点集合或第三结点集合中的结点,从而为内核进程401分配镜像区域402;示例性地,还可以在镜像区域402中可用内存区域不足时,控制第二标识指向第二结点集合中的结点或第四结点集合中的结点所指向的非镜像区域403,从而为内核进程401分配非镜像区域403;示例性地,非镜像区域403可以包括前述实施例中的第一非镜像区域以及第二非镜像区域。
165.示例性地,用户进程404申请分配内存区域时,可以从非镜像区域403中直接分配内存区域;示例性地,在非镜像区域403中可用内存区域不足时,可以通过madvise接口405中的mad_mirror,向镜像区域402申请内存区域;还可以通过前述实施例提供的内存区域分配方法,借助于修改后zonelist的结构以及针对zonelist中结点的寻址逻辑,结合控制跳过文件开关406,确定是否从镜像区域中分配内存区域至用户进程404。
166.由以上可知,本发明实施例提供的内存区域分配方法,不仅能够保障内核进程的内存区域分配,而且能够对用户进程提供可控的、多样化的内存区域分配方式,实现了对用户进程关于镜像区域内存的可控的、灵活的分配;并且,通过对控制跳过文件开关的灵活调整,还能实现对镜像区域以及非镜像区域分配的动态调整,从而不仅能够提高镜像区域的利用率,还能提升电子设备系统运行的稳定性。
167.基于前述实施例,本发明实施例提供的内存区域分配方法,还可以包括以下步骤:
168.关联用户进程标识以及使能标识,基于关联后的用户进程标识以及使能标识,确定配置信息。
169.其中,使能标识包括允许分配镜像区域中的内存区域至用户进程的标识。
170.在一种实施方式中,用户进程标识可以包括用户进程的名称、优先级、以及用户进程关联的用户应用的名称。
171.在一种实施方式中,使能标识可以包括允许分配镜像区域中的内存区域至用户进程的时段标识、以及允许分配镜像区域中的内存区域至用户进程的最大数量标识中的至少一个。
172.在一种实施方式中,同一用户进程在不同条件下的使能标识可以不同,比如在第一时段内允许从镜像区域中分配内存区域至用户进程,而在第二时段内则不允许从镜像区域中分配内存区域至用户进程。
173.在一种实施方式中,可以将多个关联后的用户进程标识以及使能标识进行汇总,并将汇总结果确定为配置信息。
174.由以上可知,本发明实施例提供的内存区域分配方法中,关联用户进程标识以及使能标识,能够实现对不同用户进程的不同使能标识的设置,从而实现对多个用户进程的多样化使能标识设置;并且,基于关联后的用户进程标识以及使能标识,确定配置信息,能够实现对是否允许多个用户进程从镜像区域中分配内存区域的集中控制,从而提高为用户进程分配内存区域的效率。
175.基于前述实施例,本发明实施例还提供了一种内存区域分配装置5,图5为本发明实施例提供的内存区域分配装置5的结构示意图,如图5所示,该装置5可以包括获取模块501以及分配模块502;其中:
176.获取模块501,用于若检测到进程发送的内存分配请求,且内存分配请求中的第一标识不为镜像标识,获取第二标识;其中,第一标识包括进程关联的内存区域的标识;第二标识包括内存区域链表中区域指针所指向的可用内存区域的地址标识;镜像标识包括内存空间中镜像区域的标识;
177.获取模块501,还用于若第二标识为镜像标识,获取配置信息;其中,配置信息包括是否允许从镜像区域中分配内存区域至进程的信息;
178.分配模块502,用于基于配置信息,确定是否从镜像区域中分配内存区域至进程。
179.在一些实施例中,内存区域链表至少包括依次相邻设置的第一结点集合、第二结点集合以及第三结点集合;第一结点集合包括包含第一镜像区域的地址标识的结点集合;第二结点集合包括包含第一非镜像区域的地址标识的结点集合。
180.在一些实施例中,获取模块501,用于若第二标识指向第二结点集合尾结点的下一结点,获取配置信息。
181.在一些实施例中,内存区域链表还包括第一空结点;第三结点集合的尾结点关联至第一空结点;
182.上述装置还包括控制模块,用于用于若第二标识指向第三结点集合,控制第三标识指向第三结点集合的尾结点的下一结点;
183.获取模块501,若第三标识执行第一空结点,获取配置信息。
184.在一些实施例中,控制模块,用于若第二标识指向第一结点集合中的任一结点,控制第二标识指向第一结点集合的尾结点的下一结点。
185.在一些实施例中,区域链表集合还包括第二空结点;第二结点集合的尾结点关联至第二空结点;第二空结点关联至第三结点集合的首结点;
186.控制模块,用于若第二标识指向第二结点集合,控制第四标识指向第二结点集合的尾结点的下一结点;
187.分配模块502,用于若第四标识指向第二空结点,基于第二标识,从第二结点集合对应的第一非镜像区域中为进程分配内存区域。
188.在一些实施例中,内存区域链表还包括第四结点集合;第四结点集合的尾结点关联至第一结点集合的首结点;第四结点集合包括第二非镜像区域的地址标识的结点集合;
189.分配模块502,用于若第二标识不为镜像标识,基于第二标识从第一非镜像区域或第二非镜像区域中为进程分配内存区域。
190.在一些实施例中,第一镜像区域以及第二镜像区域中分别包括至少两个内存区域;
191.获取模块501,用于对内存空间中内存节点包含的镜像区域进行统计,得到第一镜像区域以及第二镜像区域。
192.在一些实施例中,内存区域分配装置5还包括处理模块,用于关联用户进程标识以及使能标识;基于关联后的用户进程标识以及使能标识,确定配置信息;其中,使能标识包括允许分配镜像区域中的内存区域至用户进程的标识。
193.在一些实施例中,获取模块501,用于若进程为用户进程,获取配置信息。
194.在一些实施例中,分配模块502,用于若进程为内核进程,从镜像区域为内核进程分配内存区域;若镜像区域中可用内存区域不足,从非镜像区域为内核进程分配内存区域。
195.基于前述实施例,本发明实施例还提供了一种电子设备6,图6为本发明实施例提供的电子设备6的结构示意图,如图6所示,该电子设备包括处理器601以及存储器602,其中,存储器602中存储有计算机程序,该计算机程序被处理器601执行时,能够实现如前任一所述的内存区域分配方法。
196.上述处理器可以为asic、dsp、dspd、pld、fpga、cpu、控制器、微控制器、微处理器中的至少一种。
197.上述存储器,可以是易失性存储器(volatile memory),例如随机存取存储器(random access memory,ram);或者非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom),flash memory,硬盘驱动器(hard disk drive,hdd)或固态硬盘(solid state disk,ssd);或者上述种类的存储器的组合,并向处理器提供指令和数据。
198.需要说明的是,前述实施例中的获取模块、分配模块、控制模块以及处理模块,可以通过电子设备的处理器实现。
199.基于前述实施例,本发明实施例还提供了一种计算机可读存储介质,该存储介质中存储有计算机程序,该计算机程序被电子设备的处理器执行时,能够实现如前任一所述的内存区域分配方法。
200.上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
201.本发明所提供的各方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
202.本发明所提供的各产品实施例中所揭露的特征,在不冲突的情况下可以任意组
合,得到新的产品实施例。
203.本发明所提供的各方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
204.需要说明的是,上述计算机可读存储介质可以是只读存储器(read only memory,rom)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read-only memory,eprom)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性随机存取存储器(ferromagnetic random access memory,fram)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(compact disc read-only memory,cd-rom)等存储器;也可以是包括上述存储器之一或任意组合的各种电子设备,如移动电话、计算机、平板设备、个人数字助理等。
205.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
206.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
207.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件结点的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所描述的方法。
208.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
209.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
210.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
211.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技
术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1