Add saving registers to the checkpointing process.

master
Hayley Patton 3 years ago
parent 428f8385c0
commit a77a97a30d

@ -217,7 +217,9 @@ A segment consists of:
\begin{itemize} \begin{itemize}
\item a \emph{header} containing metadata about the contents of the \item a \emph{header} containing metadata about the contents of the
segment, and segment,
\item all the registers of the processor, as observed when creating
the checkpoint, and
\item a certain number of pages that may have been modified since the \item a certain number of pages that may have been modified since the
previous checkpoint. previous checkpoint.
\end{itemize} \end{itemize}
@ -266,7 +268,8 @@ storage device. Here is how the system would be booted:
constructing the page map from the metadata of each segment. constructing the page map from the metadata of each segment.
\item Load initial pages into main memory, setting up the page tables \item Load initial pages into main memory, setting up the page tables
as appropriate. as appropriate.
\item Jump to the entry point of the system. \item Load the registers stored in the checkpointing segment to
continue execution, or jump to a default entry point of the system.
\end{enumerate} \end{enumerate}
Segments are removed from the head of the queue, by a procedure called Segments are removed from the head of the queue, by a procedure called
@ -307,16 +310,17 @@ 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 having reached its ceiling and $B$ is the next one to be activated
with its $M_B$ and $N_B$ equal to $0$. with its $M_B$ and $N_B$ equal to $0$.
First, the $N_A$ dirty pages not yet in the buffer are The flipping operation must be done atomically, i.e., all executing
marked as read-only. This operation must be done atomically, i.e., threads must be temporarily stopped. First, the $N_A$ dirty pages not
all executing threads must be temporarily stopped. The active segment yet in the buffer are marked as read-only. The active segment
buffer is then set to segment $B$. buffer is then set to segment $B$. Then the $N_A$ pages that
were dirty are copied to segment buffer $A$. Their respective unique page
Then the $N_A$ pages that were dirty are copied to segment buffer $A$. numbers are retrieved from the page map and copied to the header of
Their respective unique page numbers are retrieved from the page map segment buffer $A$. The registers of the machine prior to flipping
and copied to the header of segment buffer $A$. Once this is done, are then stored in the segment buffer. Once this is done, previously
the entire segment $A$ is written to the end of the queue on secondary stopped threads can continue execution, and the entire segment $A$ is
storage, and $M_A$ and $N_A$ are set to $0$. written to the end of the queue on secondary storage, and $M_A$ and
$N_A$ are set to $0$.
To avoid that the secondary storage device fills up with more and more To avoid that the secondary storage device fills up with more and more
checkpoint segments, an activity called \emph{cleaning} works in checkpoint segments, an activity called \emph{cleaning} works in

Loading…
Cancel
Save