mirror of
https://github.com/dhil/phd-dissertation
synced 2026-03-13 11:08:25 +00:00
Summary
This commit is contained in:
31
thesis.tex
31
thesis.tex
@@ -4944,7 +4944,7 @@ The $\Absurd$ computation term is used to coerce the return type
|
|||||||
$\ZeroType$ of $\Fail$ into $\alpha$. This coercion is safe, because
|
$\ZeroType$ of $\Fail$ into $\alpha$. This coercion is safe, because
|
||||||
$\ZeroType$ is an uninhabited type.
|
$\ZeroType$ is an uninhabited type.
|
||||||
%
|
%
|
||||||
An interpretation of $\Fail$ amounts to implementing an exception
|
An interpretation of $\Exit$ amounts to implementing an exception
|
||||||
handler.
|
handler.
|
||||||
%
|
%
|
||||||
\[
|
\[
|
||||||
@@ -6644,11 +6644,30 @@ We can now plug it all together.
|
|||||||
\ea
|
\ea
|
||||||
\]
|
\]
|
||||||
%
|
%
|
||||||
Alice makes a hard copy of the file \texttt{ritchie.txt} as
|
Alice copies the file \texttt{ritchie.txt} as \texttt{ritchie}, and
|
||||||
\texttt{ritchie}, and subsequently removes the original file, which
|
subsequently removes the original file, which effectively amounts to a
|
||||||
effectively amounts to a roundabout way of renaming a file. Bob makes
|
roundabout way of renaming a file. It is evident from the file system
|
||||||
a soft copy of the file \texttt{hamlet} as \texttt{act3}, meaning
|
state that the file is a hard copy as the contents of
|
||||||
both names share the same i-node with index $2$.
|
\texttt{ritchie.txt} now reside in location $3$ rather than location
|
||||||
|
$1$ in the data region. Bob makes a soft copy of the file
|
||||||
|
\texttt{hamlet} as \texttt{act3}, which is evident by looking at the
|
||||||
|
directory where the two filenames point to the same i-node (with index
|
||||||
|
$2$), whose link counter has value $2$.
|
||||||
|
|
||||||
|
\paragraph{Summary} Starting from a simple file I/O model we seen how
|
||||||
|
the modularity of effect handlers enable us to develop a \UNIX{}-style
|
||||||
|
operating system in an incremental way by composing several handlers
|
||||||
|
to implement a basic file system, multi-user environments, and
|
||||||
|
multi-tasking support. Each incremental change to the system has been
|
||||||
|
backwards compatible with previous changes in the sense that we have
|
||||||
|
not modified any previously defined interfaces in order to support a
|
||||||
|
new feature. It serves as a testament to demonstrate the versatility
|
||||||
|
of effect handlers, and it suggests that handlers can be a viable
|
||||||
|
option to use with legacy code bases to retrofit functionality. The
|
||||||
|
operating system uses a total of 14 operations, which are being
|
||||||
|
handled by 12 handlers, some of which are used multiple times,
|
||||||
|
e.g. the $\environment$ and $\redirect$ handlers.
|
||||||
|
|
||||||
|
|
||||||
% \begin{figure}[t]
|
% \begin{figure}[t]
|
||||||
% \centering
|
% \centering
|
||||||
|
|||||||
Reference in New Issue
Block a user