[comp.sys.mac.system] Preemptive/Cooperative, and the future of the MAC

dgb@unislc.uucp (Douglas Barrett) (04/04/91)

The difference of preemptive vs cooperative multitasking is one
of fairness, and one of ease of programming.  Only a preemptive
multitasking OS can establish a priority of processes and *guarantee*
access according to priority.  In a strictly cooperative environment
any process (job, task) *can* hog all of its resources indefinitely.
This situation *can* cause problems for processes trying to conform
to timing requirements.  A common example of these types of problems
are slow character based communication software which can time out
if there is no activity for a period of time.

Both cooperative and preemptive OSes can (and do) fail in these
situations.  But examining the failures is instructive.  In all
cases it is only important to consider situations where the
machine in question has enough capacity to run all processes.
In a preemptive environment a process would fail if there are
too many other processes running at a higher priority.  This
can be addressed by adjusting the priority of the affected process.
None of the other processes need be modified, and the internal
workings of none of the processes need be changed.  In a
cooperative OS a failure could arise when any one process denied
access to the other processes too long.  Now it could be that the
offending process's timing characteristics are controlled by events
external to it (a compiler for example).  So in this case the only
choices are not to compile difficult programs, or rewrite the compiler
to somehow always insure that it always gives up the processor in
some maximum time.  This modification would be easy if the OS provided
the service - or nearly impossible if it did not.  But the point is
that the changes involve a recompile.  This is impossible with most
purchased products.

So in a cooperative environment the onus is on the programmer, and
writing good, friendly software can be very difficult.  The
functionality needs to be replicated in each process, making each
process larger.  Standards are impossible.  In a preemptive OS the
programmer doesn't have to worry about other processes.  The OS will
stop his process and restart it fairly.

Now what does all of this mean on a single user machine.  To me it is
clear that there is a trade off, and a cross over point.  Cooperative
OSes are simpler (therefore potentially smaller, faster and more
robust) while the processes are more complicated (therefore potentially
larger, slower and less robust).  If we assume a machine running only
a few simple processes a cooperative OS would probably suffice and could
offer a cost advantage.  But for the power user who whats to run
complicated software preemptive becomes a necessity, and eventually offers
a cost advantage.

My feeling is that a 25MHz '030 machine is too much to be restricted to
the MAC OS.  I think Apple knows this and I think most people know this.
I think that the MAC is under attack from all directions.  Atari and
Commadore offer many of the same features of the MAC cheaper.  Windows is
for real and so is PS2, and they have more third party everything.  The
MAC may be cloned (sure Apple will sue, but money spent on law suits is
money not spent on technology).  Worksations are moving down into the MAC
price range.  I don't think there is enough expansion of the pc market to
allow Apple to continue its present strategy under these attacks.  But if
Apple puts a UNIX derivative on the MAC, then explain to me why it is worth
more than a 33MHz '386 machine running UNIX.  And what happens to software
standardization and the computer that people really use?  But the BIG
question is (ironically) can *Apple* survive the change from a closed,
proprietary, margins driven company to an open, quantity driven one? 
Apple started as a low cost, open alternative to the large companys of the
day, so maybe they can.  But maybe they are too long in the tooth to
remember, or even care.

----------------------------------------------------------------------
Douglas Barrett                             speaking only for himself.
UNIX Systems Programmer
UNISYS, Salt Lake City

weave@brahms.udel.edu (Ken Weaverling) (04/07/91)

In article <1991Apr3.173623.17264@unislc.uucp> 
    dgb@unislc.uucp (Douglas Barrett) writes:


[ Loads of dribble explaining diff between cooperative and preemptive multi-
  tasking deleted]

[ Mac attack deleted...]

Ah, isn't Windows cooperative multi-tasking as well?!


-- 
>>>---> Ken Weaverling  >>>---->  weave@brahms.udel.edu

jyen@Apple.COM (John Yen) (04/08/91)

Douglas Barrett writes:
> But the BIG
> question is (ironically) can *Apple* survive the change from a closed,
> proprietary, margins driven company to an open, quantity driven one?
> Apple started as a low cost, open alternative to the large companys of the
> day, so maybe they can.  But maybe they are too long in the tooth to
> remember, or even care.

We remember.  (Lookit that geezer, 25 years old and still walking...:-) )
We care.

John Yen  jyen@apple.com  7.0 kernel test team
Disclaimer: #include <disclaimer.h>
Oh, chill out, I'm just reading while I scarf dinner.  I'll get back to I/O
in a couple minutes...:-)

urlichs@smurf.sub.org (Matthias Urlichs) (04/09/91)

In comp.sys.mac.system, article <12955@goofy.Apple.COM>,
  jyen@Apple.COM (John Yen) writes:
< Douglas Barrett writes:
< >
< > Apple started as a low cost, open alternative to the large companys of the
< > day, so maybe they can.  But maybe they are too long in the tooth to
< > remember, or even care.
< 
< We remember.
< We care.

Any ideas on how to convince the rest of Apple (esp. the legal beagles)
to share that view?

-- 
Matthias Urlichs -- urlichs@smurf.sub.org -- urlichs@smurf.ira.uka.de     /(o\
Humboldtstrasse 7 - 7500 Karlsruhe 1 - FRG -- +49-721-621127(0700-2330)   \o)/