Нити ядра и пользовательские нити

Нить ядра - это единица планирования. Такими нитями управляет системный планировщик.

Разбиение процесса на нити, с которыми работает системный планировщик, в существенной степени зависит от реализации. Для создания переносимых программ в стандартных библиотеках реализованы пользовательские нити.

Нить ядра - это элемент ядра, такой же, как процессы или обработчики прерываний. Подобными элементами управляет системный планировщик. Нить ядра обрабатывается в рамках процесса, но на нее может ссылаться любая другая нить в системе. Программист не может управлять такими нитями непосредственно, если только он не разрабатывает расширения ядра или драйверы устройств. Дополнительная информация о программировании процессов ядра приведена в разделе Основы программирования поддержки устройств и расширений ядра.

Пользовательская нить - это элемент, применяемый программистами для параллельного выполнения различных операций в одной программе. API для обработки пользовательских нитей содержатся в специальной библиотеке нитей. Пользовательская нить существует только в рамках процесса; пользовательская нить из процесса A не может ссылаться на пользовательскую нить из процесса В. Библиотека нитей работает с нитями ядра с помощью собственного интерфейса, позволяющего запускать пользовательские нити. API для пользовательских нитей, в отличие от интерфейса нитей ядра, являются частью модели создания переносимых программ, соответствующей стандартам POSIX. Поэтому программы с несколькими нитями, разработанные в одной системе под управлением AIX, можно легко перенести в другую систему.

В других операционных системах применяется другая терминология: пользовательские нити называются простыми нитями, а нити ядра - простыми процессами.