Re: SMP basics ?

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

 



On Sat, Oct 19, 2002 at 11:22:27AM +0100, Anticipating a Reply wrote:
>   Can anybody tell me where I can find 
> pointers to Basic working of SMP systems 
> and linux working on it ?

I strongly recommend the book Unix Systems for Modern Architectures:
Symmetric Multiprocessing and Caching for Kernel Programmers by Curt
Schimmel. He covers the various methods of making a Unix kernel deal
with multiple processors and the various tradeoffs involved. He also
covers caching and how the various cache architectures affect smp
systems.

The downside to the book -- Linux is never mentioned. With a copyright
date of 1994, that is probably a good thing -- otherwise, he would just
say, "Linux doesn't run on SMP systems." :)

Once the concepts of mutexes and spinlocks are familiar, the kernel's
documentation, Documentation/spinlocks.txt, should provide the rest of
the kernel specific details.

A gentler introduction might be in either Linux Device Drivers, 2nd
edition, or Understanding the Linux Kernel, both published by O'Reilly.
I'd expect LDD to make the point that one should not perform any
blocking operations when holding a spinlock. UTLK should as well, but I
can't promise that now. :)

Of course, on 2.5 systems, one must also handle pre-empt. I recall
hearing that pre-empt mostly works, except for per-cpu data. Since this
includes C's auto variables, I'm a little confused at how pre-empt
kernels even boot. :) Any explanations would be appreciated.

Cheers

-- 
It seems the power has been robbed from the founding fathers and is now
firmly in the hand of the funding fathers -- Rik van Riel

Attachment: pgp00183.pgp
Description: PGP signature


[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