Ядерные нити
Базовым классом являются ядерные
нити. В мире UNIX это не новость. Когда
в пользовательском процессе
происходит системный вызов или
прерывание, выполняется ядерная
составляющая пользовательского
процесса в своем собственном
контексте, включающем набор
ядерных стеков и регистровое
окружение. Естественно, все ядерные
составляющие пользовательских
процессов работают в общем
адресном пространстве с общим
набором ресурсов ядра. Поэтому их
вполне можно назвать ядерными
легковесными процессами. Наличие
ядерных нитей, в частности,
облегчает обработку прерываний в режиме ядра. Как и в случае прерывания обычного пользовательского процесса, обработка прерывания ядерной нити производится в ее контексте, и после возврата из прерывания продолжается выполнение прерванной ядерной нити. Кроме того, каждая ядерная нить, вообще говоря, обладает собственным приоритетом по отношению к праву выполняться на процессоре (конечно, этот приоритет связан с приоритетом соответствующего пользовательского процесса). Это позволяет использовать гибкую политику планирования процессорных ресурсов для ядерных составляющих. Итак, ядерные нити должны существовать независимо от того, поддерживаются ли легковесные процессы в режиме пользователя. Наверное, трудно найти сегодня какую-либо многопользовательскую операционную систему, в ядре которой в каком-то виде не поддерживались бы нити.
[