Re: spin locks in uniprocessor system

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 Hi,
Il 15/09/2010 9.05, Tayade, Nilesh wrote:
-----Original Message-----
From: kernelnewbies-bounce@xxxxxxxxxxxx [mailto:kernelnewbies-
bounce@xxxxxxxxxxxx] 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).

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.

It means that the following functions:
void spin_lock_irqsave(spinlock_t *lock, unsigned long flags);
void spin_lock_irq(spinlock_t *lock);

which on MP disable IRQs and spin, when compiled UP don't spin but still disable IRQs
regards
Luca Ellero

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux