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


10 December 1987

Mr. Ken Sheldon
|
Byte Magazine
70 Main Street
Peterborough, NH 03458
(603) 924-9281


Dear Mr. Williams,


To address the problems of multitasking understanding and portability within the small systems world, I propose a series of three short articles in which the reader actually builds his or her own portable multitasking environment.

The articles, each which could stand alone, will address two important needs of the mini- and micro-computer world:

Understanding Need:
First, mini- and micro-computer users are now realizing the benefits of multitasking their systems and are becoming increasingly interested. For years, users have wanted multitasking but not understood it. Programmers have needed it but not known how to implement it. The ``pop-up'' software and ``application-integrators'' found on the Macintosh and IBM PC indicate the need for multitasking but have not fully satisfied that need. Real and effective multitasking involves tricky synchronization and coding issues not commonly understood in the small systems world. Only recently are operating systems beginning to appear (Apple MultiFinder, Microsoft OS/2) which provide multitasking support. And as users begin to appreciate them, I speculate a growing need to know how to operate and program within a multitasking environment.

Portability Need:
Second, the few multitasking environments which do exist on small systems are often very complex; worse, they also demand special hardware which limit the portability of their applications. To be flexible and efficient, sophisticated applications require multiple tasks; yet, because of the poor multitasking constructs available, they quickly become bound to the operating system and the machine on which they were written. So as users begin taking advantage of multitasking, I speculate a growing need for portability and standard multitasking constructs.

My series, then, will explain the programming concepts and constructs of a multitasking environment, and construct a general-purpose multitasking environment which is portable to most stack-based languages and computers.

Build A Portable Multitasking Environment in ``C'' will be divided into three articles: Switching Contexts, Organizing a Task Force, and Managing Resources. The code for the multitasking environment is already designed and suitable for distribution on BIX. To date, the code for the first article runs successfully on both MS-DOS and UNIX operating systems (see the UNIX ``man'' page (enclosed) for a brief synopsis of what it does). With it alone, the reader can write programs which have multiple threads of execution and are portable between MS-DOS and UNIX. Though this in itself is a major achievement, the code also serves as an important addition to both operating systems (MS-DOS provides no concurrency mechanisms and UNIX provides no or little shared memory).

(See the outline and sample text (enclosed) for more information about the first article.)

I have come to write this package for the same reason I expect your readers will be interested in it. I am one of your regular subscribers and an undergraduate at MIT. Funded by a competitive research grant from the Institute, I am developing a distributed operating system for heterogeneous small-systems environments. The operating system requires a solid but portable multitasking basis.

If you decide to go with this article (or perhaps the series), I look forward to working with you so that I can tailor the article to your requirements.


Sincerely,


Mike Parker
MIT - 1989

Figure: Outline for Switching Contexts
\begin{figure}\par
\begin{description}
\par
\item[Introduction] -
\begin{en...
...
\end{enumerate}\par
\item[Conclusions] --
\par
\end{description}
\end{figure}

Figure: Sample Text from Switching Contexts
\begin{figure}\par
\begin{quote}
\begin{center}\bf
Build A \\
{\em Porta...
...nto a single, powerful {\bf control construct}...
\par
\end{quote}
\end{figure}