IP Library Granted Patent US 11,196,805
Granted Patent B2
US 11,196,805 · App. 13/171,258 · Granted Dec 7, 2021

Method and system for permutation encoding of digital data

Inventors: Kenji C. Obata (Seattle, WA); Stefan I. Larimore (Redmond, WA)
Assignee: CODE SYSTEMS CORPORATION
H04L67/1085G06F3/064G06F3/0619G06F9/466G06F11/3466G06F16/13G06F16/188G06F16/2379G06F16/40G06F16/9024G06F2009/45583G06F2212/152
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 11,196,805
App. No.
13/171,258
Granted
Dec 7, 2021
Kind
B2
Abstract

A method of constructing an application file from a plurality of files, each storing only a portion of an original application file. Each of the files stores one or more data blocks obtained from the original application file, and a location in the original application file from which each of the data blocks was obtained. At least one of the files stores the size of the original application file. The method includes allocating a block of memory the size of the original application file and storing each of the data blocks of the files in a memory location of the block of memory corresponding to the location in the original application file from which the data block was obtained. Before the block of memory includes the entire original application file, a reconstructed application file comprising the block of memory is executed to thereby at least partially implement an application.

Claims (27)

1. A computer implemented method performed by one or more computing devices executing a directing process, the method comprising:

obtaining a plurality of files comprising a first file, each of the plurality of files storing a portion of an original application file, the portion being less than the entire original application file, the portion comprising one or more data blocks obtained from the original application file, each of the plurality of files further comprising, for each of the one or more data blocks, a location in the original application file from which the data block was obtained, the first file comprising a size indicator indicating a size of the original application file;

allocating, by the directing process, a shared block of memory having a size indicated by the size indicator, the shared block of memory comprising a plurality of memory locations, a different one of the plurality of memory locations corresponding to the location in the original application file from which each of the one or more data blocks of each of the plurality of files was obtained;

allocating a bit array having a portion corresponding to each of the plurality of memory locations of the shared block of memory;

for each of the plurality of files, the directing process (a) storing each particular one of the one or more data blocks in a particular one of the plurality of memory locations that corresponds to the location in the original application file from which the particular data block was obtained, and (b) modifying the portion of the bit array corresponding to the particular memory location to indicate that the particular memory location is storing the particular data block;

before the shared block of memory comprises the entire original application file, the directing process initiating execution of a reconstructed application file comprising data stored by the shared block of memory to thereby at least partially implement an application, the shared block of memory being accessible by both the application and the directing process;

storing, by the application, a sentinel object in the shared block of memory;

checking, by the application, the bit array for a requested data block;

obtaining, by the application, the requested data block when the bit array indicates the requested data block is stored in the shared block of memory;

sending, by the application, a request for the requested data block to the directing process when the bit array indicates the requested data block is not stored in the shared block of memory;

waiting, by the application, for the requested data block to be stored in the shared block of memory by the directing process when the bit array indicates the requested data block is not stored in the shared block of memory; and

determining, by the directing process, that the application has terminated execution based on the sentinel object.

2. The computer implemented method of claim 1 , wherein the reconstructed application file is executed after the one or more data blocks of the first file are stored in the shared block of memory, and before the one or more data blocks of others of the plurality of files are stored in the shared block of memory.

3. The computer implemented method of claim 1 , wherein the reconstructed application file is executed by a virtual runtime engine, and the computer implemented method further comprises:

for each of the plurality of files, sending, by the directing process a notification to the virtual runtime engine after storing the one or more data blocks of the file in the shared block of memory.

4. The computer implemented method of claim 1 , wherein the application is a virtual application.

5. The computer implemented method of claim 1 , wherein each of the plurality of files further comprises a signature, and the method further comprises:

for each of the plurality of files, determining whether the signature of the file is valid before storing the one or more data blocks of the file in the shared block of memory and storing the one or more data blocks of the file in the shared block of memory only if the signature is determined to be valid.

6. The computer implemented method of claim 1 wherein each of the plurality of files further comprises a version stamp, and the method further comprises:

for each of the plurality of files, determining whether the version stamp identifies a version compatible with a runtime engine before storing the one or more data blocks of the file in the shared block of memory, and storing the one or more data blocks of the file in the shared block of memory only if the version identified by the version stamp is determined to be compatible with the runtime engine.

7. The computer implemented method of claim 1 , wherein the sentinel object is a named kernel object.

8. The computer implemented method of claim 1 , wherein the sentinel object is a named mutex.

9. The computer implemented method of claim 1 , wherein the directing process polls for the sentinel object and determines that the application has terminated execution when the sentinel object is not found by the polling.

10. The computer implemented method of claim 1 wherein

the directing process names the shared block of memory using a session identifier.

11. The computer implemented method of claim 10 , further comprising:

providing, by the directing process, the session identifier to the application.

Assignments (3)
ADDRESS CHANGE Recorded Nov 10, 2015
From: CODE SYSTEMS CORPORATION
To: CODE SYSTEMS CORPORATION
Reel/Frame 037084/0283 →
CHANGE OF ADDRESS Recorded May 28, 2015
From: CODE SYSTEMS CORPORTATION
To: CODE SYSTEMS CORPORATION
Reel/Frame 035794/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2012
From: OBATA, KENJI C.; LARIMORE, STEFAN I.
To: CODE SYSTEMS CORPORATION
Reel/Frame 029131/0688 →
Continuity (4)
Continuation In Part 12697029 · Jan 29, 2010
Provisional Application 61361373 · Jul 2, 2010
Related Publication 20120005244A1 · Jan 5, 2012
Related Publication 20160085570A9 · Mar 24, 2016