\documentstyle[12pt]{report}
\pagestyle{myheadings}
\def\headlineaux{\sc Math 596/688 U: Operating Systems
\hrulefill
}
\markboth{\headlineaux}{\headlineaux}

\newcommand{\assignmentNumber}{4}
\newcommand{\outdate}{22 March, 1994}
\newcommand{\duedate}{31 March, 1994}
\newtheorem{theorem}{Theorem}

\begin{document}
\begin{titlepage}\begin{centerline}{\Huge \framebox{Burt Rosenberg}}
\end{centerline}\end{titlepage}

\section*{Problem Set \assignmentNumber \hfill{\parbox{3in}
    {\small\sc\begin{flushright} Out: \outdate
     \\ Due: \duedate\end{flushright}}}}

\subsection*{Reading}
\begin{enumerate}
\item Chapters 1--5 in Tanenbaum, {\em Modern Operating Systems.}
\item Either Chapters 1--9 in Leffler, McKusick, Karels and Quarterman,
{\em The Design and Implementation of the 4.3BSD Unix Operating System.}
\item Or Chapters 1--10 of Bach, {\em The Design of the Unix Operating System.}
\end{enumerate}

\subsection*{Assignment}
Operating systems must allocate and deallocate memory as requested by running programs.
%Operating systems must allocate memory requested by programs during their run.
An example all students will be familiar with is
the \verb.new. statment in Pascal. \verb.New. returns a pointer to memory large
enough to contain the new'ed item. Pascal uses \verb.free. to return
memory when the item is no longer needed. 
In C these calls are called \verb.malloc. and \verb.free..
The subsystem implementing these calls is call {\em memory management.}
A block of process virtual memory is set aside as a pool of raw memory 
for the process's memory management needs. This pool is called {\em the heap.}

Write a memory management system to allocate and free memory from the
heap.
Please provide:
\begin{enumerate}
\item Statement of design goals.
\item Overview of approach.
\item Calling behavior and user interface.
\item Detail view of data structures.
\item Pseudo-code for algorithms.
\end{enumerate}

\end{document}

