[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
|