[squeak-dev] Are Squeak processes pre-emptive?

Lawson English lenglish5 at cox.net
Tue Apr 13 16:57:43 UTC 2010


Bert Freudenberg wrote:
> On 13.04.2010, at 18:46, Eliot Miranda wrote:
>>
>>
>> On Tue, Apr 13, 2010 at 9:24 AM, Randal L. Schwartz 
>> <merlyn at stonehenge.com <mailto:merlyn at stonehenge.com>> wrote:
>>
>>     >>>>> "Ang" == Ang BeePeng <beepeng86 at yahoo.com
>>     <mailto:beepeng86 at yahoo.com>> writes:
>>
>>     Ang> Are Squeak processes pre-emptive? Are infinite loop
>>     processes safe
>>     Ang> to run?
>>
>>     Squeak uses a simple priority scheme.
>>
>>     A Squeak process runs until it yields or it is interrupted by a
>>     higher
>>     priority process event.  When it is interrupted, it goes to the
>>     back of
>>     the queue, so when the higher priority process pauses or completes,
>>     other processes at the same priority are likely to be run instead.
>>
>>
>> IMO the sending of the preempted process to the back of the queue is 
>> a bug.  It means one cannot rely on cooperative scheduling within a 
>> priority level.  On the other hand, if the VM does not send the 
>> preempted process to the back of the queue there is nothing to 
>> prevent a higher-priority process altering the run queues of lower 
>> priority processes, achieving the same thing.  But it is flexible if 
>> the scheduler code does it rather than the VM.  One can imagine 
>> per-process priorities being examined so that by default a process 
>> gets moved to the back of its run queue when preempted, but if a 
>> process has a "don't preempt me" property it is not.
>
> My guess is this odd behavior was like an accidental round-robin 
> scheduler ... But changing it now might provoke rather obscure 
> problems, no?
>
> - Bert -
>

Should always be possible to offer alternative built-in schedulers, no?


Lawson




More information about the Squeak-dev mailing list