[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 (firstname.lastname@example.org / email@example.com)
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.