Despite the wide use of higher-level languages and environments, gaining a robust
understanding of operating systems (OS) fundamentals and training in the current design and
-implementation practices of OS remains a cornerstone goal of
+implementation practices of OS remains a cornerstone of
undergraduate computer science education.
% abstract/concrete
assumes the role of a user or programmer using an OS's
facilities~\cite{Bryant2002Computer}.
+% we don't really say about the benefits of the 'internal' approach here.
% is this too controversial for this audience?
-The approach advocated in this paper adopts a concrete approach and the internal
-perspective. Students who have been in the role of an
-OS designer bring a better understanding of how to use one; and students
-who have both studied, implemented, and evaluated core OS techniques obtain
+The approach advocated in this paper is concrete and adopts the internal perspective.
+Students who have studied, implemented, and evaluated core OS techniques attain
a deeper understanding than those who have merely studied them.
Finally, adopting a concrete approach brings significant secondary
benefits, including training in modern software development techniques
and tools. The C language remains the implementation language of choice
for operating system kernels and for many embedded systems.
-Practice and debugging skills in C, particularly using modern tools,
+Practice and debugging experience in C, particularly using modern tools,
not only increases students' ``market value,''~\cite{1292450} but provides students with
the insight that a low-level programming and runtime model is not incompatible
with high-level tools.
Designing course material for the internal and concrete
-approach is challenging for several reasons. While realistic,
+approach is challenging. While realistic,
assignments should be relatively simple and doable within a realistic time frame.
Whereas assignments should use current hardware architectures,
they must not impart too much transient knowledge.
This paper introduces Pintos, an instructional operating system kernel that
has been in use at multiple institutions for about 4 years. Pintos provides
-a bootable kernel for standard personal computers. We provide four
+a bootable kernel for standard x86-based personal computers. We provide four
structured assignments in which students implement a basic priority
scheduler, a multi-level feedback queue scheduler, a process-based
multi-programming system, page-based virtual memory
Although Pintos follows in the tradition of instructional operating systems
such as Nachos~\cite{Christopher1993Nachos}, OS/161~\cite{Holland2002New}, and
GeekOS~\cite{Hovemeyer2004Running},
-PortOS~\cite{Atkin2002PortOS}),
+PortOS~\cite{Atkin2002PortOS},
BLITZ~\cite{PorterOverview},
JOS~\cite{1088822}, or Yalnix~\cite{1088822},
we believe that it is unique in two