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