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?
Tx, Guille
On 2012-12-10, at 14:22, Guillermo Polito guillermopolito@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 :)
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...
On Mon, Dec 10, 2012 at 4:17 PM, Bert Freudenberg bert@freudenbergs.dewrote:
On 2012-12-10, at 14:22, Guillermo Polito guillermopolito@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@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
On 2012-12-10, at 16:39, Guillermo Polito guillermopolito@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@freudenbergs.de wrote:
On 2012-12-10, at 14:22, Guillermo Polito guillermopolito@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@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
Nope, I mean preempting. When my process has the priority and is the active process, it gets preempted by higher priority processes. But my process does not make any #yield.
On Mon, Dec 10, 2012 at 5:21 PM, Bert Freudenberg bert@freudenbergs.dewrote:
On 2012-12-10, at 16:39, Guillermo Polito guillermopolito@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@freudenbergs.de
wrote:
On 2012-12-10, at 14:22, Guillermo Polito guillermopolito@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@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
On 2012-12-10, at 18:44, Guillermo Polito guillermopolito@gmail.com wrote:
Nope, I mean preempting. When my process has the priority and is the active process, it gets preempted by higher priority processes. But my process does not make any #yield.
Okay. This still happens in checkForInterrupts, which gets called on a backwards jump (like in your while loop, see #longUnconditionalJump) and on various other occasions, like on message sends.
- Bert -
On Mon, Dec 10, 2012 at 5:21 PM, Bert Freudenberg bert@freudenbergs.de wrote:
On 2012-12-10, at 16:39, Guillermo Polito guillermopolito@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@freudenbergs.de wrote:
On 2012-12-10, at 14:22, Guillermo Polito guillermopolito@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@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
VM-beginners mailing list VM-beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
On Mon, Dec 10, 2012 at 6:55 PM, Bert Freudenberg bert@freudenbergs.dewrote:
On 2012-12-10, at 18:44, Guillermo Polito guillermopolito@gmail.com wrote:
Nope, I mean preempting. When my process has the priority and is the
active process, it gets preempted by higher priority processes. But my process does not make any #yield.
Okay. This still happens in checkForInterrupts, which gets called on a backwards jump (like in your while loop, see #longUnconditionalJump) and on various other occasions, like on message sends.
Great! Thank you very much!!
- Bert -
On Mon, Dec 10, 2012 at 5:21 PM, Bert Freudenberg bert@freudenbergs.de
wrote:
On 2012-12-10, at 16:39, Guillermo Polito guillermopolito@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@freudenbergs.de> wrote:
On 2012-12-10, at 14:22, Guillermo Polito guillermopolito@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@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
VM-beginners mailing list VM-beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
VM-beginners mailing list VM-beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/vm-beginners
vm-dev@lists.squeakfoundation.org