|
|
|
@ -277,6 +277,27 @@ address space of a single process. Multics did not have a kernel, but
|
|
|
|
|
it still had the problem of full access to its own address space, so
|
|
|
|
|
that the stack could be overwritten by a defective end-user program.
|
|
|
|
|
|
|
|
|
|
\subsection{Mediocre input/output performance}
|
|
|
|
|
|
|
|
|
|
Recent research \cite{Barroso:2017:AKM:3069398.3015146} indicates that
|
|
|
|
|
the performance of input and output in traditional kernel-based
|
|
|
|
|
systems is not good enough for some of the modern devices now becoming
|
|
|
|
|
available. Recall that, in order to perform some input or output, an
|
|
|
|
|
application program must make a system call so that the kernel can
|
|
|
|
|
perform the operation on behalf of the application. Things are
|
|
|
|
|
organized this way in order to prevent application programs from
|
|
|
|
|
directly accessing devices so as to protect those devices from getting
|
|
|
|
|
incorrect controls. Thus, input and output requires a \emph{context
|
|
|
|
|
switch} which consists of the \emph{system call} itself, a change of
|
|
|
|
|
the \emph{page table} for address translation, and \emph{flushing the
|
|
|
|
|
cache} since virtual addresses are no longer valid. Such a context
|
|
|
|
|
switch typically takes around $1 \mu s$.
|
|
|
|
|
|
|
|
|
|
For typical devices such as disks, performance is not a problem
|
|
|
|
|
because these devices are very slow compared to the time it takes for
|
|
|
|
|
the context switch. However, for some modern storage devices the slow
|
|
|
|
|
context switch is a problem.
|
|
|
|
|
|
|
|
|
|
\section{Objectives for a Lisp operating system}
|
|
|
|
|
|
|
|
|
|
The three main objectives of a Lisp operating system correspond to
|
|
|
|
|