There are many models for accessing memory: PRAM, Actor Model, Petri Nets, Tuple Spaces, Scoop, Process calculi, etc.
...
Semaphores are used to control access to resources by multiple processes in a concurrent system. A trivial semaphore is a plain variable that is changed depending on programmer-defined conditions.
"Add UML Diagram here" see uni ulm presentation page 16
Heap/ Stack
The program’s machine instructions (e.g. executable code) are stored in the text area. Global and static data are stored in initialized/ uninitialized data. The “malloc” operator allocates memory on the heap, released by the “free” operator. Therefore, memory allocated on the heap is always where space is left on the heap. Memory holes are the consequence. The stack contains all the automatic, non-static variables and is implemented as “least in first out” structure. The operator “push” allocates memory on the stack, “pop” releases the last allocated element from stack.
...