# US 8,543,773 B2 · Distributed shared memory

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

- Number: US 8,543,773 B2
- Document ID: US8543773B2
- Status: Granted
- Kind: B2
- Application number: 12/197,766
- Filed: 2008-08-25
- Published: 2010-02-25
- Granted: 2013-09-24
- Earliest claimed: 2008-08-25
- Assignees: International Business Machines Corporation
- Applicants: Lior Aronovich; Ron Asher
- Inventors: Lior Aronovich; Ron Asher
- Web page: https://patentgrep.com/patent/US8543773B2

## CPC

- G06F 12/145: {the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism}
- G06F 9/524: {Deadlock detection or avoidance}
- G06F 12/08: in hierarchically structured memory systems, e.g. virtual memory systems
- G06F 12/0815: Cache consistency protocols
- G06F 2212/657: Virtual address space management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods for implementing a distributed shared memory (DSM) in a computer cluster in which an unreliable underlying message passing technology is used, such that the DSM efficiently maintains coherency and reliability. DSM agents residing on different nodes of the cluster process access permission requests of local and remote users on specified data segments via handling procedures, which provide for recovering of lost ownership of a data segment while ensuring exclusive ownership of a data segment among the DSM agents detecting and resolving a no-owner messaging deadlock, pruning of obsolete messages, and recovery of the latest contents of a data segment whose ownership has been lost.

## Claims

### Claim 1

A method for recovering ownership of a plurality of data segments in a distributed shared memory (DSM) having a plurality of distributed shared memory (DSM) agents using a processor device, comprising:
upon initiating a request for access to a requested data segment remotely connected and determining by a local DSM agent that the local DSM agent is not the owner of the requested data segment, an upgrade in an access permission to the requested data segment is required, and the local DSM agent has no ongoing messaging session with a remote DSM agent for the requested data segment:
initiating the messaging session by the local DSM agent by sending a message to a remote DSM agent that the local DSM agent is not the owner of the requested data segment; and
sending a response by the remote DSM agent to the local DSM agent granting ownership of the requested data segment to the local DSM agent after the remote DSM agent receives the message and determines from local parameters of the remote DSM agent that the remote DSM agent is not the owner of the requested data segment, wherein a predetermined remote DSM agent resolves a no-ownership deadlock by unblocking a request for a data segment.

### Claim 2 (depends on 1)

The method of claim 1, further including performing at least one of:
allowing users to obtain the access permission on the requested data segment when the ownership of the requested data segment is one of lost and delayed in the DSM, wherein the DSM is residing in a cluster having at least two cluster nodes that are remotely connected with each of the at least two cluster nodes containing one of the plurality of DSM agents, and
maintaining by each of the one of the plurality of DSM agents a local set of memory data segments and associated local parameters, which include the access permission and the ownership of the one of the plurality of segments by the one of the plurality of DSM agents.

### Claim 3 (depends on 1)

The method of claim 1, further including determining by the remote DSM agent that none of the plurality of data segments within a cluster have the ownership of the requested data segment.

### Claim 4 (depends on 1)

The method of claim 1, further including blocking all other requests on the requested data segment until one of ending the messaging session and performing a time out operation for a user requesting access to the requested data segment.

### Claim 5 (depends on 1)

The method of claim 1, further including ending the messaging session upon one of receiving the response from the remote DSM agent and performing a time out operation for a user requesting access to the requested data segment.

### Claim 6 (depends on 1)

The method of claim 1, further including performing one of:
maintaining as the local parameters for the local DSM agent a local-message-identification (ID) to which the local DSM agent assigns a local unique identification (ID) upon issuing the request for access to the requested data segment,
maintaining as the local parameters for the remote DSM agent a remote-message-identification (ID) to which the local DSM agent assigns the local unique identification (ID) received in the request for access to the requested data segment, and
assigning a value to the local-message-ID inducing an order of values for arranging messages according to an order of generation.

### Claim 7 (depends on 6)

The method of claim 6, further including determining by the local DSM agent that the message is obsolete and does not process the message sent from the remote DSM agent when the local DSM agent receives the message and determines that the remote-message-ID conveyed in the message is of an order less than the remote-message-ID maintained by the local DSM agent for the requested data segment.

### Claim 8 (depends on 1)

The method of claim 1, further including upgrading the access permission held by the local DSM agent for the requested data segment upon reception of the response sent by the remote DSM agent for granting ownership of the requested data segment to the local DSM agent only during the times the local DSM agent is waiting for the response, wherein the messages is disregarded if received after the user requesting access times out.

### Claim 9 (depends on 8)

The method of claim 8, further including upgrading the access permission held by the local DSM agent for the requested data segment by performing at least one of:
switching from no permission to one of shared permission and exclusive permission for the requested data segment, and
switching from the shared permission to the exclusive permission for the requested data segment.

### Claim 10

A computer program product for recovering ownership of a plurality of data segments in a distributed shared memory (DSM) having a plurality of distributed shared memory (DSM) agents in a computing storage system using a processor device, the computer program product comprising a non-transitory computer-readable storage medium having computer-readable program code portions stored therein, the computer-readable program code portions comprising:
upon initiating a request for access to a requested data segment remotely connected and determining by a local DSM agent that the local DSM agent is not the owner of the requested data segment, an upgrade in an access permission to the requested data segment is required, and the local DSM agent has no ongoing messaging session with a remote DSM agent for the requested data segment
a first executable portion for initiating the messaging session by the local DSM agent by sending a message to a remote DSM agent that the local DSM agent is not the owner of the requested data segment; and
a second executable portion for sending a response by the remote DSM agent to the local DSM agent granting ownership of the requested data segment to the local DSM agent after the remote DSM agent receives the message and determines from local parameters of the remote DSM agent that the remote DSM agent is not the owner of the requested data segment, wherein a predetermined remote DSM agent resolves a no-ownership deadlock by unblocking request for a data segment.

### Claim 11 (depends on 10)

The computer program product of claim 10, further including a third executable portion for performing at least one of:
allowing users to obtain the access permission on the requested data segment when the ownership of the requested data segment is one of lost and delayed in the DSM, wherein the DSM is residing in a cluster having at least two cluster nodes that are remotely connected with each of the at least two cluster nodes containing one of the plurality of DSM agents, and
maintaining by each of the one of the plurality of DSM agents a local set of memory data segments and associated local parameters which include the access permission and ownership of the one of the plurality of segments by the one of the plurality of DSM agents.

### Claim 12 (depends on 10)

The computer program product of claim 10, further including a third executable portion for determining by the remote DSM agent none of the plurality of data segments within a cluster have the ownership of the requested data segment.

### Claim 13 (depends on 10)

The computer program product of claim 10, further including a third executable portion for blocking all other requests on the requested data segment until one of ending the messaging session and performing a time out operation for a user requesting access to the requested data segment.

### Claim 14 (depends on 10)

The computer program product of claim 10, further including a third executable portion for ending the messaging session upon one of receiving the response from the remote DSM agent and performing a time out operation for a user requesting access to the requested data segment.

### Claim 15 (depends on 10)

The computer program product of claim 10, further including a third executable portion for performing one of:
maintaining as the local parameters for the local DSM agent a local-message-identification (ID) to which the local DSM agent assigns a local unique identification (ID) upon issuing the request for access to the requested data segment,
maintaining as the local parameters for the remote DSM agent a remote-message-identification (ID) to which the local DSM agent assigns the local unique identification (ID) received in the request for access to the requested data segment, and
assigning a value to the local-message-ID inducing an order of values for arranging messages according to an order of generation.

### Claim 16 (depends on 15)

The method of claim 15, further including a fourth executable portion for determining by the local DSM agent that the message is obsolete and does not process the message sent from the remote DSM agent when the local DSM agent receives the message and determines that the remote-message-ID conveyed in the message is of an order less than the remote-message-ID maintained by the local DSM agent for the requested data segment.

### Claim 17 (depends on 10)

The computer program product of claim 10, further including a third executable portion for upgrading the access permission held by the local DSM agent for the requested data segment upon reception of the response sent by the remote DSM agent for granting ownership of the requested data segment to the local DSM agent only during the times the local DSM agent is waiting for the response, wherein the messages is disregarded if received after the user requesting access times out.

### Claim 18 (depends on 17)

The computer program product of claim 17, further including a fourth executable portion for upgrading the access permission held by the local DSM agent for the requested data segment by performing at least one of:
switching from no permission to one of shared permission and exclusive permission for the requested data segment, and
switching from the shared permission to the exclusive permission for the requested data segment.

### Claim 19

A system for recovering ownership of a plurality of data segments in a distributed shared memory (DSM) having a plurality of distributed shared memory (DSM) agents comprising:
a plurality of cluster nodes remotely connected to form a computer cluster for the DSM to reside therein, wherein each of the plurality of cluster nodes has a processor, a memory coupled to the processor, local applications in communication with the processor and memory, and one of the plurality of DSM agents, and
the plurality of DSM agents in communication with the processor and the local applications maintains a local set of memory data segments and associated local parameters which include an access permission and the ownership for one of the plurality of segments by the one of the plurality of DSM agents, wherein the processor and the memory are configured to perform one of:
upon initiating a request for access to a requested data segment remotely connected and determining by a local DSM agent that the local DSM agent is not the owner of the requested data segment, an upgrade in a permission for access to the requested data segment is required, and the local DSM agent has no ongoing messaging session with a remote DSM agent for the requested data segment:
initiating the messaging session by the local DSM agent by sending a message to a remote DSM agent that the local DSM agent is not the owner of the requested data segment; and
sending a response by the remote DSM agent to the local DSM agent granting ownership of the requested data segment to the local DSM agent after the remote DSM agent receives the message and determines from local parameters of the remote DSM agent that the remote DSM agent is not the owner of the requested data segment, wherein a predetermined remote DSM agent resolves a no-ownership deadlock by unblocking a request for a data segment.

### Claim 20 (depends on 19)

The system of claim 19, wherein the processor and the memory are further configured for allowing users to obtain the access permission on the requested data segment when the ownership of the requested data segment is one of lost and delayed in the DSM.

### Claim 21 (depends on 19)

The system of claim 19, wherein the processor and the memory are further configured for determining by the remote DSM agent none of the plurality of data segments within a cluster have the ownership of the requested data segment.

### Claim 22 (depends on 19)

The system of claim 19, wherein the processor and the memory are further configured for blocking all other requests on the requested data segment until one of ending the messaging session and performing a time out operation for a user requesting access to the requested data segment.

### Claim 23 (depends on 19)

The system of claim 19, wherein the processor and the memory are further configured for ending the messaging session upon one of receiving the response from the remote DSM agent and performing a time out operation for a user requesting access to the requested data segment.

### Claim 24 (depends on 19)

The system of claim 19, wherein the processor and the memory are further configured for performing one of:
maintaining as the local parameters for the local DSM agent a local-message-identification (ID) to which the local DSM agent assigns a local unique identification (ID) upon issuing the request for access to the requested data segment,
maintaining as the local parameters for the remote DSM agent a remote-message-identification (ID) to which the local DSM agent assigns the local unique identification (ID) received in the request for access to the requested data segment, and
assigning a value to the local-message-ID inducing an order of values for arranging messages according to an order of generation.

### Claim 25 (depends on 24)

The system of claim 24, wherein the processor and the memory are further configured for determining by the local DSM agent that the message is obsolete and does not process the message sent from the remote DSM agent when the local DSM agent receives the message and determines that the remote-message-ID conveyed in the message is of an order less than the remote-message-ID maintained by the local DSM agent for the requested data segment.

### Claim 26 (depends on 19)

The system of claim 19, wherein the processor and the memory are further configured for upgrading the access permission held by the local DSM agent for the requested data segment upon reception of the response sent by the remote DSM agent for granting ownership of the requested data segment to the local DSM agent only during the times the local DSM agent is waiting for the response, wherein the messages is disregarded if received after the user requesting access times out.

### Claim 27 (depends on 26)

The system of claim 26, wherein the processor and the memory are further configured for upgrading the access permission held by the local DSM agent for the requested data segment by performing at least one of:
switching from no permission to one of shared permission and exclusive permission for the requested data segment, and
switching from the shared permission to the exclusive permission for the requested data segment.
