Модели обработки нитей и виртуальные процессоры
Библиотека нитей устанавливает соответствие между пользовательскими нитями и нитями ядра. Способ установки такого соответствия называется моделью обработки нитей.
Существует три различных модели обработки нитей, соответствующих трем различным способам установления соответствия между пользовательскими нитями и нитями ядра:
- Модель M:1
- Модель 1:1
- Модель M:N
Соответствие между пользовательскими нитями и нитями ядра устанавливают виртуальные процессоры. Виртуальный процессор (VP) - это элемент библиотеки, как правило, неявный. Для пользовательской нити виртуальный процессор играет ту же роль, что и CPU. В библиотеке виртуальный процессор является нитью ядра или структурой, связанной с нитью ядра.
В модели M:1 всем пользовательским нитями ставится в соответствие одна нить ядра; все пользовательские нити выполняются на одном VP. Это соответствие устанавливает планировщик библиотеки. Все средства программирования пользовательских нитей используются только библиотекой. Эта модель допустима для любых систем, в частности, для традиционных систем, не предусматривающих обработки нескольких нитей.
В модели 1:1 для каждой пользовательской нити выделяется отдельная нить ядра; каждая пользовательская нить выполняется на отдельном VP. Большая часть средств программирования пользовательских нитей применяется непосредственно нитями ядра. Эта модель применяется по умолчанию.
В модели M:N всем пользовательским нитям ставится
в соответствие пул нитей ядра; все пользовательские нити выполняются пулом
виртуальных процессоров. Отдельная пользовательская нить может быть связана с определенным
виртуальным процессором, как в модели 1:1. Все несвязанные
пользовательские нити совместно выполняются на оставшихся виртуальных
процессорах. Эта модель обработки нитей самая эффективная и самая
сложная; средства программирования пользовательских нитей
используются как библиотекой нитей, так и нитями ядра. Для применения этой
модели нужно присвоить переменной среды AIXTHREAD_SCOPE
значение P.