IO virtualization method and system

By allocating continuous memory to the guest operating system and recording memory address relationships, IO devices can directly access memory in an embedded system, solving the problem of increased power consumption and complexity caused by SMMU, and improving system stability and performance.

CN119166284APending Publication Date: 2024-12-20CHONGQING CHANGAN TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411211381.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-08-30
Publication Date
2024-12-20

AI Technical Summary

Technical Problem

In the existing IO virtualization method, address conversion through hardware SMMU leads to an increase in the overall power consumption and hardware complexity of the embedded system, reducing the security and stability of the system.

Method used

By allocating a continuous memory to the client operating system, recording the linear relationship between the memory physical address and the client physical address, the IO device obtains the address during initialization and writes it to the access address register according to the offset, so that the IO device can directly access the memory , avoid using SMMU.

Benefits of technology

Without using SMMU, the power consumption and hardware complexity of the embedded system are reduced, the stability and performance of the system are improved, and the memory access path of the IO device is shortened.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119166284A_ABST
    Figure CN119166284A_ABST
Patent Text Reader

Abstract

The invention discloses an IO virtualization method and system, and relates to the technical field of computer operating systems. The IO virtualization method comprises the following steps: distributing a section of first continuous memory for a guest operating system from a virtualization system, recording a memory physical address PA, and arranging a guest physical address GPA of the guest operating system and the PA as a linear relationship; when the IO equipment is initialized, a GPA of a client operating system is obtained; and when the client operating system configures the access address register of the IO equipment, obtaining the GPA from the IO equipment, obtaining the corresponding PA according to the offset, and writing the PA into the access address register, so that the IO equipment accesses the memory. According to the method and the device, the IO equipment can directly access the memory under the condition that an SMMU is not used, so that the overall power consumption and the hardware complexity of the embedded system can be reduced, the stability and the safety of the embedded system are further improved, the memory access path of the IO equipment can be shortened, and the system performance is improved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the technical field of computer operating systems, and in particular to an IO virtualization method and system. Background Art

[0002] Currently, IO virtualization can improve server performance and simplify hardware requirements, while at the same time increasing the maximum number of IO-intensive virtual machines on a server.

[0003] In the related art, a microkernel IO virtualization method based on the ARM (Advanced RISC Machines) architecture is disclosed, which combines software IO virtualization and hardware IO virtualization, and performs ARM-based microkernel IO virtualization through software IO virtualization; then, hardware-assisted IO virtualization based on the ARM architecture hardware SMMU (System Memory Management Units) is used to optimize the software IO virtualization, that is, the SMMU is used to perform address conversion for IO devices to directly access the memory.

[0004] However, in the above virtualization method, the hardware peripheral SMMU needs to be assisted in the IO virtualization process, which will not only increase the overall power consumption of the system, but also increase the complexity of the system hardware and reduce the security and stability of the system. Summary of the invention

[0005] The present application provides an IO virtualization method and system, which can solve the technical problem existing in the prior art: the overall power consumption and hardware complexity of the embedded system are increased due to address conversion by hardware SMMU.

[0006] In a first aspect, an embodiment of the present application provides an IO virtualization method, the IO virtualization method comprising:

[0007] Allocate a first continuous memory segment for the client operating system from the virtualization system, and record the memory physical address PA, so that the client physical address GPA of the client operating system and the above PA are in a linear relationship;

[0008] When the IO device is initialized, the GPA of the above client operating system is obtained;

[0009] When the client operating system configures the access address register of the IO device, it obtains the GPA from the IO device, obtains the corresponding PA according to the offset, and writes the PA into the access address register so that the IO device can access the memory.

[0010] In combination with the first aspect, in one implementation manner, before obtaining the corresponding PA according to the offset, the method further includes:

[0011] The client operating system accesses the virtual machine monitor by means of a hyper call, and obtains the offset returned by the virtual machine monitor.

[0012] In combination with the first aspect, in one implementation, a whitelist is provided in the virtual machine monitor, and the whitelist includes client operating systems that are allowed to obtain the offset;

[0013] When the virtual machine monitor receives a hyper call from a guest operating system, it returns an offset only to the guest operating systems in the whitelist.

[0014] In combination with the first aspect, in one implementation, when the guest physical address GPA of the guest operating system is laid out to be in a linear relationship with the above PA, it further includes: saving an offset of the linear relationship.

[0015] In combination with the first aspect, in one implementation, the offset OFFSET is:

[0016] OFFSET=GPA-PA

[0017] Where OFFSET is a constant.

[0018] In conjunction with the first aspect, in one implementation, allocating a first continuous memory segment to a client operating system from a virtualization system includes:

[0019] According to the memory capacity required by the client operating system, an available continuous memory space that meets the memory capacity is selected from the virtualization system, and the first continuous memory is allocated to the client operating system.

[0020] In combination with the first aspect, in one implementation, obtaining the GPA of the client operating system when the IO device is initialized specifically includes:

[0021] The client operating system reserves a second continuous memory;

[0022] When the IO device is initialized, a third continuous memory is requested from the second continuous memory, and the GPA is obtained according to the starting address of the third continuous memory.

[0023] In combination with the first aspect, in one implementation, the starting address of the third continuous memory is a guest virtual address GVA;

[0024] Acquiring the GPA according to the starting address of the third continuous memory specifically includes: converting the GVA into the GPA through a memory management unit MMU.

[0025] In combination with the first aspect, in one implementation, when obtaining the above-mentioned GPA from the IO device, it also includes:

[0026] The length of the third continuous memory is obtained from the IO device and written into the access address register.

[0027] In a second aspect, an embodiment of the present application provides an IO virtualization system for implementing the above IO virtualization method, the system comprising:

[0028] A virtual machine monitor, which is used to allocate a first continuous memory segment for the client operating system from the virtualization system, and record the memory physical address PA, and arrange that the client physical address GPA of the client operating system and the above PA are in a linear relationship;

[0029] An IO module, which is arranged in the IO device and is used to obtain the GPA of the client operating system when the IO device is initialized;

[0030] The client operating system, when used to configure the access address register of the IO device, obtains the GPA from the IO device, obtains the corresponding PA according to the offset, and writes the PA into the access address register so that the IO device can access the memory.

[0031] The beneficial effects brought by the technical solution provided in the embodiments of the present application include:

[0032] By allocating a first continuous memory section for the client operating system from the virtualization system and recording the memory physical address PA, the client physical address GPA of the client operating system is arranged to be in linear relationship with the above PA; the GPA of the above client operating system is obtained when the IO device is initialized; when the above client operating system configures the access address register of the above IO device, the above GPA is obtained from the IO device, and the corresponding PA is obtained according to the offset, and is written into the above access address register for the IO device to access the memory; the IO device can directly access the memory without using the SMMU, which can not only reduce the overall power consumption and hardware complexity of the embedded system, thereby improving the stability and security of the embedded system, but also shorten the memory access path of the IO device and improve the performance of the embedded system. BRIEF DESCRIPTION OF THE DRAWINGS

[0033] Figure 1 This is a flow chart of an embodiment of an IO virtualization method of the present application;

[0034] Figure 2 This is a flow chart of another embodiment of the IO virtualization method of the present application;

[0035] Figure 3 This is a functional module diagram of an embodiment of an IO virtualization system of the present application. DETAILED DESCRIPTION

[0036] In order to enable those skilled in the art to better understand the solution of the present application, the technical solution in the embodiments of the present application will be clearly and completely described below in conjunction with the drawings in the embodiments of the present application. Obviously, the described embodiments are only part of the embodiments of the present application, not all of the embodiments. Based on the embodiments in the present application, all other embodiments obtained by ordinary technicians in this field without creative work are within the scope of protection of this application.

[0037] In order to make the objectives, technical solutions and advantages of the present application clearer, the implementation methods of the present application will be further described in detail below with reference to the accompanying drawings.

[0038] In a first aspect, an embodiment of the present application provides an IO virtualization method.

[0039] In one embodiment, referring to Figure 1 , Figure 1 FIG. 1 is a flow chart of the first embodiment of the IO virtualization method of the present application. Figure 1 As shown, the above IO virtualization method includes:

[0040] S1. Allocate a first continuous memory segment for the client operating system from the virtualization system, and record the memory physical address PA, and the client physical address GPA of the client operating system is linearly related to the above PA;

[0041] S2. Obtain the GPA of the above client operating system when the IO device is initialized;

[0042] S3. When the client operating system configures the access address register of the IO device, it obtains the GPA from the IO device, obtains the corresponding PA according to the offset, and writes it into the access address register so that the IO device can access the memory.

[0043] In this embodiment, a first continuous memory is allocated to the client operating system from the virtualization system, and the memory physical address PA is recorded, so that the client physical address GPA of the client operating system and the above PA are linearly related; the GPA of the above client operating system is obtained when the IO device is initialized; when the above client operating system configures the access address register of the above IO device, the above GPA is obtained from the IO device, and the corresponding PA is obtained according to the offset, and written into the above access address register for the IO device to access the memory; this embodiment can realize direct memory access by IO devices without using SMMU, which can not only reduce the overall power consumption and hardware complexity of the embedded system, thereby improving the stability and security of the embedded system, but also shorten the memory access path of the IO device and improve the performance of the embedded system.

[0044] Further, in one embodiment, in the above step S3, before obtaining the corresponding PA according to the offset, the following step is further included:

[0045] The client operating system accesses the virtual machine monitor by means of a hyper call, and obtains the OFFSET returned by the virtual machine monitor.

[0046] Preferably, a whitelist is provided in the virtual machine monitor, and the whitelist includes client operating systems that are allowed to obtain OFFSET.

[0047] When the virtual machine monitor receives the hyper call of the guest operating system, it returns the offset only to the guest operating systems in the whitelist.

[0048] Specifically, when the virtual machine monitor receives a hyper call from a client operating system, it determines whether the client operating system is in its own whitelist. If so, it returns OFFSET to the client operating system; otherwise, it returns None to the client operating system.

[0049] In this embodiment, due to the protection of memory isolation, the virtual machine monitor does not want the client operating system to know the offset relationship between its own GPA and PA. However, in some special scenarios and when power consumption performance is demanding, exceptions are allowed. Therefore, a whitelist table is set in the virtual machine monitor to confirm the client operating system that has the privilege to obtain its own OFFSET through the whitelist table.

[0050] Furthermore, in one embodiment, in the above step S1, when the guest physical address GPA of the guest operating system and the PA are arranged in a linear relationship, it also includes: saving the offset of the linear relationship.

[0051] When the virtual machine monitor maps the GPA of the client operating system, it is necessary to ensure that the GPA and PA of the client operating system are linearly correlated.

[0052] Preferably, in this embodiment, the offset OFFSET is:

[0053] OFFSET=GPA-PA

[0054] Where OFFSET is a constant.

[0055] In this embodiment, when the virtual machine monitor allocates memory to the client operating system, the client physical address GPA of the client operating system and the above PA are arranged in a linear relationship, and the corresponding offset OFFSET is saved, so that the client operating system can obtain the offset later and use the offset to calculate the above PA.

[0056] Further, in one embodiment, in the above step S1, allocating a first continuous memory segment from the virtualization system to the client operating system includes:

[0057] According to the memory capacity required by the client operating system, an available continuous memory space that meets the memory capacity is selected from the virtualization system, and the first continuous memory is allocated to the client operating system.

[0058] Optionally, when the virtual machine monitor allocates continuous memory to the client operating system, assuming that the client operating system needs a memory as large as 0x80000000, and the board physical memory has two segments that can be provided to the client operating system, namely 0xa0000000-0xffffffff and 0x880000000-0x980000000, then 0xa0000000-0xffffffff and 0x880000000-0x89fffffff cannot be allocated for it, because the two memory segments are not continuous, and only a continuous space with a length of 0x80000000 can be selected from 0x880000000-0x89fffffff.

[0059] In this embodiment, by selecting available continuous memory space that meets the above memory capacity from the virtualization system for memory allocation, it is possible to avoid allocating discontinuous memory to the client operating system, thereby causing the subsequent IO device to be unable to access the continuous memory.

[0060] Further, in one embodiment, obtaining the GPA of the client operating system when the IO device is initialized in step S2 specifically includes:

[0061] The client operating system reserves a second continuous memory;

[0062] When the IO device is initialized, a third continuous memory is requested from the second continuous memory, and the GPA is obtained according to the starting address of the third continuous memory.

[0063] In this embodiment, when the client operating system is started and initialized, the second continuous memory may be reserved for use by subsequent IO devices.

[0064] Furthermore, in one embodiment, the starting address of the third continuous memory is a guest virtual address GVA.

[0065] Acquiring the GPA according to the starting address of the third continuous memory specifically includes: converting the GVA into the GPA through a memory management unit MMU.

[0066] In this embodiment, when the IO device is initialized, the GVA may be converted into the GPA through the memory management unit MMU, so that the client operating system can calculate the PA according to the GPA.

[0067] Furthermore, in one embodiment, when applying for a third continuous memory segment from the reserved continuous memory of the client operating system, it also includes:

[0068] Get the length len of the third continuous memory.

[0069] In this embodiment, in the above step S3, when the client operating system configures the access address register of the above IO device and obtains the above GPA from the IO device, it also includes:

[0070] The length len of the third continuous memory is obtained from the IO device, and the len is also written into the access address register.

[0071] In this embodiment, since the second continuous memory reserved and allocated by the client operating system is continuous, the entire reserved continuous memory GPA is linearly offset relative to PA, and the IO device can directly access the above PA, and access a continuous memory by adding the length len of the third continuous memory on the basis of PA. So far, without relying on SMMU, the above IO device also realizes access to the above PA to bypass SMMU to access memory normally. So far, the SMMU function is realized by the address offset of GPA relative to PA, and IO virtualization is realized.

[0072] Optionally, the IO device is a DMA (Direct Memory Access)-like IO device in a client operating system.

[0073] It is understandable that when a DMA-like IO device in a client operating system directly accesses memory, it can only obtain GPA, that is, the physical address considered by the Guest). The actual purpose is to access PA, that is, the real physical address. GPA is generally not equal to PA.

[0074] In some embodiments, the SMMU peripheral can be used as a GPA to PA conversion device. Before the IO device accesses the memory, the GPA is first converted to PA through the SMMU peripheral, and finally the PA is accessed.

[0075] In this embodiment, the SMMU can be replaced by memory linear allocation layout and subsequent address conversion process. After the embedded system reduces the use of SMMU, the power consumption of the system will be reduced; and the IO device access to the PA path reduces the access to the SMMU, the path to access the memory becomes shorter, and the direct reading and writing of the memory performance will also be improved. In addition, since the SMMU is not required, the complexity of the embedded system hardware is reduced, and the security and stability of the system are also improved.

[0076] like Figure 2 As shown, the IO virtualization method of this embodiment specifically includes:

[0077] A1. The virtual machine monitor Hypervisor performs memory planning for the virtualization system, allocates a first continuous memory segment for the client operating system GuestOS, and records the memory physical address PA;

[0078] A2. Make sure that the GPA of the Guest OS is linearly related to the above PA, and establish a corresponding mapping;

[0079] A3. Save the offset OFFSET value of the above linear relationship in the global variable of the Hypervisor for subsequent use; wherein OFFSET = GPA-PA;

[0080] A4. The Guest OS starts and initializes to reserve the second continuous memory with a size of SIZE for subsequent DMA-like IO devices;

[0081] A5. When initializing the DMA-like IO device, apply for a third continuous memory from the second continuous memory reserved by the Guest OS. The starting address of the third continuous memory is recorded as the guest virtual address GVA, and the length is len;

[0082] A6. Use MMU to convert GVA to GPA;

[0083] A7. The Guest OS requests OFFSET from the hypervisor through a Hyper call.

[0084] A8. Hypervisor determines whether the client operating system is in its own whitelist. If so, it turns to A10. Otherwise, it returns None and ends. A whitelist is pre-set in the virtual machine monitor, and the whitelist records the client operating systems that are eligible to obtain OFFSET.

[0085] A9. Return OFFSET;

[0086] A10. After receiving the returned OFFSET, the client operating system calculates PA=GPA-OFFSET, and writes PA and len into the access address register of the IO device.

[0087] At this time, the DMA-like IO device can access the memory normally without SMMU according to the PA and len, and realize the IO virtualization of replacing SMMU by the address offset of GPA relative to PA. The method of this embodiment can make the system independent of SMMU, thereby improving the performance of the system, reducing the power consumption of the system, and improving the security and stability of the system.

[0088] In a second aspect, an embodiment of the present application also provides an IO virtualization system.

[0089] In one embodiment, referring to Figure 3 , Figure 3 This is a functional module diagram of an embodiment of the IO virtualization system of the present application. Figure 3 As shown, the above IO virtualization system includes a virtual machine monitor, an IO module and a client operating system.

[0090] The virtual machine monitor is used to allocate a first continuous memory segment for the client operating system from the virtualization system, and record the memory physical address PA, and arrange that the client physical address GPA of the client operating system and the PA are in a linear relationship.

[0091] The IO module is arranged in the IO device, and the IO module is used to obtain the GPA of the client operating system when the IO device is initialized.

[0092] When the client operating system is used to configure the access address register of the IO device, the GPA is obtained from the IO device, and the corresponding PA is obtained according to the offset, and written into the access address register so that the IO device can access the memory.

[0093] In this embodiment, in the memory allocation of the virtualization system, it is ensured that PA is continuous, and there is a linear relationship between the PA and GPA of the Guest OS, and GPA is equal to PA plus OFFSET; at the same time, the Guest OS reserves a continuous second continuous memory for use by DMA-like IO devices; when the DMA-like IO device needs to use the Guest OS continuous memory, the address to be accessed is originally GPA, and the Guest OS subtracts OFFSET from GPA to equal PA, and writes the PA to the register of the IO device, so that the DMA-like IO device can directly access the PA address, thereby realizing the IO virtualization process of replacing the SMMU with the address offset of GPA relative to PA.

[0094] Furthermore, in one embodiment, the client operating system is further configured to access the virtual machine monitor by means of a hyper call, and obtain the offset returned by the virtual machine monitor.

[0095] Furthermore, in one embodiment, a whitelist is provided in the virtual machine monitor, and the whitelist includes client operating systems that are allowed to obtain the offset.

[0096] The virtual machine monitor is also used to return an offset only to the guest operating systems in the whitelist when receiving a hyper call from the guest operating system.

[0097] Specifically, when the virtual machine monitor receives a hyper call from a client operating system, it is also used to determine whether the client operating system is in its own whitelist. If so, OFFSET is returned to the client operating system; otherwise, None is returned to the client operating system.

[0098] Furthermore, in one embodiment, the virtual machine monitor is also used to save the offset OFFSET of the linear relationship.

[0099] Furthermore, in one embodiment, the offset OFFSET is: OFFSET = GPA - PA

[0100] The offset OFFSET is a constant.

[0101] Furthermore, in one embodiment, the virtual machine monitor is used to select available continuous memory space that meets the memory capacity required by the client operating system from the virtualization system, and allocate the first continuous memory to the client operating system.

[0102] Furthermore, in one embodiment, when the IO module is used to initialize the IO device, it applies for a section of third continuous memory from the second continuous memory, and obtains the GPA according to the starting address of the third continuous memory.

[0103] Wherein, the client operating system reserves a second continuous memory.

[0104] Furthermore, in one embodiment, the starting address of the third continuous memory is a guest virtual address GVA.

[0105] The IO module is used to convert the GVA into the GPA through a memory management unit MMU.

[0106] Furthermore, in one embodiment, the client operating system is used to obtain the length of the third continuous memory from the IO device and write it into the access address register.

[0107] Among them, the functional implementation of each module in the above-mentioned IO virtualization system corresponds to each step in the above-mentioned IO virtualization method embodiment, and its functions and implementation processes are no longer repeated here.

[0108] The terms "including" and "having" and any variations thereof in the specification and claims of this application and the above-mentioned drawings are intended to cover non-exclusive inclusions. For example, a process, method, system, product or device that includes a series of steps or units is not limited to the listed steps or units, but optionally includes steps or units that are not listed, or optionally includes other steps or units inherent to these processes, methods, products or devices. The terms "first", "second" and "third" are used to distinguish different objects, etc., and do not represent a sequence, nor do they limit "first", "second" and "third" to different types.

[0109] In the description of the embodiments of the present application, "exemplary", "for example" or "for example" are used to indicate examples, illustrations or descriptions. Any embodiment or design described as "exemplary", "for example" or "for example" in the embodiments of the present application should not be interpreted as being more preferred or more advantageous than other embodiments or designs. Specifically, the use of words such as "exemplary", "for example" or "for example" is intended to present related concepts in a specific way.

[0110] In the description of the embodiments of the present application, unless otherwise specified, “ / ” means or, for example, A / B can mean A or B; the “and / or” in the text is merely a description of the association relationship of associated objects, indicating that three relationships may exist, for example, A and / or B can mean: A exists alone, A and B exist at the same time, and B exists alone. In addition, in the description of the embodiments of the present application, “multiple” refers to two or more than two.

[0111] In some processes described in the embodiments of the present application, multiple operations or steps that appear in a specific order are included, but it should be understood that these operations or steps may not be executed in the order in which they appear in the embodiments of the present application or in parallel, and the sequence number of the operation is only used to distinguish the different operations, and the sequence number itself does not represent any execution order. In addition, these processes may include more or fewer operations, and these operations or steps may be executed in sequence or in parallel, and these operations or steps may be combined.

[0112] Through the description of the above implementation methods, those skilled in the art can clearly understand that the above-mentioned embodiment methods can be implemented by means of software plus a necessary general hardware platform, and of course by hardware, but in many cases the former is a better implementation method. Based on such an understanding, the technical solution of the present application is essentially or the part that contributes to the prior art can be embodied in the form of a software product, which is stored in a storage medium (such as ROM / RAM, disk, CD) as described above, and includes a number of instructions for a terminal device to execute the methods described in each embodiment of the present application.

[0113] The above are only preferred embodiments of the present application, and are not intended to limit the patent scope of the present application. Any equivalent structure or equivalent process transformation made using the contents of the present application specification and drawings, or directly or indirectly applied in other related technical fields, are also included in the patent protection scope of the present application.

Claims

1. An IO virtualization method, It is characterized in that The method comprises: Allocate a first continuous memory segment for the client operating system from the virtualization system, and record the memory physical address PA, so that the client physical address GPA of the client operating system and the PA are in a linear relationship; When the IO device is initialized, the GPA of the client operating system is obtained; When the client operating system configures the access address register of the IO device, it obtains the GPA from the IO device, obtains the corresponding PA according to the offset, and writes it into the access address register so that the IO device can access the memory.

2. The IO virtualization method according to claim 1, It is characterized in that Before obtaining the corresponding PA according to the offset, the following steps are also included: The client operating system accesses the virtual machine monitor by means of a hyper call, and obtains the offset returned by the virtual machine monitor.

3. The IO virtualization method according to claim 2, It is characterized in that A whitelist is provided in the virtual machine monitor, and the whitelist includes client operating systems that are allowed to obtain offsets; When the virtual machine monitor receives a hyper call from a guest operating system, it returns an offset only to the guest operating systems in the whitelist.

4. The IO virtualization method according to claim 1, It is characterized in that When the guest physical address GPA of the guest operating system and the PA are in a linear relationship, the method further includes: saving an offset of the linear relationship.

5. The IO virtualization method according to claim 4, It is characterized in that The offset OFFSET is: OFFSET=GPA-PA Where OFFSET is a constant.

6. The IO virtualization method according to claim 1, It is characterized in that Allocate a first continuous memory segment from the virtualization system to the guest operating system, including: According to the memory capacity required by the client operating system, available continuous memory space that meets the memory capacity is selected from the virtualization system, and the first continuous memory is allocated to the client operating system.

7. The IO virtualization method according to claim 1, It is characterized in that When the IO device is initialized, the GPA of the client operating system is obtained, specifically including: The client operating system reserves a second continuous memory; When the IO device is initialized, a section of the third continuous memory is applied for from the second continuous memory, and the GPA is obtained according to the starting address of the third continuous memory.

8. The IO virtualization method according to claim 7, It is characterized in that The starting address of the third continuous memory is the client virtual address GVA; Acquiring the GPA according to the starting address of the third continuous memory specifically includes: converting the GVA into the GPA through a memory management unit MMU.

9. The IO virtualization method according to claim 7, It is characterized in that When obtaining the GPA from the IO device, it also includes: The length of the third continuous memory is obtained from the IO device and written into the access address register.

10. An IO virtualization system for implementing the IO virtualization method according to any one of claims 1 to 9, It is characterized in that The system comprises: A virtual machine monitor, which is used to allocate a first continuous memory segment for the client operating system from the virtualization system, and record the memory physical address PA, and arrange that the client physical address GPA of the client operating system and the PA are in a linear relationship; An IO module, arranged in the IO device, for obtaining the GPA of the client operating system when the IO device is initialized; The client operating system is used to obtain the GPA from the IO device when configuring the access address register of the IO device, and obtain the corresponding PA according to the offset, and write it into the access address register so that the IO device can access the memory.