Книга: Разработка ядра Linux
Буфер сообщений ядра
Буфер сообщений ядра
Сообщения ядра хранятся в кольцевом буфере (log buffer) размером LOG_BUF_LEN
. Этот размер можно изменять во время компиляции с помощью параметра CONFIG_LOG_BUF_SHIFT
. Для однопроцессорной машины это значение по умолчанию равно 16 Кбайт. Другими словами в ядре может хранится до 16 Кбайт системных сообщений. Если общий размер всех сообщений ядра достигает этого максимального значения и приходит новое сообщение, то оно переписывается поверх самого старого из хранящихся в буфере сообщений. Буфер сообщений ядра называется кольцевым, потому что запись и считывание сообщений выполняется по круговой схеме.
Использование кольцевого буфера предоставляет определенные преимущества. Так как одновременные операции чтения и записи в кольцевом буфере выполняются достаточно просто, то функцию printk()
можно использовать даже из контекста прерывания. Более того, это позволяет просто организовать управление системными сообщениями. Если сообщений оказывается очень много, то новые сообщения просто затирают старые. Если возникает проблема, которая проявляется в генерации большого количества сообщений, то буфер сообщений просто начинает переписывать себя вместо того, чтобы бесконтрольно занимать память. Единственный недостаток кольцевого буфера — возможность потерять сообщения, что не такая уж и большая плата за ту устойчивость, которую такое решение предоставляет.
- 1.1 Режимы ядра и пользователя Windows
- 1.6 Драйверы и буферы ввода-вывода
- Алгоритм составления эффективных рекламных сообщений
- 3.8. Обновление ядра
- 3.8.2. Обновление ядра из RPM-пакета
- 3.8.3. Компиляция ядра
- 8.2.1. Безопасность сообщений
- Фильтрация сообщений
- 14.1.8. Патчинг ядра
- 14.2. Переполнение буфера
- 14.11.1. Параметры ядра
- Буфер обмена и команды для работы с ним