\begin{slide}{Verwaltung des Hauptspeichers}

(siehe HKF 3.2.2, S. 155ff)

Problem: im ausführbaren Programm
stehen Adressen von Daten (Variablen)
und (Unter-)Programmen.

\begin{itemize}
\item
  \emph{absolute} Adressen
  (bereits bei Herstellung (Kompilation) des Programms)

  nur Einprogramm-Modus, unflexibel, Speicherverwaltung ist Handarbeit
\item
  \emph{relative} Adressen in kompilierten Files,
  bei Verbinden (link) und Laden ersetzen durch absolute Adressen

  spart Re-Kompilation, trotzdem unflexibel
  (geladene Programme sind nicht verschieblich)
\end{itemize}
\end{slide}

\begin{slide}{Verwaltung (II)}

modernes Vorgehen:
\begin{itemize}
\item 
  benutze relative Adressierung \emph{in der CPU selbst}:

  jeder Speicherzugriff $m[i]$ wird übersetzt in $m[B+i]$,
  wobei $B$ ein CPU-Register (für Basis-Adresse) ist.

  Für jedes Programm beginnt (scheinbarer) Adressbereich bei 0,
  ($\Rightarrow$ Programme sind verschieblich)
\end{itemize}
dabei beachten:
\begin{itemize}
\item
  Zugriff/Addition von $B$ muß sehr schnell gehen,
\item
  Prozeß darf $B$ nicht ändern
\end{itemize}

Sprechweise: \emph{Prozeß} ist eine laufende Instanz eines 
\emph{Programms}.

\end{slide}
