________________________________________
From: Venkatram Tummala [[email protected]]
Sent: Wednesday, September 15, 2010 1:37 PM
To: Smital Desai
Cc: Tayade, Nilesh; Kernel Newbies
Subject: Re: spin locks in uniprocessor system

On Wed, Sep 15, 2010 at 12:27 AM, Smital Desai 
<[email protected]<mailto:[email protected]>> wrote:

Thanks and Regards
 Smital Desai
________________________________________
From: Tayade, Nilesh 
[[email protected]<mailto:[email protected]>]
Sent: Wednesday, September 15, 2010 12:35 PM
To: Smital Desai; Kernel Newbies
Subject: RE: spin locks in uniprocessor system

> -----Original Message-----
> From: 
> [email protected]<mailto:[email protected]> 
> [mailto:kernelnewbies-<mailto:kernelnewbies->
> [email protected]<mailto:[email protected]>] On Behalf Of Smital Desai
> Sent: Wednesday, September 15, 2010 11:58 AM
> To: Kernel Newbies
> Subject: spin locks in uniprocessor system
>
> Hi everyone,
>
> It's an extract in LDD3 , regarding spink lock. I have put my query
> in brackets.
>
> Spinlocks are, by their nature, intended for use on multiprocessor
> systems, although a uniprocessor workstation running a preemptive
> kernel behaves like SMP, as far as concurrency is concerned.
> ( I need to understand , how this is true with an example preferably
> )

>>On uniprocessor system even if you have a task scheduled, the interrupt
>>can still come and should be handled by that processor. So let's say you
>>get a timer interrupt - the schedule() will be called on return and if
>>there is any higher priority task waiting, your previous task can get
>>scheduled out.
>>This is referred to as pseudo concurrency (Please refer Robert Love).

    ok .. i might sound silly but in this case too.. When the second task tries 
to acquire
    the same spin lock , it will again cause the processor to spin continuously 
hogging it completely ..
    then how does the first task gets a chance to execute and release the spin 
lock.

The second task will eventually be context switched out. And at some point the 
process holding the spinlock will get a chance to run & it will release the 
spinlock eventually. Having said that, whenever the second process executes, it 
will keep spinning waiting for the spinlock. Thats why, it is not a good idea 
to use spinlocks in  a uniprocessor environment. Think Correctness Vs. 
Efficiency. Spinlocks are required to ensure CORRECTNESS in a uniprocessor 
environment with preemption enabled. However, spinlocks are not the most 
efficient synchronization primitives that should be used in a uniprocessor 
environment.

Thanks a  lot Venkat and Nilesh  :)

On UP, spin_lock is defined as preempt_disable, and spin_unlock is defined as 
preempt_enable
I was thinking that only interrupt can conetxt switch the spin lock holding 
process out so my job should be done when i disable interrupts as soon as i 
hold the lock,  but  i forgot the fact that in case of  preemptive 
multitasking, the operating system kernel can also initiate a context switch to 
satisfy the scheduling policy's priority constraint, thus preempting the active 
task.

Note that even in multi-processor environments, spinlocks are used in cases 
where the level of the contention of the lock is usually low. Because here too, 
the process wastes CPU cycles by waiting for the spinlock. If the contention is 
high, the wastage will increase.

Venkat , can you please elaborate more on determining level of the contention 
of the lock on UP / MP Systems ?

Regards,
Venkatram Tummala


>
> If a nonpreemptive uniprocessor system ever went into a spin on a
> lock, it would spin forever; no other thread would ever be able to
> obtain the CPU to release the lock. For this reason, spinlock
> operations on uniprocessor systems without pre-emption enabled are
> optimized to do nothing, with the exception of the ones that change
> the IRQ masking status.
> ( I don't get the meaning of last sentence "with the exception of
> ......" Please can somebody explain )
>

>>I am not sure about this statement, though. Would appreciate if someone
>>can provide some pointers.

>
> Thanks and Regards
>  Smital Desai
>


--
Thanks,
Nilesh





______________________________________________________________________

This Email may contain confidential or privileged information for the intended 
recipient (s) If you are not the intended recipient, please do not use or 
disseminate the information, notify the sender and delete it from your system.

______________________________________________________________________

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [email protected]<mailto:[email protected]>
Please read the FAQ at http://kernelnewbies.org/FAQ



______________________________________________________________________

This Email may contain confidential or privileged information for the intended 
recipient (s) If you are not the intended recipient, please do not use or 
disseminate the information, notify the sender and delete it from your system.

______________________________________________________________________

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [email protected]
Please read the FAQ at http://kernelnewbies.org/FAQ

Reply via email to