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>