Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 04 Jun 1996 22:11:36 -0700
From:      "Michael L. VanLoon -- HeadCandy.com" <michaelv@HeadCandy.com>
To:        "Justin T. Gibbs" <gibbs@freefall.freebsd.org>
Cc:        Sean Eric Fagan <sef@kithrup.com>, smp@freebsd.org
Subject:   Re: Unix/NT synchronization model (was: SMP progress?) 
Message-ID:  <199606050511.WAA25213@MindBender.HeadCandy.com>
In-Reply-To: Your message of Tue, 04 Jun 96 16:53:02 -0700. <199606042353.QAA23687@freefall.freebsd.org> 

next in thread | previous in thread | raw e-mail | index | archive | help

>>But maybe I'm not stating myself clearly. :-) What I'm really after is
>>recommendations on where I should look if I want to see how another
>>SMP Unix implements synchronization controls.  I just want to find out
>>how other people have implemented it.  All I know is Windows NT (SMP,
>>not in general, of course), and I want to see a contrasting
>>implementation.

>Aren't you really asking about thread and process syncronization?  This is
>an issue regardless of whether the system is SMP.

Well, yes, they're not strictly related.  But, I have yet to see a
non-SMP Unix where they cared about such things.

So, in reality (in my mind, anyway -- whether that's reality is
subject for a different debate... ;-), a decent SMP Unix precedes good
process/thread synchronization facilities, and an SMP Unix with lousy
process/thread synchronization facilities would probably suck at being
SMP.  (Does that make sense?)

Anyway, the way I see it you need *some* kind of synchronization to
get the kernel running MP.  What would be the most beneficial
synchronization primatives to get the kernel running?  I don't know --
I think it's pretty obvious my kernel MP experience is about this big:
-><-.  I can think abstractly about what it would take to make such a
thing -- I'm just struggling a little on the actual implementation.

Terry posted a very interesting little tome today on this subject.
Now, if I can get him to boil it down to pictures and words I can
understand, I'll be in really good shape. :-)

Anyway, from what he said, it sounds like I have the right concepts in
place in my head.  I just need to work on filling them out.  I'll go
read some books and some code instead of bugging this list with a
whole bunch more questions, though. :-)

>I've also only dealt with the NT implementations of critical sections and
>mutexes, and unlike the rest of the win32 API, it seems they did a fairly
>good job of it (although there are some additional scheduling controls I
>wish were provided).

Yes, in general I think the NT kernel has a lot of cool things going
for it.  It's all the gunky Windows-based API layers above it that
make NT so bloated.  I wouldn't mind seeing userland process/thread
synchronization facilities like those in NT.

Which is why I want to see how it's done in a modern Unix.  Maybe
there's a "better" way.  Or, at least a more "standard" way.  It would
be kinda dumb to put together a bunch of sync stuff that looks like
NT, nice as it might be, when everything else written for an MP or
threaded Unix works totally different.  I don't want to be locked into
an NT paradigm.

-----------------------------------------------------------------------------
  Michael L. VanLoon                                 michaelv@HeadCandy.com
        --<  Free your mind and your machine -- NetBSD free un*x  >--
    NetBSD working ports: 386+PC, Mac 68k, Amiga, Atari 68k, HP300, Sun3,
        Sun4/4c/4m, DEC MIPS, DEC Alpha, PC532, VAX, MVME68k, arm32...
    NetBSD ports in progress: PICA, others...

   Roll your own Internet access -- Seattle People's Internet cooperative.
                  If you're in the Seattle area, ask me how.
-----------------------------------------------------------------------------



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199606050511.WAA25213>