\documentstyle{article}

\begin{document}

\begin{flushright}
Michael B. Parker, MIT '89 \\
|\\
East Campus - Mun. 303 \\
3 Ames Street \\
Cambridge, MA 02139 \\
(617) 225-6303

\medskip

1 March 1987
\end{flushright}

\begin{flushleft}
Mr. Ken Sheldon\\
BYTE Senior Technical Editor\\
|\\
Byte Magazine \\
70 Main Street\\
Peterborough, NH 03458\\
(603) 924-9281, ext. 115\\
\bigskip
\bigskip
Dear Mr. Sheldon,\\
\medskip
\end{flushleft}

Here is the outline I promised you.  It details the content of my
article, \underline{Build A {\em Portable} Multitasking Environment in
``C''}.

{\bf The article addresses} the problems of multitasking {\em understanding}
and {\em portability} within the small systems world.  Through both
discussion and construction, the article will teach the reader about
the major terms, concepts, and applications of multitasking.  Included
with the manuscript will be a complete {\em portable} multitasking
environment which the reader may include in his or her own programs.

With regards to {\bf the outline}, \underline{Build A {\em Portable}
Multitasking Environment} \underline{in ``C''} will have introductory and
concluding paragraphs, as well as two body sections (addressing the
multitasking understanding and portability needs respectively).  The
first section, ``The Dimensions of Concurrent Processing'' will
concisely introduce the major concepts \& terms of concurrent
processing.  Though brief, this first section will insure that even
the non-programmer will be able to understand and appreciate the
second section.  The second section, ``The Mailbox Multitasker'', will
systematically introduce the {\em portable} multitasker I have written
in ``C''.  The section takes a bottom-up approach to `Mailbox', from
its lowest level of portability (and functionality) to its highest.

With the manuscript, I will also include roughly 8 {\bf illustrations}.  For
each of the 3 {\em portability layers} (see outline), I will include
one specifying the function call interface to the layer (similar to
the ``MAN'' page I included in the last letter), and another
illustrating the data structures the layer manages.  I will also 
add a couple of illustrations for the concepts introduced in the
``Dimensions of Concurrent Processing''.

Finally, I will include the disk of source- and compiled-code
for {\bf the multitasker} described in the article, so you may distribute
it on BIX.  It will run on the IBM PC and UNIX machines, and, with
little modification, on almost any other machine with a ``C''
compiler.  This is a valuable piece of software.  Commercial packages
{\em without} the source code and which are {\em not} portable sell
for several hundred dollars (for example, the LIFEBOAT TimeSlicer
lists at \$295, or \$1000 with source code).  When you distribute this
package on BIX, I would like it to treated as a ``shareware''
product.\footnote{Anyone can freely copy it, but if they find they
use it a lot, they are {\em asked} to become a registered owner at a
small fee (about \$25).}

As far as {\bf length} of the article goes, I am aiming for a concise 12
pages\footnote{1 page = 250 words}.  Roughly, the first 1/4th of the
article will be spent illuminating the ``Dimensions of Concurrent
Processing'', while the remaining 3/4ths will focus on ``The Mailbox
Multitasker'' (1/4th for each of the 3 portability layers).

As far as {\bf time} goes, I will finish the article over the MIT
spring break, March 21-25.  This is the only time I will have to
really work on the article before the semester ends, so it is
important we get to confirm arrangements before then.

What follows is the outline for your review.  Thank you for your time
and interest in my article.  I look forward to working with you.


\medskip
Sincerely,
\bigskip
\begin{center}
Michael B. Parker
\end{center}

\newpage
{\center BYTE Article Outline:}
{\center \underline{Build A {\em Portable} Multitasking Environment in ``C''}}

\begin{description}

\item[Goals of this Article] (introduction - 1 paragraph)

\item[The Dimensions of Concurrent Processing] (1/4th article)\\
	Addressing the Understanding Need

	\begin{description}

	\item[Goals] -

		\begin{itemize}
		\item	Efficient Resource Management (via Multiplexing)

		\item Conceptual Simplicity (via Modules of Data AND
			Control)\\

			Both Sequential and Parallel Flow
		\end{itemize}

	\item[Tasks, Processors, and Context Switching] -

		\begin{itemize}
		\item	Fine \& Course Concurrent Processing
		\end{itemize}

	\item[Internal \& External Synchronization] -

		\begin{itemize}
		\item	Semaphores and Monitors
		\item	Interrupts, Critical Regions, Pre-emptive Code
		\end{itemize}

	\item[Internal \& External Communication] -

		\begin{itemize}
		\item	Shared Memory
		\item	Pipes
		\item	Message Passing (Ports \& Mailboxes)
		\item	Side-Effects
		\end{itemize}

	\item[Resource Management] -

		\begin{itemize}
		\item	Deadlock \& Livelock
		\item	Memory
		\item	Processors (Scheduling)
		\item	Local Devices
		\item	Networks
		\end{itemize}
	\end{description}

\item[The Mailbox Multitasker] (3/4ths)

	(Addressing the Portability Need)

	\begin{description}

	\item[Mailbox vrs. The Typical Multitasker] -

		(Sacrificing Efficiency for Simplicity: Portability and
Understandability)

	\item[Mailbox's Layers of Portability] -

		(Adding layers to match the desired functionality \&
		portability)

		\begin{description}

		\item[The Context Switching Layer]		(1/4th)

			\begin{itemize}
			\item	Threads
			\item	Creating \& Destroying Threads
			\item	Switching Between Threads
			\item	Other Nifty Functions
			\end{itemize}

		\item[The Task Organization Layer]	(1/4th)

			\begin{itemize}
			\item	Tasks, Messages, and Mailboxes
			\item	Passing Messages \& Scheduling Tasks (and visa versa)
			\item	Prioritizing Tasks
			\end{itemize}

		\item[The Resource Management Layer]		(1/4th)

			\begin{itemize}

			\item	Democratic or Monarchic Management?
			\item	Apparent or Transparent Management?
			\medskip
			\item	Dynamic Memory
			\item	Timer (Pre-emptive Multitasking!)
			\item	Keyboard and Printer
			\item	Disks
			\item	Communications
			\item	Screen and Mouse
			\end{itemize}

		\end{description}
	
	
	\item[Application Ideas \& Examples]

	\end{description}

\item[Multitasking and You] (conclusions - 1 paragraph)
\end{description}

\end{document}
