[Vm-dev] Re: Where does process preemtion takes place?

Bert Freudenberg bert at freudenbergs.de
Mon Dec 10 16:21:35 UTC 2012


On 2012-12-10, at 16:39, Guillermo Polito <guillermopolito at gmail.com> wrote:

> But somehow if I run
> 
> [ [true] whileTrue: [ Transcript show: 'asd'; cr.] ] fork.
> 
> It gets preempted while it is running, and It does not make any yield...

You did not ask about user interrupt handling specifically before. "Preempting" means any suspending of a lower-priority process by a higher-priority one.

Pressing the interrupt key sets the interruptPending flag, which signals TheInterruptSemaphore (see checkForInterrupts). This resumes the interrupt watcher process.

- Bert -

> 
> On Mon, Dec 10, 2012 at 4:17 PM, Bert Freudenberg <bert at freudenbergs.de> wrote:
> 
> On 2012-12-10, at 14:22, Guillermo Polito <guillermopolito at gmail.com> wrote:
> 
> > Hi!
> >
> > I was looking at the process machinery in VMMaker and I can't find where the preemption of processes takes place...
> >
> > Can someone point me a place?
> 
> It happens in #transferTo:. This is called whenever a process is resumed because a semaphore got signaled (in which case the process that was waiting on the semaphore is resumed) or if the process stops working because of a wait / yield / suspend call (in which case #wakeHighestPriority determines the next process).
> 
> - Bert -
> 
> PS: no need to send a mail to both vm-dev and vm-beginners :)
> 
> _______________________________________________
> VM-beginners mailing list
> VM-beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
> 




More information about the Vm-dev mailing list