CN111679921B - Memory sharing method, memory sharing device and terminal equipment - Google Patents
Memory sharing method, memory sharing device and terminal equipment Download PDFInfo
- Publication number
- CN111679921B CN111679921B CN202010518867.1A CN202010518867A CN111679921B CN 111679921 B CN111679921 B CN 111679921B CN 202010518867 A CN202010518867 A CN 202010518867A CN 111679921 B CN111679921 B CN 111679921B
- Authority
- CN
- China
- Prior art keywords
- memory
- virtual machine
- shared memory
- physical
- host
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (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
The memory sharing method provided by the application comprises the following steps: sending size information of a first shared memory to a virtual machine through a host, wherein the first shared memory is located in the host, and the host and the virtual machine are located in the same terminal equipment; distributing a first physical memory with the same size as the first shared memory in a virtual machine according to the size information of the first shared memory; establishing a first mapping relation between the first physical memory and the first shared memory; establishing a second mapping relation between a first virtual memory of a first target process in the virtual machine and the first physical memory; and accessing the first shared memory through the first target process according to the first mapping relation and the second mapping relation. By the method, the processing efficiency of the memory shared from the host machine to the virtual machine can be improved.
Description
Technical Field
The present application belongs to the technical field of memory sharing, and in particular, relates to a memory sharing method, a memory sharing device, a terminal device, and a computer readable storage medium.
Background
At present, a memory sharing manner between a virtual machine and a host machine often needs to allocate memory in the virtual machine, and then the memory sharing is performed on the host machine through the allocated memory. In some scenarios, data needs to be shared from the host machine to the virtual machine, at this time, memory is often allocated to the virtual machine first, the allocated memory is shared to the host machine, and then the host machine copies the data needing to be shared into the memory shared by the virtual machine, so that the virtual machine can access the corresponding shared data. Therefore, the memory sharing from the host machine to the virtual machine is complicated, and the processing efficiency is low.
Disclosure of Invention
The embodiment of the application provides a memory sharing method, a memory sharing device, terminal equipment and a computer readable storage medium, which can improve the processing efficiency of sharing memory from a host machine to a virtual machine.
In a first aspect, an embodiment of the present application provides a memory sharing method, including:
transmitting size information of a first shared memory to a virtual machine through a host, wherein the first shared memory is positioned in the host, and the host and the virtual machine are positioned in the same terminal equipment;
distributing a first physical memory with the same size as the first shared memory in a virtual machine according to the size information of the first shared memory;
Establishing a first mapping relation between the first physical memory and the first shared memory;
establishing a second mapping relation between a first virtual memory of a first target process in the virtual machine and the first physical memory;
and accessing the first shared memory through the first target process according to the first mapping relation and the second mapping relation.
In a second aspect, an embodiment of the present application provides a memory sharing device, including:
the system comprises a sending module, a receiving module and a receiving module, wherein the sending module is used for sending the size information of a first shared memory to a virtual machine through a host, the first shared memory is positioned in the host, and the host and the virtual machine are positioned in the same terminal equipment;
the allocation module is used for allocating a first physical memory with the same size as the first shared memory in the virtual machine according to the size information of the first shared memory;
the first mapping module is used for establishing a first mapping relation between the first physical memory and the first shared memory;
the second mapping module is used for establishing a second mapping relation between a first virtual memory of a first target process in the virtual machine and the first physical memory;
And the access module is used for accessing the first shared memory through the first target process according to the first mapping relation and the second mapping relation.
In a third aspect, an embodiment of the present application provides a terminal device, including a memory, a processor, a display, and a computer program stored in the memory and capable of running on the processor, where the processor executes the computer program to implement a memory sharing method as described in the first aspect.
In a fourth aspect, embodiments of the present application provide a computer readable storage medium storing a computer program, where the computer program is executed by a processor to implement the memory sharing method according to the first aspect.
In a fifth aspect, an embodiment of the present application provides a computer program product, which when executed on a terminal device, causes the terminal device to perform the memory sharing method in the first aspect.
Compared with the prior art, the embodiment of the application has the beneficial effects that: in the embodiment of the present application, size information of a first shared memory is sent to a virtual machine through a host, so that a first physical memory with the same size as the first shared memory is allocated in the virtual machine according to the size information of the first shared memory, and a first mapping relationship between the first physical memory and the first shared memory is established; therefore, the physical memory can be dynamically allocated in the virtual machine according to the condition of the memory to be shared in the host machine, and the mapping relation of the physical memory between the virtual machine and the host machine can be dynamically adjusted; further, a second mapping relation between a first virtual memory of a first target process in the virtual machine and the first physical memory is established, and the first shared memory is accessed through the first target process according to the first mapping relation and the second mapping relation, so that memory sharing of an application of a host machine to the virtual machine is realized, data to be shared in the host machine is not required to be copied to the virtual machine, processing time is shortened, performance loss of the virtual machine is reduced, and processing efficiency of sharing the memory from the host machine to the virtual machine is improved.
Drawings
In order to more clearly illustrate the technical solutions of the embodiments of the present application, the following description will briefly introduce the drawings that are needed in the embodiments or the description of the prior art, it is obvious that the drawings in the following description are only some embodiments of the present application, and that other drawings may be obtained according to these drawings without inventive effort for a person skilled in the art.
FIG. 1 is a flow chart of a memory sharing method according to an embodiment of the present disclosure;
FIG. 2 is a flowchart of step S104 according to an embodiment of the present application;
FIG. 3 is a schematic flow chart of step S103 according to an embodiment of the present application;
FIG. 4 is a schematic diagram illustrating information interaction between the virtual machine and the host according to an embodiment of the present disclosure;
FIG. 5 is a schematic diagram of a memory sharing device according to an embodiment of the present disclosure;
fig. 6 is a schematic structural diagram of a terminal device according to an embodiment of the present application.
Detailed Description
In the following description, for purposes of explanation and not limitation, specific details are set forth, such as particular system configurations, techniques, etc. in order to provide a thorough understanding of the embodiments of the present application. It will be apparent, however, to one skilled in the art that the present application may be practiced in other embodiments that depart from these specific details. In other instances, detailed descriptions of well-known systems, devices, circuits, and methods are omitted so as not to obscure the description of the present application with unnecessary detail.
It should be understood that the terms "comprises" and/or "comprising," when used in this specification and the appended claims, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
It should also be understood that the term "and/or" as used in this specification and the appended claims refers to any and all possible combinations of one or more of the associated listed items, and includes such combinations.
As used in this specification and the appended claims, the term "if" may be interpreted as "when..once" or "in response to a determination" or "in response to detection" depending on the context. Similarly, the phrase "if a determination" or "if a [ described condition or event ] is detected" may be interpreted in the context of meaning "upon determination" or "in response to determination" or "upon detection of a [ described condition or event ]" or "in response to detection of a [ described condition or event ]".
Reference in the specification to "one embodiment" or "some embodiments" or the like means that a particular feature, structure, or characteristic described in connection with the embodiment is included in one or more embodiments of the application. Thus, appearances of the phrases "in one embodiment," "in some embodiments," "in other embodiments," and the like in the specification are not necessarily all referring to the same embodiment, but mean "one or more but not all embodiments" unless expressly specified otherwise. The terms "comprising," "including," "having," and variations thereof mean "including but not limited to," unless expressly specified otherwise.
The memory sharing method provided by the embodiment of the application can be applied to terminal devices such as a server, a desktop computer, a mobile phone, a tablet computer, a wearable device, a vehicle-mounted device, an augmented reality (augmented reality, AR)/Virtual Reality (VR) device, a notebook computer, an ultra-mobile personal computer (UMPC), a netbook, a personal digital assistant (personal digital assistant, PDA) and the like, and the specific type of the terminal device is not limited in any way.
Specifically, fig. 1 shows a flowchart of a memory sharing method provided in an embodiment of the present application, where the memory sharing method may be applied to a terminal device.
The memory sharing method may include:
step S101, sending size information of a first shared memory to a virtual machine through a host, wherein the first shared memory is located in the host, and the host and the virtual machine are located in the same terminal device.
In this embodiment of the present application, the virtual machine is a complete computer system that is simulated by software and has a complete hardware system function, and operates in a completely isolated environment. Thus, the virtual machine is a software system in a terminal device of a certain entity. The terminal device further comprises a host operating system, and at this time, the host operating system is a host relative to the virtual machine. The specific software configuration, information transmission manner, etc. of the virtual machine obtained by different virtual machine software may be different. In the embodiment of the present application, specific systems, software structures, information processing manners and the like of the virtual machine and the host machine are not limited herein.
In this embodiment of the present invention, the host may perform information transmission through a preset back-end driver and a preset front-end driver in the virtual machine, so that size information of the first shared memory may be sent to the preset front-end driver of the virtual machine through the preset back-end driver.
It should be noted that in the embodiment of the present application, there may be one or more virtual machines. That is, in an application scenario, the memory sharing method may be applied to a terminal device having a plurality of virtual machines, where the plurality of virtual machines may simultaneously access the same shared memory in the host according to the memory sharing method.
Step S102, according to the size information of the first shared memory, a first physical memory with the same size as the first shared memory is allocated in the virtual machine.
In this embodiment of the present application, the virtual machine may include a virtual machine virtual memory and a virtual machine physical memory. However, since the virtual machine itself is built by virtualization technology, the first physical memory in the virtual machine is not a physical memory in a practical sense, but a physical memory formed in an operating system of the virtual machine, which is also referred to as a guest physical address (Guest Physical Address, GPA). In some embodiments, the physical memory space of the virtual machine may be divided into a plurality of physical pages of a fixed size, and thus, the first physical memory may be represented as physical pages of one or more virtual machines.
In some embodiments, the virtual machine may include a user state and a kernel state, where specifically, in a kernel thread corresponding to the kernel state, an operation of allocating a first physical memory having a size identical to that of the first shared memory may be performed, so that a program in the user state cannot randomly operate a physical address space of the kernel, and has a certain security protection effect.
Step S103, a first mapping relationship between the first physical memory and the first shared memory is established.
In the embodiment of the present application, the first mapping relationship may be stored in a specific file, such as a text, a table, or the like. For example, in some embodiments, the first mapping relationship may be stored in a preset mapping table. The preset mapping table may be stored in the host machine and/or the virtual machine, and may be stored in a page table. Wherein, the preset mapping table may store a mapping relationship between the physical address (Guest Physical Address, GPA) of the virtual machine and the physical address (Host Physical Address, HPA) of the host machine. Specifically, in some embodiments, the mapping relationship between the physical pages of the virtual machine and the physical pages of the host may be stored in the preset mapping table. For example, for any physical page in the virtual machine, one or more of the page number of the physical page of the virtual machine, the address information of the physical page mapped to the host, the valid bit, and the like may be stored in the preset mapping table.
In some examples, in both the construction of the virtual machine and the subsequent use process, the preset mapping table may be constructed and maintained in the virtual machine to map the physical address of the virtual machine to the physical address of the host machine, so as to implement the function of the virtual machine. Therefore, in some cases, in the preset mapping table, a mapping relationship between the first physical memory and other memories in the host except the first shared memory may be stored in advance, so in this embodiment of the present application, after the mapping relationship between the first physical memory and other memories is cleared in the preset mapping table, a first mapping relationship between the first physical memory and the first shared memory may be constructed. The specific manner of establishing the first mapping relationship may be specifically determined according to the pre-mapping condition of the preset mapping table with respect to the first physical memory.
In this embodiment of the present invention, by maintaining the preset mapping table, a mapping relationship between a first physical memory of the virtual machine and a first shared memory to be shared may be established, so that kernel states of the virtual machine may access the first shared memory through the preset mapping table and the first physical memory, thereby obtaining data information shared by the host machine to the virtual machine.
The specific manner in which the first mapping relationship is established varies from processor architecture to processor architecture, and is not limited herein. For example, for an Intel x86 central processor instruction set architecture, the first mapping relationship may be established by expanding page tables (Extended Page Table, EPT), while for an AMD x86 central processor instruction set architecture, the first mapping relationship may be established by nested page tables (NPT, nested Page Table).
Step S104, a second mapping relation between the first virtual memory of the first target process in the virtual machine and the first physical memory is established.
In this embodiment of the present application, in order to enable a first target process in the virtual machine to access the first shared memory, a second mapping relationship between a first virtual memory of the first target process and the first physical memory may be established in the first target process. In some embodiments, the first target process may be a normal process running in a user state of the virtual machine, and at this time, for reasons of security, the first target process cannot directly use a physical memory of the virtual machine, so the second mapping relationship may be established, so as to accurately convert to a first physical memory corresponding to the first shared memory according to the second mapping relationship, and then map to the first shared memory in the host according to the first physical memory.
In this embodiment of the present application, the specific establishing manner of the second mapping relationship may be multiple. In some examples, the first target process may be a normal process in a user state of the virtual machine, and at this time, a file mmap mapping operation may be performed through a user state interface derived by a front end driver of the virtual machine, so as to establish a second mapping relationship between a first virtual memory of the first target process and the first physical memory through the mmap mapping operation. The mmap mapping operation is a method for mapping a file into a memory, and is used for mapping a file or other objects into the memory. Of course, in some application scenarios, the first target process may run in both the user state and the kernel state.
In some embodiments, the establishing a second mapping relationship between the first virtual memory of the first target process in the virtual machine and the first physical memory includes:
step S201, sending, by the host, second notification information to the first target process, where the second notification information is used to indicate that the establishment of the first mapping relationship is completed;
step S202, after receiving the second notification information, establishing a second mapping relationship between the first virtual memory of the first target process in the virtual machine and the first physical memory.
In this embodiment of the present invention, after the first mapping relationship is established, the host may notify that a shared memory mapping between the first target process virtual machine and the host has been established, that is, the first mapping relationship has been established, and on this basis, a mapping between a specific virtual address (i.e., a first virtual memory) in the virtual machine and a specific physical address (i.e., a first physical memory) of the virtual machine may be further established, so that the first target process may accurately convert to a first physical memory corresponding to the first shared memory according to the second mapping relationship, and then map to the first shared memory in the host according to the first physical memory.
In this embodiment of the present invention, the host may send the second notification information to the virtual machine through a preset interface (such as a back end driver, etc.), and may also send the second notification information to the first target process through a specific application of the host through a preset network connection between the virtual machine and the host.
Step S105, accessing the first shared memory through the first target process according to the first mapping relationship and the second mapping relationship.
In this embodiment of the present invention, the first target process may accurately convert to a first physical memory corresponding to the first shared memory according to the second mapping relationship, and then map the first physical memory to the first shared memory in the host according to the first mapping relationship, so as to access shared data in the first shared memory in the host.
At present, the conventional manner of the host machine sharing the memory to the virtual machine is to allocate the memory to the virtual machine first, and share the allocated memory to the host machine, and then the host machine copies the data to be shared to the memory shared by the virtual machine, so that the virtual machine can access the corresponding shared data. In some scenarios, especially in the case of large data volume of shared data, operations such as copying data may have a significant negative effect on performance of the virtual machine and the host, resulting in serious performance loss and long copying time.
In the embodiment of the application, the memory sharing of the host machine to the application in the virtual machine can be realized under the condition of no need of data copying by establishing the first mapping relation and the second mapping relation, and the processing efficiency of sharing the memory from the host machine to the virtual machine is improved; in addition, in some cases, the memory sharing method in the embodiments of the present application may be dynamically established according to actual application requirements, so that a mechanism for implementing memory sharing is flexible, and no memory needs to be reserved.
In some embodiments, the allocating, in the virtual machine, the first physical memory having the same size as the first shared memory according to the size information of the first shared memory includes:
distributing a first physical page in a virtual machine according to the size information of the first shared memory, wherein the first physical page comprises one or more virtual machine physical pages, the virtual machine physical pages are obtained by dividing the virtual machine physical memory in advance, and the size of the first physical page is the same as the size of the first shared memory;
the establishing a first mapping relationship between the first physical memory and the first shared memory includes:
and establishing a first mapping relation between the first physical page and a second physical page, wherein the second physical page is a host physical page corresponding to the first shared memory in the host.
In this embodiment of the present invention, the physical memory space of the virtual machine may be divided into a plurality of virtual machine physical pages, so the first physical memory may be represented as one virtual machine physical page or a set of a plurality of virtual machine physical pages, that is, the first physical page is allocated; correspondingly, the physical memory space of the host can be divided into a plurality of host physical pages. At this time, in the preset mapping table, a first mapping relationship between the first physical page and the second physical page may be recorded. Generally, the size of each virtual machine physical page is a fixed size, and thus, the first physical page may be allocated by page alignment. In some examples, the first physical page and the second physical page may be uniquely identified and indexed by corresponding page numbers, respectively.
In some embodiments, the establishing a first mapping relationship between the first physical memory and the first shared memory includes:
step S301, searching a target data structure in a preset mapping table, wherein the target data structure is used for storing mapping information of the first physical memory;
step S302, if the target data structure stores the first address information of the second physical memory mapped with the first physical memory, the first address information in the target data structure is cleared, wherein the second physical memory is different from the first shared memory;
step S303, filling the second address information of the first shared memory into the target data structure, so as to establish a first mapping relationship between the first physical memory and the first shared memory in the target data structure.
In this embodiment of the present application, the preset mapping table may be stored in a specific data structure. The preset mapping table may be a page table, for example.
In some examples, in both the construction of the virtual machine and the subsequent use process, the preset mapping table may be constructed and maintained in the virtual machine to map the physical address of the virtual machine to the physical address of the host machine, so as to implement the function of the virtual machine. Therefore, in some cases, the mapping information about the first physical memory may be stored in the preset mapping table in advance. Therefore, the target data structure may be searched in the preset mapping table according to the address information and the index number of the first physical memory and/or the identification information of the first physical memory, such as the page number of the physical page corresponding to the first physical memory. If the target data structure stores the first address information of the second physical memory mapped with the first physical memory, the first address information in the target data structure is cleared, and the second address information of the first shared memory is filled into the target data structure, so that the preset mapping table is updated according to the second address information of the first shared memory.
In some embodiments, after accessing the first shared memory through the first target process according to the first mapping relationship and the second mapping relationship, the method further includes:
after the access is finished, in a first target process of the virtual machine, releasing the second mapping relation;
after the second mapping relation is released, sending first notification information to the host machine through the virtual machine;
after the host receives the first notification information, the second address information is cleared from the target data structure of the preset mapping table.
In this embodiment of the present application, after the access is finished, the second mapping relationship may be released, and the second address information in the target data structure may be cleared, so as to release the memory sharing of the host machine to the virtual machine. The method for releasing the second mapping relationship is exemplified by initiating unmap operation through the user interface of the virtual machine, where the unmap operation is an operation for releasing memory mapping provided in a Linux system or the like. The first target process may send the first notification information to the host through a preset network connection between the virtual machine and the host. After the host receives the first notification information, the host can update the preset mapping table again through the back-end driver of the host, that is, the second address information in the target data structure is cleared, so that memory sharing is relieved.
In some embodiments, after clearing the second address information in the target data structure of the preset mapping table, the method further includes:
if a preset instruction is detected, judging whether the size of a second shared memory is larger than that of the first shared memory, wherein the preset instruction is used for indicating the host to share the second shared memory to the virtual machine, and the second shared memory is positioned in the host;
if the size of the second shared memory is not larger than that of the first shared memory, filling third address information of the second shared memory into the target data structure so as to establish a third mapping relation between the first physical memory and the second shared memory in the target data structure;
in a second target process of the virtual machine, a fourth mapping relation between a second virtual memory of the second target process and the first physical memory is established;
and accessing the second shared memory through the second target process according to the third mapping relation and the fourth mapping relation.
In this embodiment of the present invention, after the host machine is released from sharing the first shared memory with respect to the virtual machine, if it is detected that the host machine re-shares memory data with the virtual machine, that is, shares the second shared memory with the virtual machine, a manner of re-establishing the sharing may be determined according to a relative size between the second shared memory and the first shared memory.
If the size of the second shared memory is not greater than that of the first shared memory, the target data structure still stores the target data structure related to the mapping information of the first physical memory, and the second address information in the target data structure is cleared, so that at this time, the third address information of the second shared memory is filled into the target data structure, and the third mapping relationship between the first physical memory and the second shared memory is established in the preset mapping table, without sending the size information of the second shared memory to the virtual machine, and without reallocating the physical memory in the virtual machine for reestablishing sharing, thereby simplifying the sharing establishment process, shortening the processing time, and reducing the waste of the physical memory in the virtual machine.
In some embodiments, if the size of the second shared memory is larger than the first shared memory, the size of the second shared memory is also larger than the first physical memory. At this time, it may be considered that the first physical memory allocated in the virtual machine cannot meet the requirement of the second shared memory, and the memory sharing cannot be re-established through the target data structure. Therefore, according to the above-mentioned embodiment of the memory sharing method, the step of sending, by the host, the size information of the second shared memory to the virtual machine and the subsequent steps may be performed, so as to reallocate the physical memory in the virtual machine to establish a new memory sharing.
A specific implementation of the embodiments of the present application is described below with a specific example. Fig. 4 is a schematic information interaction diagram of the virtual machine and the host machine in the embodiment of the present application.
The host machine can send the size information of the first shared memory to a front end driver in the virtual machine through a back end driver. The front-end driver sends the size information of the first shared memory to the kernel thread of the virtual machine, so that the kernel thread of the virtual machine distributes and obtains a first physical page with the same size as the first shared memory according to the size information of the first shared memory, wherein the first physical page is aligned by pages, and the first physical page comprises one or more virtual machine physical pages.
Further, the kernel thread sends a GPA array including address information of the first physical page to a back end driver of the host through a front end driver, so as to instruct the host to clear first address information corresponding to an original mapping of the first physical page, which is stored in advance in a target data structure of the preset mapping table, and fill second address information of the host physical page corresponding to the shared memory, thereby establishing a first mapping relationship between the first physical memory and the first shared memory in the preset mapping table.
Further, the third target process in the host informs the first target process in the virtual machine that the first mapping relationship is established through a preset network connection, so that the first target process executes mmap mapping operation through a user state interface to establish a second mapping relationship between a first virtual memory of the first target process in the virtual machine and the first physical memory. After the mmap mapping operation is completed, the first shared memory can be accessed through the first target process.
It should be noted that the above-mentioned example is only an exemplary illustration of the present embodiment, and is not a limitation of the present embodiment.
In the embodiment of the present application, size information of a first shared memory is sent to a virtual machine through a host, so that a first physical memory with the same size as the first shared memory is allocated in the virtual machine according to the size information of the first shared memory, and a first mapping relationship between the first physical memory and the first shared memory is established; therefore, the physical memory can be dynamically allocated in the virtual machine according to the condition of the memory to be shared in the host machine, and the mapping relation of the physical memory between the virtual machine and the host machine can be dynamically adjusted; further, a second mapping relation between a first virtual memory of a first target process in the virtual machine and the first physical memory is established, and the first shared memory is accessed through the first target process according to the first mapping relation and the second mapping relation, so that memory sharing of an application of a host machine to the virtual machine is realized, data to be shared in the host machine is not required to be copied to the virtual machine, processing time is shortened, performance loss of the virtual machine is reduced, and processing efficiency of sharing the memory from the host machine to the virtual machine is improved.
It should be understood that the sequence number of each step in the foregoing embodiment does not mean that the execution sequence of each process should be determined by the function and the internal logic of each process, and should not limit the implementation process of the embodiment of the present application in any way.
Corresponding to the memory sharing method described in the above embodiments, fig. 5 shows a block diagram of a memory sharing device provided in the embodiment of the present application, and for convenience of explanation, only the portions relevant to the embodiment of the present application are shown.
Referring to fig. 5, the memory sharing device 5 includes:
a sending module 501, configured to send, to a virtual machine through a host, size information of a first shared memory, where the first shared memory is located in the host, and the host and the virtual machine are located in the same terminal device;
the allocation module 502 is configured to allocate, in the virtual machine, a first physical memory having a size identical to the size of the first shared memory according to the size information of the first shared memory;
a first mapping module 503, configured to establish a first mapping relationship between the first physical memory and the first shared memory;
a second mapping module 504, configured to establish a second mapping relationship between a first virtual memory of a first target process in the virtual machine and the first physical memory;
And the accessing module 505 is configured to access the first shared memory through the first target process according to the first mapping relationship and the second mapping relationship.
Optionally, the allocation module 502 is specifically configured to:
distributing a first physical page in a virtual machine according to the size information of the first shared memory, wherein the first physical page comprises one or more virtual machine physical pages, the virtual machine physical pages are obtained by dividing the virtual machine physical memory in advance, and the size of the first physical page is the same as the size of the first shared memory;
the first mapping module 503 is specifically configured to:
and establishing a first mapping relation between the first physical page and a second physical page, wherein the second physical page is a host physical page corresponding to the first shared memory in the host.
Optionally, the first mapping module 503 includes:
the searching unit is used for searching a target data structure in a preset mapping table, wherein the target data structure stores first address information of a second physical memory mapped with the first physical memory;
a clearing unit, configured to clear the first address information in the target data structure;
And the filling unit is used for filling the second address information of the first shared memory into the target data structure so as to establish a first mapping relation between the first physical memory and the first shared memory in the target data structure.
Optionally, the memory sharing device 5 further includes:
the releasing module is used for releasing the second mapping relation in the first target process of the virtual machine after the access is finished;
the second sending module is used for sending the first notification information to the host machine through the virtual machine after the second mapping relation is released;
and the clearing module is used for clearing the second address information in the target data structure of the preset mapping table after the first notification information is received by the host.
Optionally, the memory sharing device 5 further includes:
the judging module is used for judging whether the size of the second shared memory is larger than that of the first shared memory or not if a preset instruction is detected, wherein the preset instruction is used for instructing the host to share the second shared memory to the virtual machine, and the second shared memory is located in the host;
The processing module is configured to fill the target data structure with third address information of the second shared memory if the size of the second shared memory is not greater than that of the first shared memory, so as to establish a third mapping relationship between the first physical memory and the second shared memory in the target data structure;
the third mapping module is used for establishing a fourth mapping relation between a second virtual memory of the second target process and the first physical memory in the second target process of the virtual machine;
and the second access module is used for accessing the second shared memory through the second target process according to the third mapping relation and the fourth mapping relation.
Optionally, the second mapping module 504 specifically includes:
a sending unit, configured to send, by the host, second notification information to the first target process, where the second notification information is used to indicate that establishment of the first mapping relationship is completed;
and the mapping unit is used for establishing a second mapping relation between the first virtual memory of the first target process in the virtual machine and the first physical memory after receiving the second notification information.
In the embodiment of the present application, size information of a first shared memory is sent to a virtual machine through a host, so that a first physical memory with the same size as the first shared memory is allocated in the virtual machine according to the size information of the first shared memory, and a first mapping relationship between the first physical memory and the first shared memory is established; therefore, the physical memory can be dynamically allocated in the virtual machine according to the condition of the memory to be shared in the host machine, and the mapping relation of the physical memory between the virtual machine and the host machine can be dynamically adjusted; further, a second mapping relation between a first virtual memory of a first target process in the virtual machine and the first physical memory is established, and the first shared memory is accessed through the first target process according to the first mapping relation and the second mapping relation, so that memory sharing of an application of a host machine to the virtual machine is realized, data to be shared in the host machine is not required to be copied to the virtual machine, processing time is shortened, performance loss of the virtual machine is reduced, and processing efficiency of sharing the memory from the host machine to the virtual machine is improved.
It should be noted that, because the content of information interaction and execution process between the above devices/units is based on the same concept as the method embodiment of the present application, specific functions and technical effects thereof may be referred to in the method embodiment section, and will not be described herein again.
It will be apparent to those skilled in the art that, for convenience and brevity of description, only the above-described division of the functional units and modules is illustrated, and in practical application, the above-described functional distribution may be performed by different functional units and modules according to needs, i.e. the internal structure of the apparatus is divided into different functional units or modules to perform all or part of the above-described functions. The functional units and modules in the embodiment may be integrated in one processing unit, or each unit may exist alone physically, or two or more units may be integrated in one unit, where the integrated units may be implemented in a form of hardware or a form of a software functional unit. In addition, specific names of the functional units and modules are only for convenience of distinguishing from each other, and are not used for limiting the protection scope of the present application. The specific working process of the units and modules in the above system may refer to the corresponding process in the foregoing method embodiment, which is not described herein again.
Fig. 6 is a schematic structural diagram of a terminal device according to an embodiment of the present application. As shown in fig. 6, the terminal device 6 of this embodiment includes: at least one processor 60 (only one is shown in fig. 6), a memory 61, and a computer program 62 stored in the memory 61 and executable on the at least one processor 60, the steps of any of the various memory sharing method embodiments described above being implemented when the processor 60 executes the computer program 62.
The terminal device 6 may be a server, a mobile phone, a wearable device, an Augmented Reality (AR)/Virtual Reality (VR) device, a desktop computer, a notebook computer, a desktop computer, a palm computer, or other computing devices. The terminal device may include, but is not limited to, a processor 60, a memory 61. It will be appreciated by those skilled in the art that fig. 6 is merely an example of the terminal device 6 and is not limiting of the terminal device 6, and may include more or fewer components than shown, or may combine certain components, or different components, such as may also include input devices, output devices, network access devices, etc. The input device may include a keyboard, a touch pad, a fingerprint collection sensor (for collecting fingerprint information of a user and direction information of the fingerprint), a microphone, a camera, and the like, and the output device may include a display, a speaker, and the like.
The processor 60 may be a central processing unit (Central Processing Unit, CPU), and the processor 60 may also be other general purpose processors, digital signal processors (Digital Signal Processor, DSP), application specific integrated circuits (Application Specific Integrated Circuit, ASIC), field-programmable gate arrays (Field-Programmable Gate Array, FPGA) or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, or the like. A general purpose processor may be a microprocessor or the processor may be any conventional processor or the like.
The memory 61 may in some embodiments be an internal storage unit of the terminal device 6, such as a hard disk or a memory of the terminal device 6. The memory 61 may also be an external storage device of the terminal device 6 in other embodiments, for example, a plug-in hard disk, a Smart Media Card (SMC), a Secure Digital (SD) Card, a Flash memory Card (Flash Card) or the like, which are provided on the terminal device 6. Further, the memory 61 may include both the internal storage unit and the external storage device of the terminal device 6. The memory 61 is used for storing an operating system, an application program, a Boot Loader (Boot Loader), data, other programs, and the like, such as program codes of the computer programs. The above-described memory 61 may also be used to temporarily store data that has been output or is to be output.
In addition, although not shown, the terminal device 6 may further include a network connection module, such as a bluetooth module Wi-Fi module, a cellular network module, and so on, which will not be described herein.
In this embodiment, when the processor 60 executes the computer program 62 to implement the steps in any of the embodiments of the memory sharing method, the host sends size information of a first shared memory to the virtual machine, so that according to the size information of the first shared memory, a first physical memory with the same size as the first shared memory is allocated in the virtual machine, and a first mapping relationship between the first physical memory and the first shared memory is established; therefore, the physical memory can be dynamically allocated in the virtual machine according to the condition of the memory to be shared in the host machine, and the mapping relation of the physical memory between the virtual machine and the host machine can be dynamically adjusted; further, a second mapping relation between a first virtual memory of a first target process in the virtual machine and the first physical memory is established, and the first shared memory is accessed through the first target process according to the first mapping relation and the second mapping relation, so that memory sharing of an application of a host machine to the virtual machine is realized, data to be shared in the host machine is not required to be copied to the virtual machine, processing time is shortened, performance loss of the virtual machine is reduced, and processing efficiency of sharing the memory from the host machine to the virtual machine is improved.
The embodiments of the present application also provide a computer readable storage medium storing a computer program, where the computer program is executed by a processor to implement steps in each of the method embodiments described above.
The present embodiments provide a computer program product which, when run on a terminal device, causes the terminal device to perform steps that enable the respective method embodiments described above to be implemented.
The integrated units described above, if implemented in the form of software functional units and sold or used as stand-alone products, may be stored in a computer readable storage medium. Based on such understanding, the present application implements all or part of the flow of the method of the above embodiments, and may be implemented by a computer program to instruct related hardware, where the above computer program may be stored in a computer readable storage medium, where the computer program, when executed by a processor, may implement the steps of each of the method embodiments described above. The computer program comprises computer program code, and the computer program code can be in a source code form, an object code form, an executable file or some intermediate form and the like. The computer readable medium may include at least: any entity or device capable of carrying computer program code to a photographing device/terminal apparatus, recording medium, computer Memory, read-Only Memory (ROM), random access Memory (RAM, random Access Memory), electrical carrier signals, telecommunications signals, and software distribution media. Such as a U-disk, removable hard disk, magnetic or optical disk, etc. In some jurisdictions, computer readable media may not be electrical carrier signals and telecommunications signals in accordance with legislation and patent practice.
In the foregoing embodiments, the descriptions of the embodiments are emphasized, and in part, not described or illustrated in any particular embodiment, reference is made to the related descriptions of other embodiments.
Those of ordinary skill in the art will appreciate that the various illustrative elements and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, or combinations of computer software and electronic hardware. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the solution. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present application.
In the embodiments provided in the present application, it should be understood that the disclosed apparatus/network device and method may be implemented in other manners. For example, the apparatus/network device embodiments described above are merely illustrative, e.g., the division of modules or elements described above is merely a logical functional division, and there may be additional divisions in actual implementation, e.g., multiple elements or components may be combined or integrated into another system, or some features may be omitted, or not performed. Alternatively, the coupling or direct coupling or communication connection shown or discussed may be an indirect coupling or communication connection via interfaces, devices or units, which may be in electrical, mechanical or other forms.
The units described above as separate components may or may not be physically separate, and components shown as units may or may not be physical units, may be located in one place, or may be distributed over a plurality of network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of this embodiment.
The above embodiments are only for illustrating the technical solution of the present application, and not for limiting the same; although the present application has been described in detail with reference to the foregoing embodiments, it should be understood by those of ordinary skill in the art that: the technical scheme described in the foregoing embodiments can be modified or some technical features thereof can be replaced by equivalents; such modifications and substitutions do not depart from the spirit and scope of the technical solutions of the embodiments of the present application, and are intended to be included in the scope of the present application.
Claims (10)
1. A memory sharing method, comprising:
sending size information of a first shared memory to a virtual machine through a host, wherein the first shared memory is located in the host, and the host and the virtual machine are located in the same terminal equipment;
Distributing a first physical memory with the same size as the first shared memory in a virtual machine according to the size information of the first shared memory;
establishing a first mapping relation between the first physical memory and the first shared memory;
establishing a second mapping relation between a first virtual memory of a first target process in the virtual machine and the first physical memory;
and accessing the first shared memory through the first target process according to the first mapping relation and the second mapping relation so as to access the shared data in the first shared memory.
2. The memory sharing method as claimed in claim 1, wherein said allocating a first physical memory of the same size as the first shared memory in the virtual machine according to the size information of the first shared memory comprises:
distributing a first physical page in a virtual machine according to the size information of the first shared memory, wherein the first physical page comprises one or more virtual machine physical pages, the virtual machine physical pages are obtained by dividing the virtual machine physical memory in advance, and the size of the first physical page is the same as the size of the first shared memory;
The establishing a first mapping relationship between the first physical memory and the first shared memory includes:
and establishing a first mapping relation between the first physical page and a second physical page, wherein the second physical page is a host physical page corresponding to the first shared memory in the host.
3. The memory sharing method as claimed in claim 1, wherein said establishing a first mapping relationship between said first physical memory and said first shared memory comprises:
searching a target data structure in a preset mapping table, wherein the target data structure is used for storing mapping information of the first physical memory;
if the target data structure stores first address information of a second physical memory mapped with the first physical memory, clearing the first address information in the target data structure, wherein the second physical memory is different from the first shared memory;
and filling second address information of the first shared memory into the target data structure to establish a first mapping relation between the first physical memory and the first shared memory in the target data structure.
4. The memory sharing method as claimed in claim 3, further comprising, after accessing the first shared memory through the first target process according to the first mapping relationship and the second mapping relationship:
after the access is finished, in a first target process of the virtual machine, releasing the second mapping relation;
after the second mapping relation is released, sending first notification information to the host machine through the virtual machine;
and after the first notification information is received by the host, clearing the second address information in a target data structure of the preset mapping table.
5. The memory sharing method as claimed in claim 4, wherein after clearing the second address information in the target data structure of the preset mapping table, further comprising:
if a preset instruction is detected, judging whether the size of a second shared memory is larger than that of the first shared memory, wherein the preset instruction is used for indicating the host to share the second shared memory to the virtual machine, and the second shared memory is positioned in the host;
if the size of the second shared memory is not larger than that of the first shared memory, third address information of the second shared memory is filled into the target data structure, so that a third mapping relation between the first physical memory and the second shared memory is established in the target data structure;
Establishing a fourth mapping relation between a second virtual memory of a second target process and the first physical memory in a second target process of the virtual machine;
and accessing the second shared memory through the second target process according to the third mapping relation and the fourth mapping relation.
6. The memory sharing method as claimed in any one of claims 1 to 5, wherein said establishing a second mapping relationship between a first virtual memory of a first target process in the virtual machine and the first physical memory includes:
sending, by the host, second notification information to the first target process, where the second notification information is used to indicate that establishment of the first mapping relationship is completed;
after the second notification information is received, a second mapping relation between a first virtual memory of a first target process in the virtual machine and the first physical memory is established.
7. A memory sharing apparatus, comprising:
the system comprises a sending module, a receiving module and a receiving module, wherein the sending module is used for sending the size information of a first shared memory to a virtual machine through a host, the first shared memory is positioned in the host, and the host and the virtual machine are positioned in the same terminal equipment;
The allocation module is used for allocating a first physical memory with the same size as the first shared memory in the virtual machine according to the size information of the first shared memory;
the first mapping module is used for establishing a first mapping relation between the first physical memory and the first shared memory;
the second mapping module is used for establishing a second mapping relation between a first virtual memory of a first target process in the virtual machine and the first physical memory;
and the access module is used for accessing the first shared memory through the first target process according to the first mapping relation and the second mapping relation so as to access the shared data in the first shared memory.
8. The memory sharing device of claim 7, wherein the first mapping module comprises:
the searching unit is used for searching a target data structure in a preset mapping table, wherein the target data structure stores first address information of a second physical memory mapped with the first physical memory;
a clearing unit, configured to clear the first address information in the target data structure;
and the filling unit is used for filling the second address information of the first shared memory into the target data structure so as to establish a first mapping relation between the first physical memory and the first shared memory in the target data structure.
9. A terminal device comprising a memory, a processor and a computer program stored in the memory and executable on the processor, characterized in that the processor implements the memory sharing method according to any of claims 1 to 6 when executing the computer program.
10. A computer readable storage medium storing a computer program, wherein the computer program when executed by a processor implements the memory sharing method according to any one of claims 1 to 6.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010518867.1A CN111679921B (en) | 2020-06-09 | 2020-06-09 | Memory sharing method, memory sharing device and terminal equipment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010518867.1A CN111679921B (en) | 2020-06-09 | 2020-06-09 | Memory sharing method, memory sharing device and terminal equipment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111679921A CN111679921A (en) | 2020-09-18 |
CN111679921B true CN111679921B (en) | 2023-08-01 |
Family
ID=72454180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010518867.1A Active CN111679921B (en) | 2020-06-09 | 2020-06-09 | Memory sharing method, memory sharing device and terminal equipment |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111679921B (en) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112822266A (en) * | 2021-01-05 | 2021-05-18 | 成都安思科技有限公司 | Internal and external communication method for virtual machine based on memory sharing |
CN112860595B (en) * | 2021-03-12 | 2022-10-14 | 湖南国科微电子股份有限公司 | PCI (peripheral component interconnect express) equipment or PCIE (peripheral component interconnect express) equipment, data access method and related assembly |
CN112906075A (en) * | 2021-03-15 | 2021-06-04 | 北京字节跳动网络技术有限公司 | Memory sharing method and device |
CN113204407B (en) * | 2021-04-22 | 2024-01-09 | 新华三大数据技术有限公司 | Memory supermanagement method and device |
CN113885904A (en) * | 2021-09-02 | 2022-01-04 | 奇安信科技集团股份有限公司 | System upgrading method and device, electronic equipment and storage medium |
CN114785807B (en) * | 2022-03-16 | 2024-07-09 | 深信服科技股份有限公司 | Data processing method and device, electronic equipment and storage medium |
CN114625481B (en) * | 2022-03-22 | 2024-04-05 | 北京有竹居网络技术有限公司 | Data processing method and device, readable medium and electronic equipment |
CN114936064B (en) * | 2022-04-08 | 2023-03-31 | 科东(广州)软件科技有限公司 | Access method, device, equipment and storage medium of shared memory |
WO2023230766A1 (en) * | 2022-05-30 | 2023-12-07 | 华为技术有限公司 | Data transmission method and virtualization system |
CN117955654A (en) * | 2022-10-28 | 2024-04-30 | 华为技术有限公司 | Communication method and device and intelligent driving equipment |
CN116126472B (en) * | 2023-01-20 | 2023-06-09 | 北京麟卓信息科技有限公司 | Method for rapidly sharing files in cross-running environment based on dynamic memory virtual disk |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8499114B1 (en) * | 2010-09-30 | 2013-07-30 | Amazon Technologies, Inc. | Virtual machine memory page sharing system |
CN105975407A (en) * | 2016-03-22 | 2016-09-28 | 华为技术有限公司 | Mapping method of memory address, and equipment |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9612973B2 (en) * | 2013-11-09 | 2017-04-04 | Microsoft Technology Licensing, Llc | Using shared virtual memory resources for performing memory-mapping |
US10157146B2 (en) * | 2015-02-12 | 2018-12-18 | Red Hat Israel, Ltd. | Local access DMA with shared memory pool |
CN107943596A (en) * | 2016-10-12 | 2018-04-20 | 阿里巴巴集团控股有限公司 | Way of Process Communication, apparatus and system |
CN108932170A (en) * | 2018-06-06 | 2018-12-04 | 华东师范大学 | A kind of mechanism with shared memory file system efficient between virtual machine |
-
2020
- 2020-06-09 CN CN202010518867.1A patent/CN111679921B/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8499114B1 (en) * | 2010-09-30 | 2013-07-30 | Amazon Technologies, Inc. | Virtual machine memory page sharing system |
CN105975407A (en) * | 2016-03-22 | 2016-09-28 | 华为技术有限公司 | Mapping method of memory address, and equipment |
Also Published As
Publication number | Publication date |
---|---|
CN111679921A (en) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111679921B (en) | Memory sharing method, memory sharing device and terminal equipment | |
EP3211530B1 (en) | Virtual machine memory management method, physical main machine, pcie device and configuration method therefor, and migration management device | |
CN107278292B (en) | Mapping method and device for memory of virtual machine and data transmission equipment | |
CN113287286A (en) | Input/output processing in distributed storage nodes over RDMA | |
CN108038112B (en) | File processing method, mobile terminal and computer readable storage medium | |
CN114625481B (en) | Data processing method and device, readable medium and electronic equipment | |
CN114064302B (en) | Inter-process communication method and device | |
WO2014137970A1 (en) | Methods and systems for reducing the amount of time and computing resources that are required to perform a hardware table walk | |
KR20170013270A (en) | An input/output virtualization (iov) host controller (hc) (iov-hc) of a flash-memory-based storage device | |
CN116774933A (en) | Virtualization processing method of storage device, bridging device, system and medium | |
CN113204407A (en) | Memory over-allocation management method and device | |
JP6674460B2 (en) | System and method for improved latency in a non-uniform memory architecture | |
CN114281484A (en) | Data transmission method, device, equipment and storage medium | |
CN112256460A (en) | Inter-process communication method and device, electronic equipment and computer readable storage medium | |
US8751724B2 (en) | Dynamic memory reconfiguration to delay performance overhead | |
CN114756332A (en) | Data access method, device and system based on virtual machine device direct connection | |
CN116633900A (en) | Logical address allocation method, logical address allocation device, electronic equipment and storage medium | |
CN109857553B (en) | Memory management method and device | |
CN105677491A (en) | Method and device for transmitting data | |
CN115114042A (en) | Storage data access method and device, electronic equipment and storage medium | |
CN117632843A (en) | Data processing method and device, system on chip and electronic equipment | |
EP3227787B1 (en) | Systems and methods for providing improved latency in a non-uniform memory architecture | |
CN108563492B (en) | Data acquisition method, virtual machine and electronic equipment | |
CN111708715B (en) | Memory allocation method, memory allocation device and terminal equipment | |
EP4036725A1 (en) | Systems and methods for data transfer for computational storage devices |
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 |