Обзор ядра
100%

Ядро · Урок 1

Обзор ядра

Узнайте, как ядро Linux посредничает между оборудованием, ресурсами, изоляцией и запросами пользовательского пространства.

Linux — ядро операционной системы: привилегированное ПО, управляющее процессорами, памятью, устройствами, процессами и общими абстракциями ресурсов. Полная система Linux также включает библиотеки, утилиты, службы, оболочки, графические программы и политику дистрибутива в пользовательском пространстве.

Аппаратные ресурсы

Процессоры исполняют инструкции, память хранит активное состояние, а контроллеры соединяют хранилища, сети, дисплеи, устройства ввода и другую периферию. Оборудование предоставляет специфичные архитектуре и устройству механизмы, а не единый безопасный интерфейс каждому приложению.

Ядро инициализирует ресурсы и управляет ими через архитектурный код и драйверы устройств. Оно обрабатывает прерывания, координацию DMA, таймеры и события управления питанием, одновременно обеспечивая границы доступа между нагрузками.

Какой уровень обычно координирует драйверы устройств и аппаратные прерывания в Linux?

Обязанности ядра

Основные обязанности:

  • планировать выполняемые threads на CPU;
  • создавать и изолировать виртуальные адресные пространства;
  • обеспечивать учётные данные процессов, разрешения и политику безопасности;
  • предоставлять файловые системы, сеть, IPC и интерфейсы устройств;
  • обрабатывать сигналы, таймеры и жизненный цикл процессов;
  • выделять, учитывать и освобождать ресурсы.

Linux обычно называют монолитным ядром, поскольку основные службы и многие драйверы выполняются в одном привилегированном адресном пространстве. При этом оно модульно: поддерживаемые компоненты можно загружать и выгружать как модули. Ошибка в привилегированном коде способна скомпрометировать всю систему, поэтому обновления ядра и происхождение модулей критичны для безопасности.

Чем управляет планировщик ядра?

Пользовательское пространство

В пользовательском пространстве работают обычные процессы: init и службы, командные инструменты, языковые среды, базы данных, оболочки и настольные приложения. Аппаратные привилегии не дают им напрямую выполнять многие чувствительные инструкции или обращаться к произвольной памяти ядра.

Процессы запрашивают работу ядра через системные вызовы и взаимодействуют с такими интерфейсами, как файловые дескрипторы, сокеты, узлы устройств, procfs, sysfs, netlink и отображения памяти. Библиотеки часто оборачивают их в высокоуровневые API.

Root в пользовательском пространстве имеет широкую авторизацию по политике, но обычно всё равно выполняется в пользовательском режиме процессора. Идентичность пользователя и режим привилегий CPU — разные понятия.

Выполняет ли обычное приложение root все свои инструкции в режиме ядра?

Границы и абстракции

Ядро представляет виртуальные процессы, файлы, сокеты и адресные пространства вместо прямого раскрытия физического оборудования. Эти абстракции поддерживают изоляцию и переносимость, но сами по себе не идеальны как границы безопасности. Namespaces, cgroups, capabilities, модули безопасности, seccomp и виртуализация добавляют специализированный контроль.

При диагностике спрашивайте, какой уровень отвечает за поведение: приложение, библиотека, системный вызов, файловая система, драйвер, подсистема ядра, прошивка или оборудование. Доказательства неверного уровня могут привести к неправильному исправлению.

Что такое системный вызов?

Урок завершён

Вы завершили Обзор ядра

Теперь вы можете поместить ядро между физическими ресурсами и изолированными процессами пользовательского пространства.

  • Связывать драйверы и архитектурный код с управлением оборудованием.

  • Определять обязанности планирования, памяти, безопасности, файловых систем и сети.

  • Различать учётные данные root и режим ядра процессора.

  • Находить взаимодействие пользователя и ядра в контролируемых runtime-интерфейсах.

Сохраните прогресс

Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.

Создать бесплатный аккаунт
Следующий Урок
Назад к Ядро