good stuff.
Don't know much about threading and stuff like that. With Linux 2.6 series they've introduced a NPTL threading model, which is suppose to be posix compatable. It's a in-kernel thing, always has been for Linux.. I think.
FreeBSD 5.x implimentation is suppose to be close to were Linux 2.4 was in terms of performance or something like that. I know FreeBSD's 4.x threading model completely blew... It was realy bad. They even imported Linux's threading model into FreeBSD to fix performance and compatability issues.
Most notably you had to do it for MySQL, which isn't suprising because it's so Linux-centric, but there were other more fundamental issues with FreeBSD as I understand it.
The new FreeBSD 5.x threading model is
KSE and is suppose to be fairly nice. It's also one of those things you have to be aware of when going from FreeBSD 4.x to 5.x. The native threading models are incompatable and code compiled for 5.x is not going to be backward compatable. (seen issues of this when a person was trying to update a third-party web app because of a security issue)
It's not 1:1 kernel threading, or 1:N user-space threading, it's a mixture of both. See their man file:
http://www.freebsd.org/cgi/man.cgi?quer...anpath=FreeBSD+5.0-current&format=html
More about FreeBSD threading
here. Kinda goes into the limitations of the old model, which was a userspace 1:n setup. For instance one limitation is that with userspace threads you can't use more then one cpu at a time with a single proccess.
(Looks like OBSD's experimental 1:1 threading is most closest to LinuxThreads in FreeBSD)
Old linux threading (pthread in FreeBSD) was 1:1 kernel threads. The new one, NPTL is 1:1 kernel threading also..
So it looks like if OBSD adopts 1:1 kernel threading then that should go a long way to improving SMP performance and support, which is nice because soon almost all machines will be SMP-like in one way or another.
I beleive the 1:1 vs 1:N refers to:
one kernel thread for one user-space thread vs one kernel thread for N number of user space threads. And with 1:N it is difficult to handle multithreaded apps in a intellegent manner. (how do you scedual resources and stuff like that).