latexandmore/Puffer.tex

62 lines
2.1 KiB
TeX
Raw Normal View History

2014-02-13 16:44:53 +01:00
\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
2014-02-15 18:04:35 +01:00
\item bei Verdrängung zyklischer Suche mit dem Auswahlzeiger:
2014-02-13 16:44:53 +01:00
\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]
2014-02-15 18:04:35 +01:00
char * Buffer::fix (BlockFile File, int BlockNo, char Mode);
2014-02-13 16:44:53 +01:00
\end{lstlisting}
\begin{itemize}
2014-02-15 18:04:35 +01:00
\item Block ist vor Verdrängung geschützt
2014-02-13 16:44:53 +01:00
\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}