Иерархия процессов
Процессы разделяются на процессы ядра и пользовательские процессы (все остальные, не принадлежащие ядру, но не обязательно запущенные пользователем). Само ядро Solaris – множество параллельно выполняемых потоков команд (threads). Каждый поток ядра имеет свой приоритет и может относиться к определенному классу потоков, обладает сегментом данных (как правило, небольшим) и стеком; передача управления от одного потока ядра другому не требует изменения адресов виртуальной памяти.
В Solaris реализована многоуровневая поточная модель, разделяющая управление потоками пользовательского уровня и потоками ядра. Потоки пользовательского уровня имеют свою схему приоритетов и ее создание проводится с помощью потока-планировщика, создаваемого библиотекой потоков в процессе компиляции и/или выполнения многопоточных приложений. Передача управления между потоками внутри одного пользовательского процесса осуществляется его внутренним планировщиком, поэтому создаваемые потоки работают без значительной загрузки ядра, которое распознает многопоточное приложение как единственный процесс. Ядро не видит пользовательские потоки, пока они не присоединяются к легковесному процессу (lightweight process - LWP), который связан с потоком ядра для выполнения процессором. За отображение пользовательских потоков в LWP отвечает поток-планировщик. Каждый LWP имеет поток ядра, но обратное утверждение верно не всегда, потому что часть потоков используется только ОС.