> Видимо этот SMP распространяется только на usermode. Вроде как все программы работают
> параллельно, но стоит одной из них обратиться к ядру, как ядро
> блокируется и становится недоступным для всех остальных процессов. Все процессы, которым
> нужно обратиться к ядру, встают в очередь в ожидании снятия блокировки
> с ядра.Вы явно плохо вообще знакомы с SMP, и явно путаете Giant lock (BKL в Linux) с системными вызовами. :) Несколько программ совершенно спокойно могут делать одновременно системные вызовы. Более того, часть работы системных вызовов в OpenBSD вполне может производиться раздельно по процессорам.
На одном процессоре работает обработка ввода-вывода, например. И это в известной степени минус: снижает потолок производительности на некоторых конфигурациях железа. Но не более.
Также по умолчанию для реализации тредов используется библиотека libpthread, в которой все треды создаются в рамках одного реального потока выполнения. Есть и librthread, которая использует треды на уровне ядра (соотношение 1:1), но по умолчанию её не используют из-за проблем с софтом. Причём проблемы бывают как из-за недоработок в библиотеке, так и из-за недоработок в стороннем ПО. Я у себя на ноутбуке (2 ядра + HyperThreading) её иногда включаю, иногда выключаю: разница в стабильности не заметна. Впрочем, я и не тестирую каждый день десятки разных программ. :)