mem_diagram


\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usepackage{tikz-cd}
\usetikzlibrary{shapes,arrows}

\usepackage[outline]{contour}


\definecolor{amaranth}{rgb}{0.9,0.17,0.31}

\tikzset{global scale/.style={
    scale=#1,
    every node/.style={scale=#1}
  }
}

\newcommand{\tikzmark}[3][]{
\ifmmode
\tikz[remember picture,baseline=(#2.base)] \node [inner sep=0pt,#1](#2) {$#3$};
\else
\tikz[remember picture,baseline=(#2.base)] \node [inner sep=0pt,#1](#2) {#3};
\fi
}

\tikzset{table matrix/.style={draw=black,thick,inner sep=0,fill=white,matrix of nodes, nodes in empty cells, nodes={minimum width=35mm,minimum height=3mm,draw,outer sep=0,inner sep=0},}}
 
\begin{document}
\begin{tikzpicture}[text centered]
\matrix (m1) at (0,0) [table matrix,label={[align=center]90:{Memòria Procés 1}}]
{
|[fill=blue!25!white,minimum height = 0cm]|{\begin{tabular}{c} Pila\\ \contour{black}{$\downarrow$}\end{tabular}}\\
|[minimum height = 1cm]|{}\\
|[fill=amaranth,minimum height = 0.5cm]|{mmap}\\
|[minimum height = 1cm]|{}\\
|[fill=green!80!white,minimum height = 1cm]|{\begin{tabular}{c} \contour{black}{$\uparrow$}\\ Memòria dinàmica\end{tabular}}\\
|[fill=yellow,minimum height = 1cm]|{Variables globals}\\
|[fill=orange,minimum height = 1cm]|{Codi màquina}\\
};

\matrix (m3) at (5,4) [table matrix]
{
|[fill=amaranth,minimum height = 1cm]|{\begin{tabular}{c} shared\_mem \\ \texttt{(valor\_pi, clau)} \end{tabular}}\\
};

\matrix (m2) at (10,0) [table matrix,label={[align=center]90:{Memòria Procés 2}}]
{
|[fill=blue!25!white,minimum height = 0cm]|{\begin{tabular}{c} Pila\\ \contour{black}{$\downarrow$}\end{tabular}}\\
|[minimum height = 1cm]|{}\\
|[fill=amaranth,minimum height = 0.5cm]|{mmap}\\
|[minimum height = 1cm]|{}\\
|[fill=green!80!white,minimum height = 1cm]|{\begin{tabular}{c} \contour{black}{$\uparrow$}\\ Memòria dinàmica\end{tabular}}\\
|[fill=yellow,minimum height = 1cm]|{Variables globals}\\
|[fill=orange,minimum height = 1cm]|{Codi màquina}\\
};

\draw[-latex] (m3-1-1.west) -- ([yshift=0pt]m1-3-1.east);
\draw[-latex] (m3-1-1.east) -- ([yshift=0pt]m2-3-1.west);

%\foreach \x/\y in {1/0,2/1,3/2,4/3,6/OPEN\_MAX$-$1} {
%\node[anchor=east] at (dbtable-\x-1.west) {\textsf{\y}};
%}
\end{tikzpicture} 

\end{document}