- •Типы архитектур ядер операционных систем Монолитное ядро
- •Подгружаемые модули
- •Модульное ядро
- •Микроядро
- •Архитектура микроядра, основанная на программах-серверах, работающих в пользовательском режиме
- •Устройство
- •Достоинства и недостатки
- •Поколения
- •История
- •Экзоядро
- •Наноядро
- •Пикоядро
- •Гибридное ядро
- •Примеры
- •Комбинация разных подходов
- •Загружаемый модуль ядра
- •Преимущества
- •Вопросы лицензирования
- •Дело Linuxant
- •Бинарная совместимость
- •Безопасность
- •Основные принципы функционирования
- •Наиболее известные представители данного класса по
- •Идеология построения драйверов
- •Сегментирование памяти
- •Условия и принцип защиты
- •Взаимодействие уровней привилегий
- •Переключение стека
- •Страничная память
- •Механизм ключей защиты
- •Симуляция сегментации Адресация основанная на Capability
- •Режим супервизора
- •Режим гипервизора
- •Режим системного управления (smm)
- •Модель взаимодействия между цп и уровнями абстракции ос
- •Системный вызов
- •Привилегии
- •Интерфейс системных вызовов
- •Промежуточная библиотека
- •Примеры и инструменты
- •Типичные имплементации
- •Категории системных вызовов
- •Режим процессора и переключение контекста
Основные принципы функционирования
Для нормального функционирования отладчика уровня ядра требуется внесение изменений в ядро операционной системы. Довольно часто это решается при помощи внедрения в ядро дополнительных модулей. Фактически отладчик уровня ядра перехватывает глобально системные функции, которые отвечают за:
Доступ к памяти
Создание/завершение процессов
Так же отладчик ядра контролирует обращение к различным таблицам ядра. Ещё один важный момент это управление состоянием процессора, так как процессоры поддерживают пошаговую трассировку и точки останова на аппаратном уровне.
Наиболее известные представители данного класса по
softICE. Проприетарный отладчик разработанный фирмой Numega и распространяемый с продуктом DriverStudio. Были сделаны неофициальные сборки softICE различными хакерскими группами. softICE обеспечивал отладку кода на различных версиях Windows и был благодаря своим широким возможностям неофициальным стандартом в кругах, связанных с обратной инженерией ПО. Однако впоследствии оказался заброшен. Сейчас он уже используется все меньше и меньше, так как не совместим с Windows Vista и 7[2] В то же время softICE стал во многом фундаментом идеологии использования таких инструментов. Работает только на Windows платформе
WinDbg, KD, LiveKD. WinDbg официальный бесплатный отладчик c закрытыми исходными текстами, входящий в состав Debugging Tools for Windows от Microsoft. Он ориентирован на GUI интерфейс. Наборы символов для него позволяют исследовать ядро Windows. KD ещё один отладчик от Microsoft, который предназначен для исследования ядра Windows. LiveKD это бесплатный отладчик ядра от Sysinternals, который позволяет отлаживать систему без использования второго компьютера, что требуют два предыдущих отладчика. Более подробно это описано в книге Марка Руссиновича и Дэвида Соломона Внутреннее устройство Windows.
Syser. Наследник softICE, разработанный китайскими программистами. Поддерживает интерфейс в стиле SoftICE. Совместим с новыми операционными системами Windows, поддерживает многопроцессорные системы. Платный продукт с закрытым исходным текстом.
KDB. Отладчик уровня ядра для *nix от фирмы SGI. Активируется при помощи наложения патча на ядро. OpenSource проект.
Linice. Ещё один OpenSource отладчик ядра для *nix. Существуют некоторые проблемы совместимости с новыми ядрами Linux
Очень важно что отладчик должен быть совместим с ядром операционной системы, где используется, так как отладчик модифицирует основные структуры ядра, которые имеют свойство меняться от версии к версии. Применение некорректной версии отладчика может привести к непредсказуемому поведению системы.
Иной довольно серьёзной проблемой является конфликт между драйверами уровня ядра других приложений и отладчика. Примером может служить невозможность работы программы Daemon Tools при активном отладчике ядра. Некоторые программы отказываются функционировать, если обнаружат наличие отладчика в системе или попытки их отладки.
Отла́дчик (деба́ггер, debugger) — компьютерная программа, предназначенная для поиска ошибок в других программах, ядрах операционных систем, SQL-запросах и других видах кода. Отладчик позволяет выполнять трассировку, отслеживать, устанавливать или изменять значения переменных в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и т.д.
Дра́йвер (driver) — компьютерное программное обеспечение, с помощью которого другое программное обеспечение (операционная система) получает доступ к аппаратному обеспечению некоторого устройства. Обычно с операционными системами поставляются драйверы для ключевых компонентов аппаратного обеспечения, без которых система не сможет работать. Однако для некоторых устройств (таких, как видеокарта или принтер) могут потребоваться специальные драйверы, обычно предоставляемые производителем устройства.
В общем случае драйвер не обязан взаимодействовать с аппаратными устройствами, он может их только имитировать (например, драйвер принтера, который записывает вывод из программ в файл), предоставлять программные сервисы, не связанные с управлением устройствами (например, /dev/zero в Unix, который только выдаёт нулевые байты), либо не делать ничего (например, /dev/null в Unix и NUL в DOS/Windows).
