Subject: Re: Floating point in the kernel
To: None <tech-kern@netbsd.org>
From: Eduardo E. Horvath <eeh@one-o.com>
List: tech-kern
Date: 09/19/1998 13:22:53
On Sat, 19 Sep 1998, Jukka Marin wrote:

> I see.  On the Amiga, programs can be preempted as well, but the priorities
> are never altered by the system.  For example, there's a process (actually,
> it's a task (a subset of process, in Amiga terms) called input.device which
> handles keyboard and mouse input.  This task runs at priority of 20, which
> is high enough for it to get all the CPU it needs.  Thanks to this, the
> Amiga mouse pointer always moves smoothly, no matter how busy the system
> gets.  Makes it feel kind of annoying when the mouse pointer in X stops
> every time the machine is paging heavily (which seems to happen quite often
> on my machines, sigh).

The primary difference is that AmigaOS has no real kernel and everything
is preemptable always, unless interrupts or scheduling are explicitly
disabled to protect critical section code.  That and the absense of VM
means that the highest priority task will always be the one with the CPU.

OTOH unix has traditionally had a non-premptable kernel.  This is
essentially the same as cooperative multi-tasking.  So if some process has
decided to do some directory hunting, it will keep the CPU until it
finishes or blocks waiting I/O no matter whether a higher priority process
has just become active.  SVR4 added `preemption points' where kernel
activity that could take a long time periodically checks to see if it
should be preempted.  (Solaris, strangely enough, is allegedly fully
preemptable but emulates the standard unix behavior.)

=========================================================================
Eduardo Horvath				eeh@one-o.com
	"I need to find a pithy new quote." -- me