# US 2014/0208043 A1 · Synchronizing parallel applications in an asymmetric multi-processing system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0208043 A1
- Document ID: US20140208043A1
- Status: Published application
- Kind: A1
- Application number: 13/749,030
- Filed: 2013-01-24
- Published: 2014-07-24
- Earliest claimed: 2013-01-24
- Assignees: Raytheon Company
- Applicants: Raytheon Company
- Inventors: Jeremy A. Goddard
- Web page: https://patentgrep.com/patent/US20140208043A1

## CPC

- G06F 12/1491: {in a hierarchical protection system, e.g. privilege levels, memory rings}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 9/526: {Mutual exclusion algorithms}
- G06F 9/505: {considering the load}
- G06F 9/545: {where tasks reside in different layers, e.g. user- and kernel-space}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for synchronizing parallel applications in a partitioned asymmetric multi-processing system having multiple independent levels of security is provided. Synchronized access to a shared data memory region is provided for a first application through a first instance of a para-virtualized user library linked against a first application in a first domain having a first security level. Synchronized access is provided to the shared data memory region for a second application in parallel with the first application through a second instance of the para-virtualized user library linked against the second application in the first domain. The second instance of the para-virtualized user library also accesses the synchronization structure. Access is prevented to the shared data memory region and the synchronization structure by other applications in one or more other domains having other levels of security per domain.

## Claims

### Claim 1

A method for synchronizing parallel applications in an asymmetric multi-processing system having multiple independent levels of security, the method comprising:
providing synchronized access to a shared data memory region for a first application through a first instance of a para-virtualized user library linked against the first application in a first domain having a first level of security, wherein the synchronized access is provided through a para-virtualized standard synchronization application programming interface implemented as a user library accessing a synchronization structure;
providing synchronized access to the shared data memory region for a second application in parallel with the first application through a second instance of the para-virtualized user library linked against the second application in the first domain having the first level of security, the second instance of the para-virtualized user library accessing the synchronization structure; and
preventing access to the shared data memory region and the synchronization structure by other applications in one or more other domains having other levels of security per domain.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
accessing the synchronization structure to coordinate the synchronized access between the first and second applications, wherein the synchronization structure is statically defined comprising: granule identifiers for a plurality of shared data memory granules, granule values, blocking conditions, and pending conditions.

### Claim 3 (depends on 2)

The method of claim 2, wherein each of the shared data memory granules is an independently lockable section of the shared data memory region having a lock status defined by the granule values, the blocking conditions comprise a list of blocking applications, and the pending conditions comprise a list of pending signals associated with each of the granule identifiers.

### Claim 4 (depends on 1)

The method of claim 1, wherein the para-virtualized user library comprises modified portable operating system interface functions presented to the first and second applications as standard synchronization application programming interfaces.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
configuring one or more separation kernels to prevent memory management unit modifications from changing memory allocation associated with the shared data memory region and the synchronization structure.

### Claim 6 (depends on 4)

The method of claim 4, wherein the modified portable operating system interface functions include a spinlock based synchronization function comprising:
receiving a lock request for a granule in the shared data memory region;
resolving an address of a granule identifier in the synchronization structure associated with the granule;
performing a test-and-set of a granule value in the synchronization structure associated with the granule identifier until the granule value is successfully written to lock the granule;
accessing data associated with the granule in the shared data memory region upon locking the granule; and
modifying the granule value in the synchronization structure to release the lock.

### Claim 7 (depends on 4)

The method of claim 4, wherein the modified portable operating system interface functions include an interrupt based synchronization function comprising:
receiving a lock request for a granule in the shared data memory region;
resolving an address of a granule identifier in the synchronization structure associated with the granule;
registering for an interrupt;
performing a test-and-set of a granule value in the synchronization structure associated with the granule identifier to lock the granule;
based on failing to lock the granule, suspending execution until the interrupt arrives and performing the test-and-set of the granule value after the interrupt arrives;
accessing data associated with the granule in the shared data memory region upon locking the granule;
modifying the granule value in the synchronization structure to release the lock; and
sending the interrupt to one or more other blocked processes upon releasing the lock.

### Claim 8 (depends on 7)

The method of claim 7, wherein sending the interrupt further comprises passing the interrupt as a virtual interrupt to a separation kernel of a same processing core.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
based on receiving the virtual interrupt at the separation kernel, sending a hardware interrupt from the separation kernel to one or more other separation kernels on one or more other processing cores in the first domain running the one or more other blocked processes.

### Claim 10 (depends on 1)

The method of claim 1, wherein the first domain comprises a plurality of processing cores, the synchronization structure is located in a synchronization memory region statically defined using an extensible markup language to binary parser and a linker, and the synchronization structure is loaded by a boot loader prior to releasing the processing cores of the first domain.

### Claim 11

An asymmetric multi-processing system having multiple independent levels of security, comprising:
a first domain having a first level of security; and
one or more other domains having other levels of security per domain;
wherein the first domain comprises one or more processing cores, a synchronization memory region, and a shared data memory region, the first domain configured to:
provide synchronized access to the shared data memory region for a first application through a para-virtualized user library linked against the first application, wherein the synchronized access is provided through a para-virtualized standard synchronization application programming interface implemented as a user library accessing a synchronization structure of the synchronization memory region;
provide synchronized access to the shared data memory region for a second application in parallel with the first application through a second instance of the para-virtualized user library linked against the second application, the second instance of the para-virtualized user library accessing the synchronization structure; and
prevent access to the shared data memory region and the synchronization structure by the one or more other domains.

### Claim 12 (depends on 11)

The asymmetric multi-processing system of claim 11, wherein the first domain is further configured to access the synchronization structure to coordinate the synchronized access between the first and second applications, and the synchronization structure is statically defined comprising: granule identifiers for a plurality of shared data memory granules, granule values, blocking conditions, and pending conditions.

### Claim 13 (depends on 12)

The asymmetric multi-processing system of claim 12, wherein each of the shared data memory granules is an independently lockable section of the shared data memory region having a lock status defined by the granule values, the blocking conditions comprise a list of blocking applications, and the pending conditions comprise a list of pending signals associated with each of the granule identifiers.

### Claim 14 (depends on 11)

The asymmetric multi-processing system of claim 11, wherein the para-virtualized user library comprises modified portable operating system interface functions presented to the first and second applications as standard synchronization application programming interfaces.

### Claim 15 (depends on 11)

The asymmetric multi-processing system of claim 11, further comprising:
a memory management unit; and
one or more separation kernels in the first domain configured to prevent modifications of the memory management unit from changing memory allocation associated with the shared data memory region and the synchronization structure.

### Claim 16 (depends on 14)

The asymmetric multi-processing system of claim 14, wherein the modified portable operating system interface functions include a spinlock based synchronization function configured to:
receive a lock request for a granule in the shared data memory region;
resolve an address of a granule identifier in the synchronization structure associated with the granule;
perform a test-and-set of a granule value in the synchronization structure associated with the granule identifier until the granule value is successfully written to lock the granule;
access data associated with the granule in the shared data memory region upon locking the granule; and
modify the granule value in the synchronization structure to release the lock.

### Claim 17 (depends on 14)

The asymmetric multi-processing system of claim 14, wherein the modified portable operating system interface functions include an interrupt based synchronization function configured to:
receive a lock request for a granule in the shared data memory region;
resolve an address of a granule identifier in the synchronization structure associated with the granule;
register for an interrupt;
perform a test-and-set of a granule value in the synchronization structure associated with the granule identifier to lock the granule;
based on failing to lock the granule, suspend execution until the interrupt arrives and perform the test-and-set of the granule value after the interrupt arrives;
access data associated with the granule in the shared data memory region upon locking the granule;
modify the granule value in the synchronization structure to release the lock; and
send the interrupt to one or more other blocked processes upon releasing the lock.

### Claim 18 (depends on 17)

The asymmetric multi-processing system of claim 17, wherein sending the interrupt further comprises passing the interrupt as a virtual interrupt to a separation kernel of a same processing core of the one or more processing cores.

### Claim 19 (depends on 18)

The asymmetric multi-processing system of claim 18, wherein based on receiving the virtual interrupt at the separation kernel, the separation kernel is further configured to send a hardware interrupt to one or more other separation kernels on one or more other processing cores in the first domain running the one or more other blocked processes.

### Claim 20 (depends on 17)

The asymmetric multi-processing system of claim 17, wherein the synchronization memory region is statically defined using an extensible markup language to binary parser and a linker, and the synchronization structure is loaded by a boot loader prior to releasing the one or more processing cores of the first domain.
