Модули ядра

Ядро Linux дает возможность по требованию загружать в память и выгружать из нее отдельные секции кода. Такие секции называются модулями ядра и выполняются в привилегированном режиме.

Модули ядра дают ряд преимуществ:

1. Код модулей может загружаться в память в процессе работы системы, что упрощает настройку компонентов ядра, прежде всего драйверов.

2. Есть возможность изменять набор компонентов ядра во время выполнения: те из них, которые в этот момент не используются, можно не загружать в память.

3. Модули являются исключением из правила, по которому код, который расширяет функции ядра, в соответствии лицензии Linux должен быть открытым. Это дает возможность производителям аппаратного обеспечения разрабатывать драйверы под Linux, даже если не запланировано давать доступ к их коду.

Поддержка драйверов в Linux состоит из трех компонентов:

1. Средства управления модулями дают возможность загружать модули в память и реализовывать обмен данными между модулями и остальной частью ядра.

2. Средства реализации драйверов позволяют модулям сообщать остальной части ядра о том, что новый драйвер стал доступным.

3. Средства разрешения конфликтов дают возможность драйверам устройств резервировать аппаратные ресурсы и защищать их от случайного использования другими драйверами.

Один модуль может зарегистрировать несколько драйверов, если это необходимо (например, для двух разных механизмов доступа устройства).

Модули могут быть загружены заранее – во время старта системы (загрузочные модули) или в процессе выполнения программы, которая вызывает их функции. После загрузки код модуля находится в том же адресном пространстве, где и остальной код ядра. Ошибка в модуле является критичной для системы.