Структура ядра, модули, /proc и /sys
Архитектуры ядра
Монолитное ядро
Всё ядро — один большой исполняемый образ в режиме ядра: планировщик, память, файловые системы, сеть, драйверы. Компоненты вызывают друг друга обычными вызовами функций.
- ✅ быстро: нет переключений между компонентами;
- ❌ ошибка в любом драйвере может уронить систему.
Примеры: Linux, FreeBSD, классический Unix.
Микроядро
В режиме ядра — только самое необходимое: адресные пространства, планирование, передача сообщений (IPC). Драйверы, файловые системы, сетевой стек — отдельные процессы в режиме пользователя.
- ✅ надёжность: упавший драйвер можно перезапустить;
- ❌ накладные расходы на IPC.
Примеры: MINIX 3, QNX, seL4, L4.
Гибриды
Windows NT и macOS (XNU) — «гибридные»: начинались с идей микроядра, но для скорости многое перенесли в режим ядра.
Модули ядра Linux
Linux монолитен, но гибок: драйверы и файловые системы можно подгружать во время работы как модули (.ko). Модуль после загрузки работает в режиме ядра с полными правами — это часть ядра.
lsmod # загруженные модули
modinfo ext4 # информация о модуле
sudo modprobe vfat # загрузить модуль с зависимостями
sudo rmmod vfat # выгрузить
Простейший модуль:
#include <linux/module.h>
#include <linux/init.h>
static int __init hello_init(void) { pr_info("hello\n"); return 0; }
static void __exit hello_exit(void) { pr_info("bye\n"); }
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
/proc и /sys
Ядро показывает внутренние данные в виде псевдофайловых систем — файлов, которых нет на диске. Это удобно: читать их можно обычными cat и open/read.
procfs (/proc)
| Файл | Содержимое |
|---|---|
/proc/cpuinfo |
процессоры: модель, частота, флаги |
/proc/meminfo |
использование памяти |
/proc/<pid>/status |
состояние процесса, PPid, память, маски сигналов (SigBlk, SigIgn, SigCgt) |
/proc/<pid>/maps |
карта виртуальной памяти |
/proc/<pid>/fd/ |
открытые дескрипторы (символические ссылки) |
/proc/self |
ссылка на каталог текущего процесса |
/proc/sys/ |
параметры ядра (sysctl) |
grep -E 'PPid|Sig' /proc/self/status
sysfs (/sys)
Отражает модель устройств ядра: шины, устройства, драйверы, их атрибуты. Например, /sys/block/sda/size — размер диска в секторах.
Задача 2: /proc/cpuinfo
Это не обычный файл на диске, а интерфейс уровня управления логическими ресурсами: ядро представляет информацию в виде логического ресурса «файл» через VFS и procfs. Содержимое описывает аппаратуру (процессор), а генерирует его ядро при каждом чтении. Эти две части и нужно назвать в ответе.
Итог
- Монолитное ядро (Linux) — всё в режиме ядра; микроядро — минимум в ядре, остальное в процессах.
- Linux расширяется загружаемыми модулями (
modprobe,lsmod). /procи/sys— псевдофайловые системы: содержимое генерирует ядро при чтении.
Практика решено 0 из 5
К какому типу относится ядро Linux?
Сравните архитектуры ядра.
| Монолитное ядро | Микроядро | |
|---|---|---|
| Драйверы и файловые системы работают в режиме ядра | ||
| Драйверы — отдельные процессы в режиме пользователя | ||
| Компоненты общаются через передачу сообщений (IPC) | ||
| Ошибка в драйвере может обрушить всю систему | ||
| Примеры: Linux, традиционный Unix | ||
| Примеры: MINIX 3, QNX, seL4 |
Где хранится содержимое файла /proc/cpuinfo?
Что можно узнать через /proc?
Какой командой загрузить модуль ядра вместе с его зависимостями? (только название утилиты)
Войдите, чтобы отмечать пройденные уроки.