IP Library Granted Patent US 9,158,515
Granted Patent B2
US 9,158,515 · App. 13/921,625 · Granted Oct 13, 2015

Control flow graph application configuration

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,158,515
App. No.
13/921,625
Granted
Oct 13, 2015
Kind
B2
Abstract

An operating system may be configured using a control flow graph that defines relationships between each executable module. The operating system may be configured by analyzing an application and identifying the operating system modules called from the application, then building a control flow graph for the configuration. The operating system may be deployed to a server or other computer containing only those components identified in the control flow graph. Such a lightweight deployment may be used on a large scale for datacenter servers as well as for small scale deployments on sensors and other devices with little processing power.

Claims (43)

1. A method executed in a computer comprising a memory and a processor, comprising:

by the computer, determining a functionality to provide to a target device;

by the computer, determining a feature set to enable the functionality, which feature set defines an application function and an operating system function;

by the computer, decomposing the application function and the operating system function into a set of functional blocks of executable software code;

by the computer, receiving a control flow graph comprising application executable elements, operating system executable elements, and relationships between executable elements, wherein the executable elements represent functional blocks of executable software code;

by the computer, traversing said control flow graph to identify a set of executable elements that relate to said functionality; and

by the computer, creating an executable package comprising said executable elements, said executable package being an operable set of executable code for said target device for said functionality.

2. The method of claim 1 , said control flow graph comprising executable elements from a plurality of application functions.

3. The method of claim 2 , said feature set comprising a subset of said plurality of application functions.

4. The method of claim 3 , said feature set comprising a subset of one application function within said plurality of application functions.

5. The method of claim 1 further comprising:

configuring said executable package for execution on said target device.

6. The method of claim 5 further comprising:

compiling at least one executable element prior to creating said executable package.

7. The method of claim 1 further comprising:

receiving a request for executable code from said target device; and

transmitting said executable package to said target device.

8. The method of claim 7 , said creating said executable package being performed after said receiving said request.

9. The method of claim 1 further comprising:

receiving a first application, said first application comprising operating system calls;

creating a first control flow graph for said first application, said first control flow graph comprising an operating system executable element called by said first application; and

adding said first control flow graph to said control flow graph.

10. The method of claim 1 , wherein determining a feature set to enable the functionality comprises determining that the application is not capable of decomposition and including the entire application in said executable package as a single functional block.

11. A computer system comprising a processor and a memory, the computer system comprising instructions, which, when executed by the processor, configure in the computer system:

an executable code generator that:

with the computer system, identifies a feature set for a target device, said feature set comprising application and operating system functions to be executed by said target device;

with the computer system, traverses a control flow graph to identify a set of application and operating system executable elements that relate to said feature set; and

with the computer system, creates an executable package comprising said set of application and operating system executable elements, said executable package being an operable set of executable code for said target device for said feature set.

12. The system of claim 11 further comprising:

a code server that:

receives a request for executable code from said target device; and

transmits said executable package to said target device.

13. The system of claim 12 , said code server operating on a second computer processor.

14. The system of claim 12 , said executable code generator creating said executable package after said code server receives said request.

15. A method executed in a computer comprising a memory and a processor, comprising:

by the computer, receiving a request for executable code from a target device;

by the computer, determining a functionality to provide to the target device based on the request;

by the computer, determining a feature set for said target device, said feature set comprising application functions and operating system functions to be executed by said target device to enable the functionality;

by the computer, traversing said control flow graph to identify a set of executable elements that relate to said feature set;

by the computer, creating an executable package comprising said set of executable elements, said executable package being an operable set of executable code for said target device for said feature set; and

by the computer, transmitting said executable package to said target device.

16. The method of claim 15 , said feature set being comprised in said request.

17. The method of claim 15 , said feature set being received from a management device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2015
From: CONCURIX CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 036139/0069 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2013
From: GOUNARES, ALEXANDER G.; GARRETT, CHARLES D.
To: CONCURIX CORPORATION
Reel/Frame 030908/0182 →