US20180046467A1 - Microvisor run time environment offload processor - Google Patents
Microvisor run time environment offload processor Download PDFInfo
- Publication number
- US20180046467A1 US20180046467A1 US15/795,005 US201715795005A US2018046467A1 US 20180046467 A1 US20180046467 A1 US 20180046467A1 US 201715795005 A US201715795005 A US 201715795005A US 2018046467 A1 US2018046467 A1 US 2018046467A1
- Authority
- US
- United States
- Prior art keywords
- resource
- application
- environment
- processor
- microvisor
- 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.)
- Abandoned
Links
Images
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
Definitions
- This application relates to the field of computing processors to run operating systems, applications and other programs.
- a method for running (e.g. execute) an application via a microvisor processor in communication with a memory and a storage includes installing an application.
- the method also includes identifying an operating system that the application is configured to execute within.
- the method also includes identifying a resource required by the application to execute, wherein the resource is part of the operating system.
- the method also includes identifying a location of the resource in the storage.
- the method also includes retrieving the resource from the storage.
- the method also includes bundling the application and the resource in the memory.
- the method also includes executing the application using the resource.
- a system including a memory configured to store an application.
- the system also includes a storage configured to store a resource, wherein the resource is part of an operating system and is required by the application to execute.
- the system also includes a processor in communication with the memory and the storage. The processor is configured to at least: store the application in the memory, identify the resource, retrieve the resource from the storage, bundle the application and the resource in the memory, and execute the application using the resource.
- a computer-readable, non-transitory storage medium storing computer executable instructions that, when executed by one or more computer systems, configure the one or more computer systems to perform operations.
- the operations include installing an application.
- the operations also include identifying an operating system that the application is configured to execute within.
- the operations also include identifying a resource required by the application to execute, wherein the resource is part of the operating system.
- the operations also include identifying a location of the resource in a storage.
- the operations also include retrieving the resource from the storage.
- the operations also include bundling the application and the resource in a memory.
- the operations also include executing the application using the resource.
- a method for running an application at a computer includes receiving an application request for the application at the computer from a user device.
- the user device includes a device processor and a device memory.
- the computer includes a host memory for storing a host operating system and a host processor configured for operating the host operating system.
- the method further includes communicating with a resource library using the computer, the resource library defining one or more resources required for running the application.
- the method further includes identifying, using the computer, a set of resources required for running the requested application from the resource library.
- the set of resources includes at least one resource required for an application operating system to support the requested application.
- the application operating system is an operating system operable for running the requested application, where the application operating is different than the host operating system.
- the method further includes running, at the computer, the requested application with the set of resources.
- a system in a particular embodiment, includes at least one storage component for storing, at least, a host operating system and a resource library defining one or more resources required for running an application.
- the system further includes a host processor configured for operating the host operating system.
- the host processor is configured to receive an application request for the application from a user device.
- the host processor is further configured to identify, from the resource library, a set of resources required for running the application, the set of resources comprising at least one resource required for an application operating system to host the application, where the application operating system is an operating system operable for running the application.
- the application operating system is different than the host operating system.
- the host processor is further configured to run the requested application with the identified set of resources.
- a method for running an application is disclosed.
- the method is performed via a microvisor processor in communication with a central processing unit, a memory and a storage.
- the method includes installing an application.
- the method also includes identifying which operating system the application is designed to run on.
- the method also includes identifying which resources the application needs to run.
- the method also includes identifying a location of the identified resources in the storage.
- the method also includes retrieving the identified resources.
- the method also includes bundling the application and the resources in the memory.
- the method also includes executing the application using the resources.
- FIG. 1 is an example architecture diagram according to certain embodiments described herein.
- FIG. 2 is another example architecture diagram of a microvisor processor according to certain embodiments described herein.
- FIG. 3 is an example flow diagram for the steps the microvisor processor may take according to some embodiments described herein.
- FIG. 4 is an example network diagram showing remote storage of resources according to certain example embodiments described herein.
- devices can be configured to utilize and natively run applications.
- Applications may be broadly used to describe digital content or software. This can be done through the use of a microvisor processor chip, which may offload run time environments so that applications may execute with the proper resources but without loading or emulating an entire operating system (OS).
- OS operating system
- the hypervisor may be used to run a virtual machine for an application to execute.
- the hypervisor may run the virtual machine by emulating hardware, serializing and cuing data, and running an OS as part of a virtual, non-native environment for applications.
- the microvisor can retrieve and run only the specific pieces of an OS (for example, Windows server, Linux, or any other OS) as necessary to launch and run a particular application.
- Those specific pieces can be a resource such as (but not limited to) code snippets, libraries, run time libraries (RTLs), dll files, kernels, and files.
- the application is able to interact with the hardware microvisor processor and not have to interact with multiple other layers of software used when running the application in a virtual machine. This microvisor processor may therefore provide a more efficient way to run an application.
- a system may be able to utilize applications that run on different OSs without having to load an entire OS for an application.
- the microvisor can find and bundle just the resources (for example, snippets, kernels, or RTLs) needed to operate the specific application.
- any type of resource from any OS could be utilized to run any application, without requiring loading an entire OS for the application.
- the result can be a new “dynamic OS” that is capable of natively running applications configured to run on different traditional OSs through this microvisor processor.
- resources described herein may be described in the context of resources associated with an OS, resources not associated with an OS may be utilized as required in different applications in accordance with different embodiments.
- the microvisor may be used to emulate physical processors instead of OSs.
- any type of environment can be emulated, not limited to an OS environment as described herein.
- FIG. 1 An example of how a microvisor may be arranged is illustrated in FIG. 1 .
- the computer 100 is shown with a central processing unit (CPU) 106 , a memory running an OS 102 , and a microvisor processor chip 104 .
- the microvisor 104 may be located elsewhere and not necessarily on the same computer as the CPU 106 .
- the microvisor 104 may need a communication channel of its own to communicate with the CPU 106 and may even have its own memory.
- the microvisor 104 and the CPU 106 are found on the same piece of computer hardware.
- the computer 100 is configured to interact with storage over a communications channel 108 .
- the communications channel 100 is a bus, but could be any kind of network, cable, wireless, or any kind of communications channel that allows data to be transferred.
- the communications channel is a network and/or the Internet as described in FIG. 4 .
- the library storage 110 is where resources, such as snippets 112 in the illustrated embodiment, are stored.
- the storage 110 is the cache memory of the microvisor processor 104 .
- the storage 110 is a separate database-like storage such as networked storage, or any other kind of storage.
- resources may include (or be part of) a library such as a run time library (a set of low-level routines that may be used by a complier to invoke behaviors of a runtime environment), a kernel (a program that manages I/O (input/output) requests for electronic hardware components), snippets (a set of reusable code), a file, or any other kind of resource to allow an application to run.
- a run time library a set of low-level routines that may be used by a complier to invoke behaviors of a runtime environment
- a kernel a program that manages I/O (input/output) requests for electronic hardware components
- snippets a set of reusable code
- files or any other kind of resource to allow an application to run.
- resources could include runtime libraries of operating systems and emulated resources of underlying hardware and drivers which an application uses to run.
- a Windows XP application will use resources including the runtime libraries, kernel, and other resources which are normally supplied by Windows XP (developed by Microsoft
- FIG. 2 shows an example of the microvisor processor chip 104 as found in FIG. 1 .
- the microvisor processor 104 is shown to include an execution unit 202 .
- the execution unit 202 may be a processor or any kind of execution device.
- the microvisor processor example also includes a memory storage 206 .
- the memory storage 206 includes the application 208 (which is the application to be run) along with the snippets 204 pulled from the storage 110 as shown in FIG. 1 .
- the microvisor processor 104 may bundle the application 208 with the snippets 204 (or another resource) so that the application may run natively on the microvisor processor 104 .
- the microvisor processor 104 is able to execute the application 208 using the resources (for example, the snippets 204 ) needed to launch and run the application 208 in the OS environment for which the application 208 was designed.
- the microvisor processor 104 can identify which OS the application 208 is configured to run on and any resources (for example, any snippets, RTLs, kernels and/or file systems) used to run the application 208 .
- the microvisor 104 processor may query a relational database (not illustrated) for an identifier of the resources and/or an identifier the operating system that the application 208 is configured to run on.
- the identifier of the operating system (and in further embodiments also the identifier of the application) may be used on the relational database to query for the identifier of the resources required for the application 208 to run.
- the relational database may be stored and accessed locally (for example in the memory storage 206 ) or may be stored in the storage 110 accessible via the bus 108 or other storage accessible over a network.
- the microvisor 104 may allow the application 208 to query for the resources used by the application 208 to run. Then, the microvisor 104 may receive the results of the application's 208 queries to determine which resources (for example, snippets, RTLs and/or kernels) the application 208 needs to run. For example, the application 104 may send the identifier of the resources and/or the identifier of the operating system that the application 208 is configured to run on to the microvisor 104 .
- the microvisor 104 may determine which resources are needed for the application 208 . Then, after the microvisor processor 104 identifies the resources used in the application, the microvisor processor 104 can identify where the resources are located. In certain embodiments, the microvisor processor 104 may identify the locations of the resources by querying the relational database using the identifier(s) of the resources for the locations of the resources. The microvisor processor 104 can retrieve those resources for use with the application 208 , bundle them with the application 208 and run the application 208 using the microvisor processor's 104 own memory 206 . By bundling the resource with the application 208 , the application 208 can run natively on the operating environment provided by the microvisor processor chip 104 . The application 208 can then interact directly with the hardware (such as the execution unit 202 ) of the microvisor processor chip 104 .
- the hardware such as the execution unit 202
- the microvisor processor 104 may also catalog the information related to the application 208 so the microvisor processor 104 can quickly access the resources (for example, RTLs and kernels) when the application is loaded in a future session. Once such information is cataloged, the microvisor processor 104 may more quickly load the resources as the microvisor processor would not need to identify and locate the same resources in a manner as if the resources were not previously identified and located.
- resources for example, RTLs and kernels
- the retrieval of resources can take place from a database or database-like environment.
- the resources may be stored in the library storage 110 .
- the resources may be stored on a cloud based storage or a local database.
- FIG. 3 An example of this process is shown on FIG. 3 as an illustrative method 300 that may be implemented by the microvisor processor chip 104 using the execution unit 202 .
- the illustrative method 300 begins at block 302 , where the application 208 is installed using the microvisor processor 104 .
- the application may be installed by loading the executable code of the application into the memory storage 206 .
- the microvisor processor 104 identifies which OS the application is designed to run on. As discussed above, the microvisor processor 104 may identify the appropriate OS by querying the relational database using the identifier of the application.
- the microvisor processor 104 identifies which resources (such as which snippets 112 or RTLs) the application uses along with the locations for these resources in storage (for example by identifying the library storage 110 that stores the snippets 112 ). These resources may be an individual resource (for example, as individual snippets) and/or combinations of different resources (for example, as snippets along with a kernel).
- the microvisor processor 104 retrieves the identified resources.
- the identified resources may be retrieved by fetching the identified resources from the library storage 110 and storing the identified resources in the memory storage 206 .
- the microvisor processor 104 bundles the application 208 and the resources in the memory 206 to run on the microvisor processor 104 .
- Bundling the application 208 and the resources includes associating the resource with the application 208 such that the application 208 calls the resource while the application 208 is executing.
- the resources (for example, the snippets 204 ) which the microvisor uses to run the application 208 may be stored in an off-site location, separate and remote from the main CPU 106 and/or microvisor processor 104 .
- mobile devices 402 are in communication with the a network 406 (for example, the Internet) via a wireless access point 404 .
- a server 408 in communication with a storage 410 that stores the resources (for example, the libraries, snippets, or kernels) which the microvisor may use to run the application 208 .
- a network 406 and a mobile device 402 are merely exemplary and not intended to be limiting. Any kind of computing device, network, or storage can be used.
- a microvisor system may be beneficial where there may be many applications that run across a diverse fabric.
- using the microvisor processor 104 to execute applications that use different resources can reduce the amount of processing on the hardware of a system by reducing the software (for example, virtual machines) running on the hardware.
- being able to provide offloading with the microvisor processor may improve the performance of the entire networked system. For example, offloading provided by the microvisor processor may allow for more applications to run while using the same resources when compared with a system that does not use the microvisor processor.
- features consistent with the present inventions may be implemented via computer-hardware, software and/or firmware.
- the systems and methods disclosed herein may be embodied in various forms including, for example, a data processor, such as a computer that also includes a database, digital electronic circuitry, firmware, software, computer networks, servers, or in combinations of them.
- a data processor such as a computer that also includes a database
- digital electronic circuitry such as a computer that also includes a database
- firmware firmware
- software computer networks, servers, or in combinations of them.
- the disclosed implementations describe specific hardware components, systems and methods consistent with the innovations herein may be implemented with any combination of hardware, software and/or firmware.
- the above-noted features and other aspects and principles of the innovations herein may be implemented in various environments.
- Such environments and related applications may be specially constructed for performing the various routines, processes and/or operations according to the invention or they may include a general-purpose computer or computing platform selectively activated or reconfigured by code to provide the necessary functionality.
- the processes disclosed herein are not inherently related to any particular computer, network, architecture, environment, or other apparatus, and may be implemented by a suitable combination of hardware, software, and/or firmware.
- various general-purpose machines may be used with programs written in accordance with teachings of the invention, or it may be more convenient to construct a specialized apparatus or system to perform the required methods and techniques.
- aspects of the method and system described herein, such as the logic may be implemented as functionality programmed into any of a variety of circuitry, including programmable logic devices (“PLDs”), such as field programmable gate arrays (“FPGAs”), programmable array logic (“PAL”) devices, electrically programmable logic and memory devices and standard cell-based devices, as well as application specific integrated circuits.
- PLDs programmable logic devices
- FPGAs field programmable gate arrays
- PAL programmable array logic
- Some other possibilities for implementing aspects include: memory devices, microcontrollers with memory (such as EEPROM), embedded microprocessors, firmware, software, etc.
- aspects may be embodied in microprocessors having software-based circuit emulation, discrete logic (sequential and combinatorial), custom devices, fuzzy (neural) logic, quantum devices, and hybrids of any of the above device types.
- the underlying device technologies may be provided in a variety of component types, e.g., metal-oxide semiconductor field-effect transistor (“MOSFET”) technologies like complementary metal-oxide semiconductor (“CMOS”), bipolar technologies like emitter-coupled logic (“ECL”), polymer technologies (e.g., silicon-conjugated polymer and metal-conjugated polymer-metal structures), mixed analog and digital, and so on.
- MOSFET metal-oxide semiconductor field-effect transistor
- CMOS complementary metal-oxide semiconductor
- ECL emitter-coupled logic
- polymer technologies e.g., silicon-conjugated polymer and metal-conjugated polymer-metal structures
- mixed analog and digital and so on.
- Computer-readable media in which such formatted data and/or instructions may be embodied include, but are not limited to, non-volatile storage media in various forms (e.g., optical, magnetic or semiconductor storage media) and carrier waves that may be used to transfer such formatted data and/or instructions through wireless, optical, or wired signaling media or any combination thereof.
- Examples of transfers of such formatted data and/or instructions by carrier waves include, but are not limited to, transfers (uploads, downloads, e-mail, etc.) over the Internet and/or other computer networks via one or more data transfer protocols (e.g., HTTP, FTP, SMTP, and so on).
- transfers uploads, downloads, e-mail, etc.
- data transfer protocols e.g., HTTP, FTP, SMTP, and so on.
- the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense as opposed to an exclusive or exhaustive sense; that is to say, in a sense of “including, but not limited to.” Words using the singular or plural number also include the plural or singular number respectively. Additionally, the words “herein,” “hereunder,” “above,” “below,” and words of similar import refer to this application as a whole and not to any particular portions of this application. When the word “or” is used in reference to a list of two or more items, that word covers all of the following interpretations of the word: any of the items in the list, all of the items in the list and any combination of the items in the list.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
Embodiments here include systems and methods for running an application via a microvisor processor in communication with a memory and a storage is disclosed. For example, one method includes installing an application. The method also includes identifying a resource required by the application to execute, wherein the resource is part of an environment. The method also includes identifying a location of the resource in the storage. The method also includes retrieving the resource from the storage. The method also includes bundling the application and the resource in the memory. The method also includes executing the application using the resource.
Description
- Any and all applications for which a foreign or domestic priority claim is identified in the Application Data Sheet as filed with the present application are hereby incorporated by reference under 37 CFR 1.57.
- This application relates to the field of computing processors to run operating systems, applications and other programs.
- It has been difficult for various hardware products to interact with software with which they may not be compatible. Various hardware, core operating system functions, and abilities which applications were specifically written for become out of date, unavailable, and problematic to the applications themselves. The need to provide an abstraction based model for application, desktop and data access independent of a particular operating environment has become a prevalent model for network delivery of applications, desktops, data, and services. Software based approaches put the functions of emulation, abstraction, and running entirely on the Central Processing Unit (CPU). Software defined virtual resources are prevalent in common cloud and virtualized resources relying entirely on the core Operating System (OS) and the CPU to provide the resources desired.
- Various implementations of systems, methods and devices within the scope of the appended claims each have several aspects, no single one of which is solely responsible for the desirable attributes described herein. Without limiting the scope of the appended claims, some prominent features are described herein.
- Details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages will become apparent from the description, the drawings, and the claims. Note that the relative dimensions of the following figures may not be drawn to scale.
- Generally described, aspects of the present disclosure relate to a hardware based approach for translation, emulation, and virtualization from software defined abstracted application requirements. This hardware based approach improves perceived performance while lowering the utilization of shared hardware such as a CPU, memory, and busses which are used for providing the same functions in software. By moving functions of the core OS down from software into hardware, many bottlenecks may be overcome. These bottlenecks may include bottlenecks emerging in the virtualization space where software can define emulated resources such as compute, storage, and available resources.
- In a particular embodiment, a method for running (e.g. execute) an application via a microvisor processor in communication with a memory and a storage is disclosed. The method includes installing an application. The method also includes identifying an operating system that the application is configured to execute within. The method also includes identifying a resource required by the application to execute, wherein the resource is part of the operating system. The method also includes identifying a location of the resource in the storage. The method also includes retrieving the resource from the storage. The method also includes bundling the application and the resource in the memory. The method also includes executing the application using the resource.
- In a particular embodiment, a system including a memory configured to store an application is disclosed. The system also includes a storage configured to store a resource, wherein the resource is part of an operating system and is required by the application to execute. The system also includes a processor in communication with the memory and the storage. The processor is configured to at least: store the application in the memory, identify the resource, retrieve the resource from the storage, bundle the application and the resource in the memory, and execute the application using the resource.
- In a particular embodiment, a computer-readable, non-transitory storage medium storing computer executable instructions that, when executed by one or more computer systems, configure the one or more computer systems to perform operations is disclosed. The operations include installing an application. The operations also include identifying an operating system that the application is configured to execute within. The operations also include identifying a resource required by the application to execute, wherein the resource is part of the operating system. The operations also include identifying a location of the resource in a storage. The operations also include retrieving the resource from the storage. The operations also include bundling the application and the resource in a memory. The operations also include executing the application using the resource.
- In a particular embodiment, a method for running an application at a computer is disclosed. The method includes receiving an application request for the application at the computer from a user device. The user device includes a device processor and a device memory. The computer includes a host memory for storing a host operating system and a host processor configured for operating the host operating system. The method further includes communicating with a resource library using the computer, the resource library defining one or more resources required for running the application. The method further includes identifying, using the computer, a set of resources required for running the requested application from the resource library. The set of resources includes at least one resource required for an application operating system to support the requested application. The application operating system is an operating system operable for running the requested application, where the application operating is different than the host operating system. The method further includes running, at the computer, the requested application with the set of resources.
- In a particular embodiment, a system is disclosed. The system includes at least one storage component for storing, at least, a host operating system and a resource library defining one or more resources required for running an application. The system further includes a host processor configured for operating the host operating system. The host processor is configured to receive an application request for the application from a user device. The host processor is further configured to identify, from the resource library, a set of resources required for running the application, the set of resources comprising at least one resource required for an application operating system to host the application, where the application operating system is an operating system operable for running the application. Also, the application operating system is different than the host operating system. The host processor is further configured to run the requested application with the identified set of resources.
- In a particular embodiment, a method for running an application is disclosed. The method is performed via a microvisor processor in communication with a central processing unit, a memory and a storage. The method includes installing an application. The method also includes identifying which operating system the application is designed to run on. The method also includes identifying which resources the application needs to run. The method also includes identifying a location of the identified resources in the storage. The method also includes retrieving the identified resources. The method also includes bundling the application and the resources in the memory. The method also includes executing the application using the resources.
- The foregoing aspects and many of the attendant advantages will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
-
FIG. 1 is an example architecture diagram according to certain embodiments described herein. -
FIG. 2 is another example architecture diagram of a microvisor processor according to certain embodiments described herein. -
FIG. 3 is an example flow diagram for the steps the microvisor processor may take according to some embodiments described herein. -
FIG. 4 is an example network diagram showing remote storage of resources according to certain example embodiments described herein. - Reference will now be made in detail to embodiments, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth in order to provide a sufficient understanding of the subject matter presented herein. But it will be apparent to one of ordinary skill in the art that the subject matter may be practiced without these specific details. Moreover, the particular embodiments described herein are provided by way of example and should not be used to limit the scope of the invention to these particular embodiments. In other instances, well-known data structures, timing protocols, software operations, procedures, and components have not been described in detail so as not to unnecessarily obscure aspects of the embodiments of the invention.
- The use of multiple programs and operating systems with multiple hardware devices can cause problems with software compatibility. One way to deal with incompatibility issues is through the use of emulators such as hypervisors and other virtualization technologies. Such systems may emulate entire operating systems (OS) to run software on the OS that a particular program is configured for. But such systems can be cumbersome for the hardware to implement and can introduce multiple layers of software which can slow the execution of the application.
- According to some embodiments, devices can be configured to utilize and natively run applications. Applications may be broadly used to describe digital content or software. This can be done through the use of a microvisor processor chip, which may offload run time environments so that applications may execute with the proper resources but without loading or emulating an entire operating system (OS).
- In a hypervisor example, the hypervisor may be used to run a virtual machine for an application to execute. The hypervisor may run the virtual machine by emulating hardware, serializing and cuing data, and running an OS as part of a virtual, non-native environment for applications.
- In a microvisor example, the microvisor can retrieve and run only the specific pieces of an OS (for example, Windows server, Linux, or any other OS) as necessary to launch and run a particular application. Those specific pieces can be a resource such as (but not limited to) code snippets, libraries, run time libraries (RTLs), dll files, kernels, and files. In so doing, the application is able to interact with the hardware microvisor processor and not have to interact with multiple other layers of software used when running the application in a virtual machine. This microvisor processor may therefore provide a more efficient way to run an application.
- In short, using the example embodiments described here, a system may be able to utilize applications that run on different OSs without having to load an entire OS for an application. In other words, if the application calls for running in Windows, Android, Linux, iOS, or any other OS, the microvisor can find and bundle just the resources (for example, snippets, kernels, or RTLs) needed to operate the specific application. In such a way, any type of resource from any OS could be utilized to run any application, without requiring loading an entire OS for the application. The result can be a new “dynamic OS” that is capable of natively running applications configured to run on different traditional OSs through this microvisor processor.
- Furthermore, although resources described herein may be described in the context of resources associated with an OS, resources not associated with an OS may be utilized as required in different applications in accordance with different embodiments. For example, the microvisor may be used to emulate physical processors instead of OSs. Thereby, any type of environment can be emulated, not limited to an OS environment as described herein.
- An example of how a microvisor may be arranged is illustrated in
FIG. 1 . InFIG. 1 thecomputer 100 is shown with a central processing unit (CPU) 106, a memory running anOS 102, and amicrovisor processor chip 104. In certain examples, themicrovisor 104 may be located elsewhere and not necessarily on the same computer as theCPU 106. In such examples, themicrovisor 104 may need a communication channel of its own to communicate with theCPU 106 and may even have its own memory. In the example ofFIG. 1 , themicrovisor 104 and theCPU 106 are found on the same piece of computer hardware. - The
computer 100 is configured to interact with storage over acommunications channel 108. In this example, thecommunications channel 100 is a bus, but could be any kind of network, cable, wireless, or any kind of communications channel that allows data to be transferred. In certain examples, the communications channel is a network and/or the Internet as described inFIG. 4 . - The
library storage 110 is where resources, such assnippets 112 in the illustrated embodiment, are stored. In some examples, thestorage 110 is the cache memory of themicrovisor processor 104. In certain examples, thestorage 110 is a separate database-like storage such as networked storage, or any other kind of storage. - In certain embodiments, resources may include (or be part of) a library such as a run time library (a set of low-level routines that may be used by a complier to invoke behaviors of a runtime environment), a kernel (a program that manages I/O (input/output) requests for electronic hardware components), snippets (a set of reusable code), a file, or any other kind of resource to allow an application to run. Further examples of resources could include runtime libraries of operating systems and emulated resources of underlying hardware and drivers which an application uses to run. For example, a Windows XP application will use resources including the runtime libraries, kernel, and other resources which are normally supplied by Windows XP (developed by Microsoft Corporation headquartered in Redmond, Washington) running on native hardware or emulated hardware.
-
FIG. 2 shows an example of themicrovisor processor chip 104 as found inFIG. 1 . In this figure, themicrovisor processor 104 is shown to include anexecution unit 202. Theexecution unit 202 may be a processor or any kind of execution device. - The microvisor processor example also includes a
memory storage 206. Thememory storage 206 includes the application 208 (which is the application to be run) along with thesnippets 204 pulled from thestorage 110 as shown inFIG. 1 . As discussed further in connection withFIG. 3 , themicrovisor processor 104 may bundle theapplication 208 with the snippets 204 (or another resource) so that the application may run natively on themicrovisor processor 104. - In this way, the
microvisor processor 104 is able to execute theapplication 208 using the resources (for example, the snippets 204) needed to launch and run theapplication 208 in the OS environment for which theapplication 208 was designed. - When an application is loaded, the
microvisor processor 104 can identify which OS theapplication 208 is configured to run on and any resources (for example, any snippets, RTLs, kernels and/or file systems) used to run theapplication 208. For example, themicrovisor 104 processor may query a relational database (not illustrated) for an identifier of the resources and/or an identifier the operating system that theapplication 208 is configured to run on. In certain embodiments, the identifier of the operating system (and in further embodiments also the identifier of the application) may be used on the relational database to query for the identifier of the resources required for theapplication 208 to run. The relational database may be stored and accessed locally (for example in the memory storage 206) or may be stored in thestorage 110 accessible via thebus 108 or other storage accessible over a network. - In certain embodiments, the
microvisor 104 may allow theapplication 208 to query for the resources used by theapplication 208 to run. Then, themicrovisor 104 may receive the results of the application's 208 queries to determine which resources (for example, snippets, RTLs and/or kernels) theapplication 208 needs to run. For example, theapplication 104 may send the identifier of the resources and/or the identifier of the operating system that theapplication 208 is configured to run on to themicrovisor 104. - In such a way, the
microvisor 104 may determine which resources are needed for theapplication 208. Then, after themicrovisor processor 104 identifies the resources used in the application, themicrovisor processor 104 can identify where the resources are located. In certain embodiments, themicrovisor processor 104 may identify the locations of the resources by querying the relational database using the identifier(s) of the resources for the locations of the resources. Themicrovisor processor 104 can retrieve those resources for use with theapplication 208, bundle them with theapplication 208 and run theapplication 208 using the microvisor processor's 104own memory 206. By bundling the resource with theapplication 208, theapplication 208 can run natively on the operating environment provided by themicrovisor processor chip 104. Theapplication 208 can then interact directly with the hardware (such as the execution unit 202) of themicrovisor processor chip 104. - The
microvisor processor 104 may also catalog the information related to theapplication 208 so themicrovisor processor 104 can quickly access the resources (for example, RTLs and kernels) when the application is loaded in a future session. Once such information is cataloged, themicrovisor processor 104 may more quickly load the resources as the microvisor processor would not need to identify and locate the same resources in a manner as if the resources were not previously identified and located. - The retrieval of resources (for example, RTLs) can take place from a database or database-like environment. In certain examples, the resources may be stored in the
library storage 110. In certain examples, the resources may be stored on a cloud based storage or a local database. - An example of this process is shown on
FIG. 3 as anillustrative method 300 that may be implemented by themicrovisor processor chip 104 using theexecution unit 202. Theillustrative method 300 begins atblock 302, where theapplication 208 is installed using themicrovisor processor 104. The application may be installed by loading the executable code of the application into thememory storage 206. - At
block 304 themicrovisor processor 104 identifies which OS the application is designed to run on. As discussed above, themicrovisor processor 104 may identify the appropriate OS by querying the relational database using the identifier of the application. - At
block 306, themicrovisor processor 104 identifies which resources (such as whichsnippets 112 or RTLs) the application uses along with the locations for these resources in storage (for example by identifying thelibrary storage 110 that stores the snippets 112). These resources may be an individual resource (for example, as individual snippets) and/or combinations of different resources (for example, as snippets along with a kernel). - At
block 308, themicrovisor processor 104 retrieves the identified resources. For example, the identified resources may be retrieved by fetching the identified resources from thelibrary storage 110 and storing the identified resources in thememory storage 206. - At
block 310, themicrovisor processor 104 bundles theapplication 208 and the resources in thememory 206 to run on themicrovisor processor 104. Bundling theapplication 208 and the resources includes associating the resource with theapplication 208 such that theapplication 208 calls the resource while theapplication 208 is executing. - In certain examples, the resources (for example, the snippets 204) which the microvisor uses to run the
application 208 may be stored in an off-site location, separate and remote from themain CPU 106 and/ormicrovisor processor 104. For example, inFIG. 4 ,mobile devices 402 are in communication with the a network 406 (for example, the Internet) via awireless access point 404. In this example, aserver 408 in communication with astorage 410 that stores the resources (for example, the libraries, snippets, or kernels) which the microvisor may use to run theapplication 208. By storing the resources in a central location,many devices 404 are able to call the resources at a central location without storing the resources locally on each of thedevices 404. The example of anetwork 406 and amobile device 402 are merely exemplary and not intended to be limiting. Any kind of computing device, network, or storage can be used. - A microvisor system may be beneficial where there may be many applications that run across a diverse fabric. In other words, using the
microvisor processor 104 to execute applications that use different resources (for example, RTLs) can reduce the amount of processing on the hardware of a system by reducing the software (for example, virtual machines) running on the hardware. The more emulated resources which are utilized during networking, the more the CPU and other shared resources are taxed. As scaling takes place, being able to provide offloading with the microvisor processor may improve the performance of the entire networked system. For example, offloading provided by the microvisor processor may allow for more applications to run while using the same resources when compared with a system that does not use the microvisor processor. - As disclosed herein, features consistent with the present inventions may be implemented via computer-hardware, software and/or firmware. For example, the systems and methods disclosed herein may be embodied in various forms including, for example, a data processor, such as a computer that also includes a database, digital electronic circuitry, firmware, software, computer networks, servers, or in combinations of them. Further, while some of the disclosed implementations describe specific hardware components, systems and methods consistent with the innovations herein may be implemented with any combination of hardware, software and/or firmware. Moreover, the above-noted features and other aspects and principles of the innovations herein may be implemented in various environments. Such environments and related applications may be specially constructed for performing the various routines, processes and/or operations according to the invention or they may include a general-purpose computer or computing platform selectively activated or reconfigured by code to provide the necessary functionality. The processes disclosed herein are not inherently related to any particular computer, network, architecture, environment, or other apparatus, and may be implemented by a suitable combination of hardware, software, and/or firmware. For example, various general-purpose machines may be used with programs written in accordance with teachings of the invention, or it may be more convenient to construct a specialized apparatus or system to perform the required methods and techniques.
- Aspects of the method and system described herein, such as the logic, may be implemented as functionality programmed into any of a variety of circuitry, including programmable logic devices (“PLDs”), such as field programmable gate arrays (“FPGAs”), programmable array logic (“PAL”) devices, electrically programmable logic and memory devices and standard cell-based devices, as well as application specific integrated circuits. Some other possibilities for implementing aspects include: memory devices, microcontrollers with memory (such as EEPROM), embedded microprocessors, firmware, software, etc. Furthermore, aspects may be embodied in microprocessors having software-based circuit emulation, discrete logic (sequential and combinatorial), custom devices, fuzzy (neural) logic, quantum devices, and hybrids of any of the above device types. The underlying device technologies may be provided in a variety of component types, e.g., metal-oxide semiconductor field-effect transistor (“MOSFET”) technologies like complementary metal-oxide semiconductor (“CMOS”), bipolar technologies like emitter-coupled logic (“ECL”), polymer technologies (e.g., silicon-conjugated polymer and metal-conjugated polymer-metal structures), mixed analog and digital, and so on.
- It should also be noted that the various logic and/or functions disclosed herein may be enabled using any number of combinations of hardware, firmware, and/or as data and/or instructions embodied in various machine-readable or computer-readable media, in terms of their behavioral, register transfer, logic component, and/or other characteristics. Computer-readable media in which such formatted data and/or instructions may be embodied include, but are not limited to, non-volatile storage media in various forms (e.g., optical, magnetic or semiconductor storage media) and carrier waves that may be used to transfer such formatted data and/or instructions through wireless, optical, or wired signaling media or any combination thereof. Examples of transfers of such formatted data and/or instructions by carrier waves include, but are not limited to, transfers (uploads, downloads, e-mail, etc.) over the Internet and/or other computer networks via one or more data transfer protocols (e.g., HTTP, FTP, SMTP, and so on).
- Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense as opposed to an exclusive or exhaustive sense; that is to say, in a sense of “including, but not limited to.” Words using the singular or plural number also include the plural or singular number respectively. Additionally, the words “herein,” “hereunder,” “above,” “below,” and words of similar import refer to this application as a whole and not to any particular portions of this application. When the word “or” is used in reference to a list of two or more items, that word covers all of the following interpretations of the word: any of the items in the list, all of the items in the list and any combination of the items in the list.
- Although certain presently preferred implementations of the invention have been specifically described herein, it will be apparent to those skilled in the art to which the invention pertains that variations and modifications of the various implementations shown and described herein may be made without departing from the spirit and scope of the invention. Accordingly, it is intended that the invention be limited only to the extent required by the applicable rules of law.
- The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated.
Claims (20)
1. A method for running an application comprising,
via a microvisor processor in communication with a memory and a storage, installing an application configured to execute in an environment;
identifying a resource required by the application to execute, wherein the resource is part of the environment;
identifying a location of the resource in the storage;
retrieving the resource from the storage;
bundling the application and the resource in the memory; and
executing the application using the resource.
2. The method of claim 1 , wherein the resource is at least one selected from the group consisting of a run time library, a snippet, and a kernel.
3. The method of claim 2 , wherein the resource is less than an entirety of the environment.
4. The method of claim 1 , wherein installing an application comprises loading the application into the memory.
5. The method of claim 1 , wherein the identifying the resource comprises querying for an identifier of the resource from a data store based upon an identifier of the application.
6. The method of claim 1 , wherein the identifying the resource comprises:
the application querying for an identifier of the resource from a data store, and
the application sending the identifier of the resource to the microvisor processor.
7. The method of claim 1 , wherein the identifying the location of the resource in the storage comprises querying the location of the resource from a data store based on an identifier of the resource.
8. The method of claim 7 , further comprising, via the microvisor processor, storing the location of the resource and the identifier of the resource in the memory.
9. The method of claim 1 , wherein the microvisor processor is in communication with the storage over a network.
10. The method of claim 1 , wherein the bundling the application and the resource comprises associating the resource with the application such that the application calls the resource while the application is executing.
11. The method of claim 1 , comprising, via the microvisor processor, communicating with a central processing unit configured to host other applications within a different environment than the environment that the application is configured to execute within.
12. The method of claim 1 , comprising:
via the microvisor processor,
installing a second application;
identifying a second environment that the second application is configured to execute within, the second environment different than the environment;
identifying a second resource required by the second application to execute, wherein the second resource is part of the second environment and is different than the resource;
bundling the second application and the second resource in the memory; and
executing the second application using the second resource.
13. A system, comprising:
a memory configured to store an application;
a storage configured to store a resource, wherein the resource is part of an environment and is required by the application to execute;
a processor in communication with the memory and the storage, the processor configured to at least:
store the application in the memory,
identify the resource,
retrieve the resource from the storage,
bundle the application and the resource in the memory, and
execute the application using the resource.
14. The system of claim 13 , wherein the resource is less than an entirety of the environment.
15. The system of claim 13 , wherein the resource is at least one selected from the group consisting of a run time library, a snippet, and a kernel.
16. The system of claim 13 , further comprising a central processing unit configured to host other applications within a different environment than the environment that the application is configured to execute within.
17. The system of claim 16 , wherein the processor communicates with the central processing unit over a bus.
18. A computer-readable, non-transitory storage medium storing computer executable instructions that, when executed by one or more computer systems, configure the one or more computer systems to perform operations comprising:
installing an application;
identifying an environment that the application is configured to execute within;
identifying a resource required by the application to execute, wherein the resource is part of the environment;
identifying a location of the resource in a storage;
retrieving the resource from the storage;
bundling the application and the resource in a memory; and
executing the application using the resource.
19. The computer-readable, non-transitory storage medium of claim 18 , wherein the resource is at least one selected from the group consisting of a run time library, a snippet, and a kernel.
20. The computer-readable, non-transitory storage medium of claim 18 , wherein the resource is less than an entirety of the environment.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/795,005 US20180046467A1 (en) | 2014-05-23 | 2017-10-26 | Microvisor run time environment offload processor |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462002513P | 2014-05-23 | 2014-05-23 | |
US14/720,553 US9804865B2 (en) | 2014-05-23 | 2015-05-22 | Microvisor run time environment offload processor |
US15/795,005 US20180046467A1 (en) | 2014-05-23 | 2017-10-26 | Microvisor run time environment offload processor |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/720,553 Continuation US9804865B2 (en) | 2014-05-23 | 2015-05-22 | Microvisor run time environment offload processor |
Publications (1)
Publication Number | Publication Date |
---|---|
US20180046467A1 true US20180046467A1 (en) | 2018-02-15 |
Family
ID=54553136
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/720,553 Expired - Fee Related US9804865B2 (en) | 2014-05-23 | 2015-05-22 | Microvisor run time environment offload processor |
US15/795,005 Abandoned US20180046467A1 (en) | 2014-05-23 | 2017-10-26 | Microvisor run time environment offload processor |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/720,553 Expired - Fee Related US9804865B2 (en) | 2014-05-23 | 2015-05-22 | Microvisor run time environment offload processor |
Country Status (2)
Country | Link |
---|---|
US (2) | US9804865B2 (en) |
WO (1) | WO2015176164A1 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150205962A1 (en) * | 2014-01-23 | 2015-07-23 | Cylent Systems, Inc. | Behavioral analytics driven host-based malicious behavior and data exfiltration disruption |
US10754747B2 (en) * | 2015-09-25 | 2020-08-25 | Hewlett-Packard Development Company, L.P. | Physical port information associated with system identifiers |
US11218364B2 (en) * | 2018-06-25 | 2022-01-04 | Amazon Technologies, Inc. | Network-accessible computing service for micro virtual machines |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080127170A1 (en) * | 2006-08-29 | 2008-05-29 | Oliver Goldman | Software installation and support |
US8418230B1 (en) * | 2012-08-28 | 2013-04-09 | Netcomm Wireless Limited | Apparatus and method for mobile communications and computing |
US8423990B2 (en) * | 2007-09-24 | 2013-04-16 | International Business Machines Corporation | Installing software onto a client through a network, and corresponding client |
US9043784B2 (en) * | 2012-01-12 | 2015-05-26 | Red Hat, Inc. | Management of inter-dependent configurations of virtual machines in a cloud |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8434093B2 (en) | 2008-08-07 | 2013-04-30 | Code Systems Corporation | Method and system for virtualization of software applications |
-
2015
- 2015-05-22 US US14/720,553 patent/US9804865B2/en not_active Expired - Fee Related
- 2015-05-22 WO PCT/CA2015/000331 patent/WO2015176164A1/en active Application Filing
-
2017
- 2017-10-26 US US15/795,005 patent/US20180046467A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080127170A1 (en) * | 2006-08-29 | 2008-05-29 | Oliver Goldman | Software installation and support |
US8423990B2 (en) * | 2007-09-24 | 2013-04-16 | International Business Machines Corporation | Installing software onto a client through a network, and corresponding client |
US9043784B2 (en) * | 2012-01-12 | 2015-05-26 | Red Hat, Inc. | Management of inter-dependent configurations of virtual machines in a cloud |
US8418230B1 (en) * | 2012-08-28 | 2013-04-09 | Netcomm Wireless Limited | Apparatus and method for mobile communications and computing |
Also Published As
Publication number | Publication date |
---|---|
US9804865B2 (en) | 2017-10-31 |
US20150339128A1 (en) | 2015-11-26 |
WO2015176164A1 (en) | 2015-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11405274B2 (en) | Managing virtual network functions | |
US9189619B2 (en) | Runtime based application security and regulatory compliance in cloud environment | |
JP6192534B2 (en) | Virtual application extension point | |
US20190332368A1 (en) | Per request computer system instances | |
US9766919B2 (en) | Methods and apparatus to select virtualization environments during deployment | |
US9516094B2 (en) | Event-responsive download of portions of streamed applications | |
US9417886B2 (en) | System and method for dynamically changing system behavior by modifying boot configuration data and registry entries | |
US10983847B2 (en) | Dynamically loadable unikernel binaries | |
US20180046467A1 (en) | Microvisor run time environment offload processor | |
US10929115B2 (en) | Distribution and execution of instructions in a distributed computing environment | |
WO2018045921A1 (en) | Device virtualization for containers | |
US20180239620A1 (en) | Transparent fast application launcher | |
US11018932B2 (en) | Mixed mode management | |
US11861402B2 (en) | Methods and apparatus for tenant aware runtime feature toggling in a cloud environment | |
US8745620B2 (en) | Software tool and method for updating a virtual appliance | |
WO2016141305A1 (en) | Methods and apparatus to select virtualization environments for migration | |
WO2016141309A1 (en) | Methods and apparatus to select virtualization environments during deployment | |
KR102462600B1 (en) | Dynamic pass-through method and apparatus in virtualized system | |
US11561787B2 (en) | Application invocation on specified operating system version | |
US20230161616A1 (en) | Communications across privilege domains within a central processing unit core | |
CN117785409A (en) | Shared device service request processing method and device, electronic device and storage medium | |
US20170102956A1 (en) | Virtual machine customization | |
US8656375B2 (en) | Cross-logical entity accelerators | |
Li et al. | A Streaming Execution Method for Multi-services in Mobile Cloud Computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SPHERE 3D CORPORATION, CANADA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BOOKMAN, PETER G.;MORELLI, GIOVANNI J.;REEL/FRAME:045327/0862 Effective date: 20160923 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |