Processes/non-LIFO blocks in the next release of Self
urs at otis.stanford.edu
Fri Dec 14 18:13:33 UTC 1990
> Can someone from the Self group provide some details on processes and
> process scheduling in the next realease of Self.
> Shaun M. Smith (ssmith at joplin.mpr.ca / ssmith%joplin.mpr.ca at 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.
More information about the Self-interest