Searcharxiv⌕ Search

arXiv subjects

Jordi Bataller Mascarell

Publications and source records attributed to Jordi Bataller Mascarell.

2 recordsLinked to original sources

Formal Definitions of Memory Consistency Models

Shared Memory is a mechanism that allows several processes to communicate with each other by accessing -- writing or reading -- a set of variables that they have in common. A Consistency Model defines how each process observes the state of the Memory, according to the accesses performed by it and by the rest of the processes in the system. Therefore, it determines what value a read returns when a given process issues it. This implies that there must be an agreement among all, or among processes in different subsets, on the order in which all or a subset of the accesses happened. It is clear that a higher quantity of accesses or proceses taking part in the agreement makes it possibly harder or slower to be achieved. This is the main reason for which a number of Consistency Models for Shared Memory have been introduced. This paper is a handy summary of [2] and [3] where consistency models (Sequential, Causal, PRAM, Cache, Processors, Slow), including synchronized ones (Weak, Release, Entry), were formally defined. This provides a better understanding of those models and a way to reason and compare them through a concise notation. There are many papers on this subject in the literature such as [11] with which this work shares some concepts.

cs.DC↗

Two Mutual Exclusion Algorithms for Shared Memory

In this paper, we introduce two algorithms that solve the mutual exclusion problem for concurrent processes that communicate through shared variables, [2]. Our algorithms guarantee that any process trying to enter the critical section, eventually, does enter it. They are formally proven to be correct. The first algorithm uses a special coordinator process in order to ensure equal chances to processes waiting for the critical section. In the second algorithm, with no coordinator, the process exiting the critical section is in charge to fairly elect the following one. In the case that no process is waiting, the turn is marked free and will be determined by future waiting processes. The type of shared variables used are a turn variable, readable and writable by all processes; and a flag array, readable by all with flag[i] writable only by process i. There is a version of the first algorithm where no writable by all variable is used. The bibliography reviewed for this paper is [4] and [3], all the rest is original work.

cs.DC↗