\item simple Beispiel-Implementierung basierend auf MPI: \begin{itemize}
\item Zugriff auf globale Daten dürfen nur unter einem Lock (für Datenstrukturen, nicht Seiten!) erfolgen
\item\enquote{Dämon}-Thread pro Instanz behandelt eingehende Nachrichten
\item\enquote{globaler} Adressbereich wird lokal mit \texttt{mmap} gemappt, dann Zugriff durch \texttt{mprotect} entzogen
\item Zugriff auf globalen Adressbereich $\rightarrow$ Fehler $\rightarrow$ Signalbehandlung: \begin{itemize}
\item Seite von anderer Instanz anfordern
\item Zugriff mit \texttt{mprotect} freigeben
\item falls nicht Eigentümer, Registrierung der Seite am Lock
\item Wiederholung der vorherigen, fehlgeschlagenen Operation
\end{itemize}
\item\texttt{lock}-/\texttt{unlock}-Verwaltung: pro Thread Stapel von \texttt{lock}/\texttt{unlock}-Paaren mit Seitenliste (enthält pro Eintrag Seitennummer und Zugriffsart), Abarbeitung bei Aufruf von \texttt{lock}/\texttt{unlock}
\item bei Multiple-Writer: Lock dient hauptsächlich der Verfolgung der Zugriffe
\item bei Single-Writer: Lock außerdem für exklusiven Zugriff (muss dann verteilt sein): wenn nicht Halter, Anforderung per expliziter Nachricht
\item\texttt{unlock} bei schreibendem Zugriff: Diff zwischen aktuellem Zustand der Seite und dem bei der Einlagerung (\begriff{Zwilling}) wird an Eigentümer übertragen
\item Optimierungsmöglichkeiten:\begin{itemize}
\item Sammeln von Diffs vor Versenden
\item Invalidierung (Senden der Änderungen an den Eigentümer) statt Aktualisierung (Broadcast der Änderungen an alle)
\item Read-Only-Zugriff (keine Invalidierung bei \texttt{unlock} notwendig)
\item Zugriff durch einen einzigen Thread (\texttt{lock} führt zum Wechsel des Eigentümers)
\item statt Umweg über Eigentümer, direkte Übertragung der Daten (und des Locks) an nächsten Zugreifer
\item zur Verwaltung mehrerer Änderungen können Vektoren logischer Uhren verwendet werden mit Maximum aus eigener und fremder Zeit (bei \texttt{lock}) und Erhöhen der eigenen Zeit (bei \texttt{unlock})
\end{itemize}
\end{itemize}
\end{itemize}
\item Beispiele für DSM-Implementierungen:\begin{itemize}
\item Übertragung der Daten zum benutzenden Thread:\begin{itemize}