I'm interested in operating systems that have a multithreading architecture, like Mach and BeOS; not ones that depend on libraries like POSIX to be multithreading. Do BSD and SunOS have a multithreading architecture?
FreeBSD has a SMP friendly kernel with multiple threads of execution and many parts of the kernel can run independant and it supports preemption.
NetBSD has been working on the same thing for many years. DragonFly BSD started over on the work (from FreeBSD4) and use message passing, etc.
OpenBSD and MirBSD do not have complete GIANT lock free SMP implementations for their kernels and the latter does not want to ever do it.
MidnightBSD is basically the same as FreeBSD 7.
FreeBSD's kernel is multithreaded; user-space applications use the POSIX pthreads API to do multithreading, but those APIs are implemented on top of the kernel's native multithreading capabilities.
Last I knew, POSIX threads on OpenBSD were implemented in user-space, not using kernel-based threads.
The name "SunOS" covers at least 2 families of operating systems.
The original "SunOS" was a 4.2BSD-derived system, and Sun put out versions up to 4.1.4. The Sun version only handled multi-CPU systems towards the end of its life, around 1994. A company out of Longmont, Colorado, Solbourne Computer, made multi-SPARC-cpu machines, and had modified SunOS (don't remember the version) to be multi-threading. About May 1990, I got to use a multi-CPU Solbourne box.
The SunOS family that more popularly goes by the name "Solaris" was an ATT System V derivative. It could most definitely handle multi-cpu hardware.
You could and can do multi-threaded userland programs under both families of SunOS. Someone put out a signal-handler-based threading package that worked well for SunOS 4.1.x versions, and Solaris came with Pthreads and some other threading package that were almost exactly the same in terms of API. The Solaris threads could be made to run 1:1 against a kernel thread, or you could run multiple userland threads on a single kernel thread.