mirror of
https://gitlab.cs.fau.de/ik15ydit/latexandmore.git
synced 2024-11-25 04:59:32 +01:00
62 lines
2.1 KiB
TeX
62 lines
2.1 KiB
TeX
\section{Puffer}
|
|
Frame = Im HS vorgesehener Platz zur Aufnahme eines Blocks $\rightarrow$ normalerweise so groß wie Block
|
|
|
|
Bei Zugriff auf Blöcke im HS müssen diese ggf eingelagert werden.
|
|
\subsection{Ersetzungsstrategie}
|
|
\begin{itemize}
|
|
\item wählt den zu verdrängenden Block aus
|
|
\item Ziel: Minimierung von physischen Zugriffen
|
|
\end{itemize}
|
|
|
|
\subsubsection{FIFO}
|
|
Block der am längsten im Puffer ist wird ersetzt.\\ $\rightarrow$ ungünstig
|
|
da häufig benutzte Blöcke gerade im Puffer bleiben sollen
|
|
|
|
\subsubsection{LFU (least frequently used)}
|
|
Block auf den am seltensten zugegriffen wird ersetzt.
|
|
\begin{itemize}
|
|
\item $-$ für sequentielles Lesen nicht brauchbar
|
|
\item $-$ hat ein Block einmal wieder zugegriffen bleibt der lange erhalten
|
|
\end{itemize}
|
|
|
|
\subsubsection{LRU (least recently used)}
|
|
\begin{itemize}
|
|
\item bewertetes Alter seit dem letzten Zugriff
|
|
\item quasi verkettete Liste aller Blöcke im Puffer, wo bei Verdrängung letzter Block der Kette ersetzt wird
|
|
\end{itemize}
|
|
\begin{figure}[H]
|
|
\begin{center}
|
|
\includegraphics[scale=0.7]{pics/lru.png}
|
|
\caption{LRU}
|
|
\end{center}
|
|
\end{figure}
|
|
\subsubsection{Clock}
|
|
LRU Verhalten mit einfacher Implementierung.
|
|
\textbf{Prinzip}:
|
|
\begin{itemize}
|
|
\item Benutzt(Dirty)-Bit eines Blocks im Puffer wird bei Zugriff auf
|
|
1 gesetzt
|
|
\item bei Verdrängung zyklischer Suche mit dem Auswahlzeiger:
|
|
\begin{itemize}
|
|
\item Falls Benutzt Bit = 1, wird es auf 0 gesetzt $\rightarrow$ Zeiger wandert zum nächsten Block
|
|
\item Falls Benutzt Bit = 0, Block wird ersetzt
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
\subsection{Dienste einer Pufferverwaltung}
|
|
Einkapselung der Pufferverwaltung:
|
|
\begin{lstlisting}[language=C]
|
|
char * Buffer::fix (BlockFile File, int BlockNo, char Mode);
|
|
\end{lstlisting}
|
|
\begin{itemize}
|
|
\item Block ist vor Verdrängung geschützt
|
|
\item \textbf{Mode} gibt an welcher Block nur gelesen oder auch
|
|
geändert werden soll
|
|
\end{itemize}
|
|
\begin{lstlisting}
|
|
void Buffer::unix (char * BufferAddresse)
|
|
\end{lstlisting}
|
|
\begin{itemize}
|
|
\item gibt Block im Puffer zur Ersetzung frei
|
|
\end{itemize}
|