SHARING OF COMPUTING RESOURCES BETWEEN COMPUTING PROCESSES OF AN INFORMATION HANDLING SYSTEM

Sharing of computing resources between computing process modules of an information handling system, including loading a single instance of a library at a source computing process module, the library being a collection of resources; extracting one or more features of the library; publishing, based on the extracted features, a library interface at the source computing process module, the library interface implemented by the library at the source computing process module; retrieving, through the library interface, the extracted features of the library, the extracted features retrieved at a target computing process module; and instantiating a dynamic object at the target computing process module that implements the library interface.

BACKGROUND

Field of the Disclosure

The disclosure relates generally to an information handling system, and in particular, sharing of computing resources between computing processes of an information handling system.

Description of the Related Art

SUMMARY

Innovative aspects of the subject matter described in this specification may be embodied in a method of sharing of computing resources between computing process modules of an information handling system, the method including loading a single instance of a library at a source computing process module, the library being a collection of resources; extracting one or more features of the library; publishing, based on the extracted features, a library interface at the source computing process module, the library interface implemented by the library at the source computing process module; retrieving, through the library interface, the extracted features of the library, the extracted features retrieved at a target computing process module; and instantiating a dynamic object at the target computing process module that implements the library interface.

These and other embodiments may each optionally include one or more of the following features. For instance, a remoting subsystem of the source computing process module publishes the library interface through a remote procedure call (RPC). Utilizing the library interface by one or more other libraries and subsystems at the target computing process module. Forwarding a library interface call, at the target computing process, through a remote procedure call to the library at the source computing process module. The source computing process module and the target computing process module are both executed at the information handling system. The target computing process module is exclusive of the library. Loading a single instance of an additional library at the target computing process module, the additional library being a collection of resources; extracting one or more features of the additional library; publishing, based on the extracted features, an additional library interface at the target computing process module, the additional library interface implemented by the additional library at the target computing process module; retrieving, through the additional library interface, the extracted features of the additional library, the extracted features retrieved at the source computing process module; and instantiating an additional dynamic object at the source computing process module that implements the additional library interface.

DESCRIPTION OF PARTICULAR EMBODIMENT(S)

This disclosure discusses methods and systems for sharing of resources between computing resources of the information handling system. In short, an interface can be shared between a source computing process module with a target computing process module192, where the target computing process module is unaware that the shared interface is a dynamic implementation of a library that is executed at the source computing process module. The target computing process module can “discover” the library at the source computing process module such that the source computing process module is incognizant as to how the library is shared, and the target computing process module is unaware of how the library is implemented. Thus, a single instance of the library is shared across multiple processes, saving runtime resources, deployment management errors, and providing flexibility of allowing shared data pools, caches, and feature data.

Specifically, this disclosure discusses a system and a method for sharing of computing resources between computing process modules of an information handling system, the method including: loading a single instance of a library at a source computing process module, the library being a collection of resources; extracting one or more features of the library; publishing, based on the extracted features, a library interface at the source computing process module, the library interface implemented by the library at the source computing process module; retrieving, through the library interface, the extracted features of the library, the extracted features retrieved at a target computing process module; and instantiating a dynamic object at the target computing process module that implements the library interface.

Particular embodiments are best understood by reference toFIGS. 1-4wherein like numbers are used to indicate like and corresponding parts.

Turning now to the drawings,FIG. 1illustrates a block diagram depicting selected elements of an information handling system100in accordance with some embodiments of the present disclosure. In various embodiments, information handling system100may represent different types of portable information handling systems, such as, display devices, head mounted displays, head mount display systems, smart phones, tablet computers, notebook computers, media players, digital cameras, 2-in-1 tablet-laptop combination computers, and wireless organizers, or other types of portable information handling systems. In one or more embodiments, information handling system100may also represent other types of information handling systems, including desktop computers, server systems, controllers, and microcontroller units, among other types of information handling systems. Components of information handling system100may include, but are not limited to, a processor subsystem120, which may comprise one or more processors, and system bus121that communicatively couples various system components to processor subsystem120including, for example, a memory subsystem130, an I/O subsystem140, a local storage resource150, and a network interface160. System bus121may represent a variety of suitable types of bus structures, e.g., a memory bus, a peripheral bus, or a local bus using various bus architectures in selected embodiments. For example, such architectures may include, but are not limited to, Micro Channel Architecture (MCA) bus, Industry Standard Architecture (ISA) bus, Enhanced ISA (EISA) bus, Peripheral Component Interconnect (PCI) bus, PCI-Express bus, HyperTransport (HT) bus, and Video Electronics Standards Association (VESA) local bus.

In information handling system100, I/O subsystem140may comprise a system, device, or apparatus generally operable to receive and/or transmit data to/from/within information handling system100. I/O subsystem140may represent, for example, a variety of communication interfaces, graphics interfaces, video interfaces, user input interfaces, and/or peripheral interfaces. In various embodiments, I/O subsystem140may be used to support various peripheral devices, such as a touch panel, a display adapter, a keyboard, an accelerometer, a touch pad, a gyroscope, an IR sensor, a microphone, a sensor, or a camera, or another type of peripheral device.

Local storage resource150may comprise computer-readable media (e.g., hard disk drive, floppy disk drive, CD-ROM, and/or other type of rotating storage media, flash memory, EEPROM, and/or another type of solid state storage media) and may be generally operable to store instructions and/or data. Likewise, the network storage resource may comprise computer-readable media (e.g., hard disk drive, floppy disk drive, CD-ROM, and/or other type of rotating storage media, flash memory, EEPROM, and/or other type of solid state storage media) and may be generally operable to store instructions and/or data.

InFIG. 1, network interface160may be a suitable system, apparatus, or device operable to serve as an interface between information handling system100and a network110. Network interface160may enable information handling system100to communicate over network110using a suitable transmission protocol and/or standard, including, but not limited to, transmission protocols and/or standards enumerated below with respect to the discussion of network110. In some embodiments, network interface160may be communicatively coupled via network110to a network storage resource170. Network110may be a public network or a private (e.g. corporate) network. The network may be implemented as, or may be a part of, a storage area network (SAN), personal area network (PAN), local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), a wireless local area network (WLAN), a virtual private network (VPN), an intranet, the Internet or another appropriate architecture or system that facilitates the communication of signals, data and/or messages (generally referred to as data). Network interface160may enable wired and/or wireless communications (e.g., NFC or Bluetooth) to and/or from information handling system100.

In particular embodiments, network110may include one or more routers for routing data between client information handling systems100and server information handling systems100. A device (e.g., a client information handling system100or a server information handling system100) on network110may be addressed by a corresponding network address including, for example, an Internet protocol (IP) address, an Internet name, a Windows Internet name service (WINS) name, a domain name or other system name. In particular embodiments, network110may include one or more logical groupings of network devices such as, for example, one or more sites (e.g. customer sites) or subnets. As an example, a corporate network may include potentially thousands of offices or branches, each with its own subnet (or multiple subnets) having many devices. One or more client information handling systems100may communicate with one or more server information handling systems100via any suitable connection including, for example, a modem connection, a LAN connection including the Ethernet or a broadband WAN connection including DSL, Cable, Ti, T3, Fiber Optics, Wi-Fi, or a mobile network connection including GSM, GPRS, 3G, or WiMax.

The information handling system100can also include a source computing process module190and a target computing process module192. The source computing process module190and the target computing process module192can be included by the memory subsystem130. The source computing process module190and the target computing process module192can include respective computer-executable programs (software). The source computing process module190and the target computing process module192can be executed by the processor subsystem120.

In short, an interface can be shared between the source computing process module190with the target computing process module192, where the target computing process module192is unaware that the shared interface is a dynamic implementation of a library that is executed at the source computing process module190. The target computing process module192can “discover” the library at the source computing process module190such that the source computing process module190is incognizant as to how the library is shared, and the target computing process module192is unaware of how the library is implemented. Thus, a single instance of the library is shared across multiple processes, saving runtime resources, deployment management errors, and providing flexibility of allowing shared data pools, caches, and feature data.

Turning toFIG. 2,FIG. 2illustrates an environment200including an information handling system202. The information handling system202can include a source computing process module210and a target computing process module212. In some examples, the information handling system202is similar to, or includes, the information handling system100ofFIG. 1. In some examples, the source computing process module210is the same, or substantially the same, as the source computing process module190ofFIG. 1. In some examples, the target computing process module212is the same, or substantially the same, as the target computing process module192ofFIG. 1. The source computing process module210and the target computing process module212are both implemented and executed at the information handling system202.

The source computing process module210can include a library220, an interface222, a remoting subsystem224, and other libraries and subsystems226. The library220is a single instance loaded into the source computing process module210. The interface222(or library interface222) is an interface implemented by the library220The other libraries and subsystems226can include other libraries and subsystems which employ the interface222within the source computing process module210. The remoting subsystem224can publish the interface222. The interface222can be in communication with the library220, the remoting subsystem224, and the other libraries and subsystems226.

The target computing process module212can include a remoting subsystem232and other libraries and subsystems234. The remoting subsystem232can implement discovery of the interface222and generation of an interface230. The other libraries and subsystems234can include other libraries and subsystems which employ the interface230within the target computing process module212. The interface230can be in communication with the remoting subsystem232and the other libraries and interfaces234.

The remoting subsystem224of the source computing process module210can be in communication with the remoting subsystem232of the target computing process module212. The connection between the remoting subsystem224and the remoting subsystem232can be a secure connection.

The source computing process module210can load a single instance of the library220at the source computing process module210. The library220can include a collection of resources that facilitates execution of the source computing process module210. For example, the library220can include configuration data, documentation, help data, message templates, pre-written code and subroutines, classes, values or type specifications. The target computing process module212is exclusive of (or independent of) the library220. That is, the library220is the only instance of the library and is loaded at the source computing process module210; with the target computing process module212not including the library220(or an instance of the library220).

The source computing process module210can extract one or more features of the library220. Specifically, the remoting subsystem224can examine the library220and extract necessary information to represent the interface230of the library220at the target computing process module212. In some examples, the one or more features can include data storage associated with the library220, telemetry data associated with the library220, data analysis associated with the library220, health information associated with the library220, server communication systems associated with the library220, and/or event systems associated with the library220.

The source computing process module210can publish, based on the extracted features, the library interface222at the source computing process module210. Specifically, the library interface222is implemented by the library220at the source computing process module210. In some examples, the remoting subsystem224of the source computing process module210publishes the library interface222through a remote procedure call (RPC). The remoting subsystem224can make the library interface222available to the target computing process module212as a dynamically implemented interface, described further herein.

The target computing process module212can receive, through the library interface222, the extracted features of the library220. Specifically, the extracted features of the library220are retrieved at the target computing process module212. The remoting subsystem232of the target computing process module212retrieves the extracted features (information) of the library220. In some examples, the remoting subsystem232of the target computing process module212discovers the library220and the library interface222of the source computing process module212automatically. That is, as the target computing process module212requires interfaces, the remoting subsystem232provides the interfaces if the interfaces have been published. If the target computing process module212does not require any interfaces, the remoting subsystem212does not provide such interfaces.

The target computing process module212can instantiates a dynamic object240at target computing process module212that implements the library interface222. Specifically, the dynamic object240(or dynamic class240) is a runtime, dynamically generated object that represents/implements the library220and library interface222in the target computing process module212. The remoting subsystem232of the target computing process212creates/generates the dynamic object240. In some examples, the remoting subsystem232of the target computing process212creates/generates the dynamic object240automatically (e.g., automatically in response to publication of the library interface222).

To that end, the subsystems of the target computing process module212(e.g., the other libraries and subsystems234) can employ the interface230without having knowledge of (understanding) that the library220is not included by the target computing process module212. That is, the other libraries and subsystems234are unaware that the dynamic object240was dynamically generated and was not included during installation of the target computing process module212(at the information handling system202). In some cases, if the target computing process module212does not require any interface, the remoting subsystem212does not generate the dynamic object240.

The other libraries and subsystems234of the target computing process module212can utilize the library interface222via the dynamic object240. When the other libraries and subsystems234utilize the library interface222, an interface call is forwarded by the remoting subsystem232though a RPC call to the library220at the remote computing process module212. Thus, only one instance of the library220is utilized and shared across both the source computing process module210and the target computing process module212.

In some examples, the information handling system202can include multiple source computing process modules, and multiple target computing process modules. That is, multiple source computing process modules can share features (libraries) with multiple target computing process modules. In some examples, one or more of the computing process modules can share features (libraries) with another computing process module.

Referring toFIG. 4, in some examples, the target computing process module212can further an additional library402.

The target computing process module212can load a single instance of the additional library402at the target computing process module212. The additional library402can include a collection of resources that facilitates execution of the target computing process module212. For example, the additional library220can include configuration data, documentation, help data, message templates, pre-written code and subroutines, classes, values or type specifications. The source computing process module210is exclusive of (or independent of) the additional library402. That is, the additional library402is the only instance of the additional library and is loaded at the target computing process module212; with the source computing process module210not including the additional library402(or an instance of the additional library402).

The target computing process module212can extract one or more features of the additional library402. Specifically, the remoting subsystem232can examine the additional library402and extract necessary information to represent the interface230of the additional library402at the source computing process module210. In some examples, the one or more features can include data storage associated with the additional library402, telemetry data associated with the additional library402, data analysis associated with the additional library402, health information associated with the additional library402, server communication systems associated with the additional library402, and/or event systems associated with the additional library402.

The target computing process module212can publish, based on the extracted features, the library interface230at the target computing process module212. Specifically, the library interface230is implemented by the additional library402at the target computing process module212. In some examples, the remoting subsystem232of the target computing process module212publishes the library interface230through a remote procedure call (RPC). The remoting subsystem232can make the library interface230available to the source computing process module210as a dynamically implemented interface, described further herein.

The source computing process module210can receive, through the library interface230, the extracted features of the additional library402. Specifically, the extracted features of the additional library402are retrieved at the source computing process module210. The remoting subsystem224of the source computing process module210retrieves the extracted features (information) of the additional library402. In some examples, the remoting subsystem224of the source computing process module210discovers the additional library402and the library interface230of the target computing process module210automatically. That is, as the source computing process module210requires interfaces, the remoting subsystem224provides the interfaces if the interfaces have been published. If the source computing process module210does not require any interface, the remoting subsystem224does not provide such interfaces.

The source computing process module210can instantiate a dynamic object404at the source computing process module210that implements the library interface230. Specifically, the dynamic object404(or dynamic class404) is a runtime, dynamically generated object the represents/implements the additional library402and library interface230in the source computing process module210. The remoting subsystem224of the source computing process210creates/generates the dynamic object404. In some examples, the remoting subsystem224of the source computing process210creates/generates the dynamic object404automatically (e.g., automatically in response to publication of the library interface230).

To that end, the subsystems of the source computing process module212(e.g., the other libraries and subsystems226) can employ the interface230without having knowledge of (understanding) that the additional library402is not included by the source computing process module210. That is, the other libraries and subsystems226are unaware that the dynamic object404was dynamically generated and was not included during installation of the source computing process module210(at the information handling system202). In some cases, if the source computing process module210does not require any interface, the remoting subsystem224does not generate the dynamic object404.

The other libraries and subsystems226of the source computing process module210can utilize the library interface230via the dynamic object404. When the other libraries and subsystems226utilize the library interface230, an interface call is forwarded by the remoting subsystem224though a RPC call to the additional library402at the source computing process module210. Thus, only one instance of the additional library402is utilized and shared across both the source computing process module210and the target computing process module212.

FIG. 3illustrates a flowchart depicting selected elements of an embodiment of a method300for sharing of resources between computing resources of the information handling system. The method300may be performed by the information handling system100, the information handling system202, the source computing process module210, and/or the target computing process module212, and with reference toFIGS. 1-2. It is noted that certain operations described in method300may be optional or may be rearranged in different embodiments

The source computing process module210loads a single instance of the library220at the source computing process module210(302). The source computing process module210extracts one or more features of the library220(304). The source computing process module210publishes, based on the extracted features, the library interface222at the source computing process module210(306). The target computing process module210retrieves, through the library interface222, the extracted features of the library220(308). The target computing process module210instantiates the dynamic object240at the target computing process module212that implements the library interface222(310).