[115241]Weeeeellll.....[12149]Модуль ядра - это что-то очень специфическое: Часть ядра, которая загружается как модуль (т.е. динамически), после запуска ядра. Это может быть что угодно.[12150]Для того, чтобы использовать аппаратуру, вам нужны некоторые части, которые находятся в основном ядре по двум причинам:[12151]Для того, чтобы иметь возможность выполнять аппаратные операции, которые не могут быть выполнены или являются непрактичными в пользовательском пространстве, или чтобы иметь возможность сохранять состояние вне рамок процесса.[12152]Потому что было бы действительно неэффективно делать это в пользовательском пространстве[12153]Для того, чтобы управлять большинством аппаратуры, вам нужна контрагента из пространства ядра. Он может быть скомпилирован как часть ядра или как модуль, который загружается позже по требованию. С модулями не все из них можно загрузить.[12154]Но модули не обязательно должны быть связаны только с аппаратным обеспечением. Есть модули, которые просто добавляют функциональность, такую как (например) ipv6, опции брандмауэра и т.д.[12155]Драйвер, с другой стороны, это то, что обеспечивает лёгкий доступ к оборудованию в целом. Обычно он включает в себя все специфические для аппаратного обеспечения вещи и предоставляет общий API. И под "общим" я подразумеваю что-то, что достаточно общее, но не обязательно глобальное или стандартное. Например, драйвер для видеокарт ATI откроет общий API для всех карт ATI, но он может быть не таким, как у других карт.[12156]Драйверы могут быть сделаны в пользовательском пространстве, в ядре (встроенном или в модуле) или могут иметь ножки с обоих концов. Например, драйверы современных видеокарт имеют часть в ядре и часть в пользовательском пространстве (например, X-сервер, DRI и т.д.)[115256]Драйверы могут быть сделаны в пользовательском пространстве, в ядре (встроенном или в модуле) или могут иметь ножки на обоих концах.
Anthon
24.11.2014, 09:49
Ссылка