Instruction set emulation for guest operating systems
First Claim
Patent Images
1. A host computing device comprising:
- at least one processing device configured to implement a host instruction set architecture (ISA) that is native to the host computing device; and
at least one computer-readable storage medium storing host ISA instructions,wherein the at least one computer-readable storage medium includes a memory, andwherein the host ISA instructions, when executed by the at least one processing device, cause the at least one processing device to;
maintain a translation data structure indicating whether guest ISA binaries have been translated into host ISA binaries and loaded into the memory, the translation data structure mapping guest ISA addresses used by a guest operating system or a guest application to reference the guest ISA binaries to host ISA addresses of the host ISA binaries in the memory, the guest ISA binaries being in a guest ISA that is not native to the host computing device;
receive a request from the guest operating system or the guest application to load a particular guest ISA binary into the memory;
check the translation data structure to determine whether a particular host ISA binary corresponding to the particular guest ISA binary has already been loaded into the memory;
in a first instance when the particular host ISA binary corresponding to the particular guest ISA binary has already been loaded into the memory, execute the particular host ISA binary upon request; and
in a second instance when the particular guest ISA binary has already been translated into the particular host ISA binary in the host ISA and the particular host ISA binary is not yet loaded into the memory;
load the particular host ISA binary into the memory;
update the translation data structure with a record indicating that the particular host ISA binary has been translated and is located in the memory at a particular host ISA address, the record having a particular guest ISA address used by the guest operating system or the guest application to reference the particular guest ISA binary; and
execute the particular host ISA binary upon request.
2 Assignments
0 Petitions
Accused Products
Abstract
The described implementations relate to virtual computing techniques. One implementation provides a technique that can include receiving a request to execute an application. The application can include first application instructions from a guest instruction set architecture. The technique can also include loading an emulator and a guest operating system into an execution context with the application. The emulator can translate the first application instructions into second application instructions from a host instruction set architecture. The technique can also include running the application by executing the second application instructions.
245 Citations
20 Claims
-
1. A host computing device comprising:
-
at least one processing device configured to implement a host instruction set architecture (ISA) that is native to the host computing device; and at least one computer-readable storage medium storing host ISA instructions, wherein the at least one computer-readable storage medium includes a memory, and wherein the host ISA instructions, when executed by the at least one processing device, cause the at least one processing device to; maintain a translation data structure indicating whether guest ISA binaries have been translated into host ISA binaries and loaded into the memory, the translation data structure mapping guest ISA addresses used by a guest operating system or a guest application to reference the guest ISA binaries to host ISA addresses of the host ISA binaries in the memory, the guest ISA binaries being in a guest ISA that is not native to the host computing device; receive a request from the guest operating system or the guest application to load a particular guest ISA binary into the memory; check the translation data structure to determine whether a particular host ISA binary corresponding to the particular guest ISA binary has already been loaded into the memory; in a first instance when the particular host ISA binary corresponding to the particular guest ISA binary has already been loaded into the memory, execute the particular host ISA binary upon request; and in a second instance when the particular guest ISA binary has already been translated into the particular host ISA binary in the host ISA and the particular host ISA binary is not yet loaded into the memory; load the particular host ISA binary into the memory; update the translation data structure with a record indicating that the particular host ISA binary has been translated and is located in the memory at a particular host ISA address, the record having a particular guest ISA address used by the guest operating system or the guest application to reference the particular guest ISA binary; and execute the particular host ISA binary upon request. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method performed by a computing device having a native instruction set architecture (ISA), the method comprising:
-
maintaining a translation data structure indicating whether guest ISA binaries have been translated into native ISA binaries and loaded into memory, the translation data structure mapping guest locations of the guest ISA binaries to corresponding host locations of the native ISA binaries, wherein the guest ISA binaries are provided in a guest ISA that is different than the native ISA and the guest locations are used by guest code in the guest ISA to reference the guest ISA binaries; receiving a request from the guest code to execute an individual guest ISA binary; checking the translation data structure to determine whether an individual native ISA binary corresponding to the individual guest ISA binary has already been loaded into memory; and in a first instance when the individual native ISA binary has not already been loaded into memory; interpreting or compiling the individual guest ISA binary to obtain the individual native ISA binary; loading the individual native ISA binary into memory at an individual host location; updating the translation data structure with a record mapping an individual quest location of the individual quest ISA binary to the individual host location of the individual native ISA binary in memory; and executing the individual native ISA binary in response to the request; and in a second instance when the individual native ISA binary has already been loaded into memory, executing the individual native ISA binary in response to the request. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A method performed by a computing device, the method comprising:
-
receiving multiple requests to execute guest files; in response to the multiple requests, translating the guest files into native binaries and loading the native binaries into memory; updating a translation data structure with records indicating that the guest files have been translated, the translation data structure having mappings of guest locations of the guest files to corresponding host locations of the native binaries in memory, the guest locations being used by guest code to reference the guest files; executing the native binaries; receiving subsequent requests to execute individual guest files; and in response to the subsequent requests; in first instances when the translation data structure includes records indicating that first native binaries for first guest files remain loaded in memory, executing the first native binaries without recompilation and without reloading into memory; and in second instances when the translation data structure lacks records indicating that second native binaries for second guest files are compiled and loaded in memory and the second native binaries are not compiled and available in storage; compiling the second guest files to obtain the second native binaries; loading the second native binaries into memory; updating the translation data structure with records indicating that the second native binaries have been compiled and loaded into memory; and executing the second native binaries. - View Dependent Claims (19, 20)
-
Specification