[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Processes/non-LIFO blocks in the next release of Self

> Can someone from the Self group provide some details on processes and
> process scheduling in the next realease of Self.
> Shaun M. Smith (ssmith@joplin.mpr.ca / ssmith%joplin.mpr.ca@relay.ubc.ca)

The VM provides a set of primitives to create and destroy processes
and to program timers.  In addition, there is one primitive (called
TWAINS for "Transfer [to a given process] and WAIt for Next Signal")
which does exactly what the name says.  The VM does absolutely no
scheduling; a TWAINS will transfer to the given process and run it
until some signal or special event occurs.  Typically, this would be
'timer expired', 'process yielded', or a SIGIO signal.

We have implemented a (rudimentary) scheduler and some basic
facilities like Semaphores and non-blocking I/O (all written in Self).
Right now, the scheduler is a simple preemptive round-robin scheduler
with no priorities, but since it is written in Self you can implement
whatever scheduling policy you want.

> Will the new system allow non-LIFO blocks?
> 	-- Bill

No.  As explained by Craig, you can emulate some of the functionality
with objects, and we feel that the benefits of non-LIFO blocks do not
justify the additional complexity of implementation.