IP Library Granted Patent US 9,614,931
Granted Patent B2
US 9,614,931 · App. 14/600,246 · Granted Apr 4, 2017

Identifying a resource set require for a requested application and launching the resource set in a container for execution in a host operating system

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,614,931
App. No.
14/600,246
Granted
Apr 4, 2017
Kind
B2
Abstract

Methods and systems for providing one or more software applications. The methods and systems involve receiving an application request from a user device identifying, at least, a software application to be provided by a host computer server; providing a resource library for the host computer server that defines the resources required for providing each software application; identifying, from the resource library, a set of resources required for providing the requested software application, the set of resources includes at least one resource required for an application operating system to support the requested software application; and providing the requested software application with the set of resources. The application operating system can be different from a host operating system at the host computer server. The set of resources can be launched as a containerized resource instance, which is operationally isolated from other containerized resource instances provided by the host computer server.

Claims (68)

1. A method for providing one or more software applications at a host computer server, the host computer server having, at least, a host memory for storing a host operating system and a host processor configured for operating the host operating system, the method comprising:

receiving a software application request from a user device, the software application request comprising an application identifier associated with a requested software application, the requested software application being a software application to be executed at the host computer server, the user device comprising a device processor and a device memory;

providing a resource library for the host computer server, the resource library defining one or more resources required for providing each software application of the one or more software applications;

identifying, from the resource library, a set of resources required for providing the requested software application based on the application identifier, the set of resources comprising at least one application resource and at least one host resource, wherein:

the at least one application resource comprises one or more resources required for an application operating system to support the requested software application and is absent from the host operating system;

the at least one host resource comprises one or more resources required for the application operating system to support the requested software application and is provided by the host operating system, and

the application operating system is an operating system operable for providing the requested software application and the application operating system is different from the host operating system; and

providing the requested software application with the identified set of resources for execution on the host operating system, wherein providing the requested software application comprises accessing the at least one application resource and operating the host processor to launch the set of resources as a containerized resource instance for providing the requested software application, the containerized resource instance being operationally isolated from other containerized resource instances, the other containerized resource instances including at least one other containerized resource instance for providing one or more other software applications that do not require the at least one application resource, and the at least one application resource is not launched in the at least one other containerized resource instance; and

prior to operating the host processor to launch the set of resources as the containerized resource instance for providing the requested software application

providing a session log for the host computer server, the session log recording one or more active containerized resource instances and, for each active containerized resource instance, one or more resources associated with that active containerized resource instance, the one or more active containerized resource instances being containerized resource instances currently provided by the host computer server;

determining, from the session log, whether the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources; and

in response to determining the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources, providing the requested software application with one of the at least one active containerized resource instance, otherwise, operating the host processor to launch the set of resources for providing the requested software application as a new containerized resource instance.

2. The method of claim 1 , further comprising:

providing an application interface at the host computer server, the application interface facilitating electronic communication between the one or more active containerized resource instances and the user device.

3. The method of claim 1 , wherein operating the host processor to launch the set of resources as the containerized resource instance comprises:

allocating an application memory portion within the host memory for launching the set of resources, the application memory portion being dedicated for providing the requested software application and each containerized resource instance being associated with a different application memory portion within the host memory; and

launching the set of resources within the application memory portion.

4. The method of claim 1 , wherein:

the software application request comprises a user identifier corresponding to a user account from which the software application request was received; and

providing the requested software application with the identified set of resources comprises:

providing a session log for the host computer server, the session log recording the user identifier in association with the containerized resource instance providing the requested software application; and

upon detecting the user device is not in electronic communication with the host computer server, continuing to provide the requested software application with the containerized resource instance for that user account.

5. The method of claim 1 , wherein identifying the set of resources required for providing the requested software application based on the application identifier comprises:

determining the requested software application is incompatible with the host operating system when at least one resource of the set of resources identified for the requested software application is inoperable at the host operating system; and

if the requested software application is incompatible with the host operating system, then identifying an emulation application operable for providing the software application at the host operating system, the emulation application being operable for facilitating compatibility between the host operating system and the requested software application, otherwise, sending an error message to the user device to indicate the requested software application is unavailable.

6. The method of claim 1 , wherein the one or more resources identified in the resource library comprises at least one of a binary file and a library file.

7. The method of claim 1 , wherein the set of resources comprises at least the requested software application.

8. The method of claim 1 , wherein the host operating system is based on a Microsoft™ Windows™ Server architecture and the application operating system is based on a Microsoft™ Windows ™ architecture.

9. The method of claim 1 , wherein providing the resource library comprises:

generating one or more resource templates, each resource template being a predefined resource set launchable by the host processor for providing at least one software application, the predefined resource set including one or more resources required for providing the at least one software application.

10. The method of claim 9 , wherein the one or more resource templates comprises at least one resource template launchable by the host processor for providing the at least one software application on a Windows-based operating system.

11. The method of claim 1 , wherein accessing the at least one application resource comprises accessing the at least one application resource stored remotely from the host computer server.

12. The method of claim 1 , wherein the one or more resources of the at least one application resource are part of the application operating system.

13. A system for providing one or more software applications, the system comprising:

at least one storage component including a host memory for storing, at least, a host operating system and a resource library defining one or more resources required for providing each software application of the one or more software applications; and

a host processor configured for operating the host operating system, the host processor being further configured to:

receive a software application request from a user device, the software application request comprising an application identifier associated with a requested software application, the requested software application being a software application to be executed by the system;

identify, from the resource library, a set of resources required for providing the requested software application based on the application identifier, the set of resources comprising at least one application resource and at least one host resource, wherein:

the at least one application resource comprises one or more resources required for an application operating system to support the requested software application and is absent from the host operating system;

the at least one host resource comprises one or more resources required for the application operating system to support the requested software application and is provided by the host operating system, and

the application operating system is an operating system operable for providing the requested software application and the application operating system is different from the host operating system;

provide the requested software application with the identified set of resources for execution on the host operating system, wherein providing the requested software application comprises accessing the at least one application resource; and

launch the set of resources as a containerized resource instance for providing the requested application, the containerized resource instance being operationally isolated from other containerized resource instances being provided, the other containerized resource instances including at least one other containerized resource instance for providing one or more other software applications that do not require the at least one application resource, and the at least one application resource is not launched in the at least one other containerized resource instance;

wherein

the at least one storage component further comprises a session log for recording one or more active containerized resource instances and, for each active containerized resource instance, one or more resources associated with that active containerized resource instance, the one or more active containerized resource instances being containerized resource instances currently provided by the host computer server; and

the host processor is configured, prior to launching the set of resources as the containerized resource instance for providing the requested software application, to:

determine, from the session log, whether the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources; and

in response to determining the one or more resources associated with at least one active containerized resource instance corresponds to the identified set of resources, provide the requested software application with one of the at least one active containerized resource instance, otherwise, the host processor is configured to launch the set of resources for providing the requested software application as a new containerized resource instance.

14. The system of claim 13 , wherein the at least one storage component comprises a host memory for storing the host operating system and one or more storage components for storing the resource library, the one or more storage components being physically separate from the host memory.

15. The system of claim 13 , wherein the host processor is further configured to provide an application interface for facilitating electronic communication between the one or more active containerized resource instances and the user device.

16. The system of claim 13 , wherein the host processor is further configured to:

allocate an application memory portion within the at least one storage component for launching the set of resources, the application memory portion being dedicated for providing the requested software application and each containerized resource instance being associated with a different application memory portion within the at least one storage component; and

launch the set of resources within the application memory portion.

17. The system of claim 13 , wherein:

the software application request comprises a user identifier corresponding to a user account from which the software application request was received;

the at least one storage component further comprises a session log for recording the user identifier in association with the containerized resource instance providing the requested software application; and

the host processor is further configured, upon detecting the user device is not in electronic communication with the system, to continue to provide the requested software application with the containerized resource instance for that user account.

18. The system of claim 13 , wherein the host processor is configured to:

determine the requested software application is incompatible with the host operating system when the requested software application is operable on a software architecture different from a software architecture of the host operating system; and

if the requested software application is incompatible with the host operating system, then identify an emulation application operable for providing the software application at the host operating system, the emulation application being operable for facilitating compatibility between the host operating system and the requested software application, otherwise, the host processor is configured to send an error message to the user device to indicate the requested software application is unavailable.

19. The system of claim 13 , wherein the one or more resources identified in the resource library comprises at least one of a binary file and a library file.

20. The system of claim 13 , wherein the set of resources comprises at least the requested software application.

21. The system of claim 13 , wherein the host operating system is based on a Microsoft™ Windows™ Server architecture and the application operating system is based on a Microsoft™ Windows™ architecture.

22. The system of claim 13 , wherein the host processor is configured to:

generate one or more resource templates, each resource template being a predefined resource set launchable by the host processor to provide at least one software application, the predefined resource set including one or more resources required for providing the at least one software application.

23. The system of claim 22 , wherein the one or more resource templates comprises at least one resource template launchable by the host processor to provide the at least one software application on a Windows-based operating system.

24. The system of claim 13 , wherein accessing the at least one application resource comprises accessing the at least one application resource stored remotely from the system.

25. The system of claim 13 , wherein the one or more resources of the at least one application resource are part of the application operating system.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Nov 20, 2018
From: FBC HOLDINGS S.A R.L
To: V3 SYSTEMS HOLDINGS, INC.; OVERLAND STORAGE, INC.; SPHERE 3D CORP; SPHERE 3D, INC.
Reel/Frame 047552/0407 →
RELEASE OF SECURITY INTEREST Recorded Nov 20, 2018
From: FBC HOLDINGS S.A R.L
To: SPHERE 3D CORP; SPHERE 3D INC.; V3 SYSTEMS HOLDINGS, INC.; OVERLAND STORAGE, INC.
Reel/Frame 047605/0027 →
SECURITY INTEREST Recorded Aug 28, 2017
From: OVERLAND STORAGE, INC.; SPHERE 3D CORP.; SPHERE 3D INC.; V3 SYSTEMS HOLDINGS, INC.
To: OPUS BANK
Reel/Frame 043424/0318 →
SECURITY INTEREST Recorded Sep 22, 2016
From: SPHERE 3D CORP.; SPHERE 3D, INC.; V3 SYSTEMS HOLDINGS, INC.; OVERLAND STORAGE, INC.
To: FBC HOLDINGS S.A.R.L.
Reel/Frame 039831/0567 →
SECURITY INTEREST Recorded Apr 18, 2016
From: SPHERE 3D CORP.; SPHERE 3D, INC.; V3 SYSTEMS HOLDINGS, INC.; OVERLAND STORAGE, INC.
To: OPUS BANK
Reel/Frame 038306/0035 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 11, 2016
From: BOOKMAN, PETER G.; MORELLI, GIOVANNI, JR.; COWEN, BRANDON; DAMJI, HUSSAIN
To: SPHERE 3D INC.
Reel/Frame 037705/0320 →