Мне было интересно, если кто-то может объяснить, что модули ядра Linux для кого-то, кто приходит из Windows?
3 ответа
Это способ динамической загрузки кода в ядро Linux, которое является самой низкой частью операционной системы GNU/Linux. Драйверы устройств Windows часто используются для аналогичных целей. Вы можете прочитать этот довольно старый FAQ. Некоторые вещи изменились, но основная идея остается прежней.
Модули ядра - это отдельные фрагменты кода, которые загружаются в ядро для поддержки определенного оборудования.
Например, само ядро Linux не может использовать последовательный порт (RS-232), но когда вы загружаете соответствующий модуль ядра, оно может.
Команда lsmod
покажет вам список загруженных модулей ядра.
Модули ядра Linux по своей концепции эквивалентны драйверам устройств Windows.
Для работы аппаратного обеспечения вам необходим драйвер для него в Windows, а для него вам нужен модуль ядра драйвера устройства в Linux.
Драйверы устройств должны иметь прямой доступ к оборудованию и, следовательно, работать в режиме ядра. Обычные пользовательские приложения работают в пользовательском режиме. Программа пользовательского режима имеет защиту MMU ЦП и не может мешать работе другой программы пользовательского режима или чего-либо, работающего в режиме ядра. Вещи, работающие в режиме ядра, не имеют этой защиты, но могут напрямую обращаться к оборудованию. Вот почему они называются модулями ядра.
Вы можете собрать свое собственное ядро Linux и включить в него модули. Затем они перестают быть модулями и становятся частью ядра. Обычно полезно встроить небольшое количество драйверов, необходимых для загрузки, и позволить обнаружению оборудования загружать все остальное, что нужно, хотя вы можете собрать полностью "статичное" ядро, не полагаясь на загрузку каких-либо модулей, если хотите.