|
|
|
@ -277,7 +277,7 @@ The system maintains three buffers, each one the size of a segment.
|
|
|
|
|
Two buffers are used to alternate, so that one is being written to
|
|
|
|
|
secondary memory while the other one (the \emph{active one}) is used
|
|
|
|
|
to receive pages in main memory. The third buffer is used to read
|
|
|
|
|
back and compare what was written to secondary storage. Two counter,
|
|
|
|
|
back and compare what was written to secondary storage. Two counters,
|
|
|
|
|
$M$ and $N$, each with an initial value of $0$ is kept for each of two
|
|
|
|
|
ordinary segment buffers. $M$ indicates the first free page in the
|
|
|
|
|
active segment buffer, or equivalently, the number of pages that have
|
|
|
|
@ -302,7 +302,7 @@ page, $N$ is incremented and the page is marked as writable.
|
|
|
|
|
As mentioned above, when $M+N$ reaches the value corresponding to the
|
|
|
|
|
number of available pages in the segment buffer, a checkpoint is
|
|
|
|
|
triggered. The initial operation of a checkpoint is called an
|
|
|
|
|
\emph{atomic flip} which involves two segment buffer that we shall
|
|
|
|
|
\emph{atomic flip} which involves two segment buffers that we shall
|
|
|
|
|
call $A$ and $B$. $A$ is the current active segment buffer with $M_A+N_A$
|
|
|
|
|
having reached its ceiling and $B$ is the next one to be activated
|
|
|
|
|
with its $M_B$ and $N_B$ equal to $0$.
|
|
|
|
|