Перейти к основному контенту
NGPP
Кабинет

Учебный конструктор · архитектура ОС

Как устроена операционная система

Не понимаешь, что такое ядро, чем монолит отличается от микроядра, где живут драйверы и службы? Собери ОС из слоёв. Выбери систему (Linux и его дистрибутивы, Windows, macOS, Android, FreeBSD), кликай блоки — узнаешь, зачем каждый нужен, а выключив любой — увидишь каскадом, что без него сломается. Так понимаешь принцип, а не зубришь.

Незнакомы слова (ядро, монолит, syscall, драйвер, init…)? → словарь простыми словами внизу. Сетевой стек подробнее → конструктор сетей.

Дистрибутив

Самая популярная ветка. Стабильность, огромное сообщество, .deb-пакеты. Пакеты: apt (.deb).

🐧 Linux: Монолитное ядро · Linux kernel

Монолитное ядро с загружаемыми модулями (драйверы можно добавлять на лету, но они работают в пространстве ядра).

Кликни блок — описание справа. Выключи — увидишь, что сломается ниже/выше по зависимостям.
▶ Прогон: как запрос бежит сквозь слои
📦
Пользовательские приложенияне критично
Приложения · пространство пользователя · из репозиториев дистрибутива
🐚
Оболочка и рабочий стол
Оболочка · пространство пользователя · bash + GNOME
🖥️
Графический сервер (X11/Wayland)не критично
Графика · пространство пользователя · Wayland (GNOME)
⚙️
Фоновые службы (демоны)не критично
Службы · пространство пользователя · NetworkManager, PipeWire, journald…
📚
Системные библиотеки (libc/API)
Библиотеки · пространство пользователя · glibc
🚀
Служба инициализации (init)
Запуск · пространство пользователя · systemd
🚪
Системные вызовы (syscalls)
Граница · пространство ядра · Linux syscalls (~400)
🌐
Сетевой стек (TCP/IP)не критично
Ядро · пространство ядра · сетевой стек Linux (Netfilter)
🗂️
Файловые системы (VFS)
Ядро · пространство ядра · ext4 / Btrfs / XFS (через VFS)
🧩
Драйверы устройств
Ядро · пространство ядра · модули ядра / DKMS
🧠
Ядро: планировщик, память, IPC
Ядро · пространство ядра · Linux kernel
🔌
Аппаратура (CPU, ОЗУ, диски, устройства)
Железо · железо

📖 Словарь: простыми словами

Встретил незнакомое слово выше — найди его здесь. Коротко — суть; разверни — подробное объяснение с аналогией.

Ядро (kernel)сердце ОС: распределяет процессор, память, доступ к железу

Программа, которая всегда в памяти и управляет всем: какой процесс исполняется, сколько ему памяти, как обращаться к устройствам. Работает в привилегированном режиме (кольцо 0). Всё остальное — надстройки над ядром.

Монолитное ядровсё ядро в одном куске — быстро, но сбой драйвера роняет всё

Драйверы, файловые системы, сеть — внутри ядра, в одном адресном пространстве. Плюс: скорость (нет лишних переходов). Минус: ошибка в драйвере = паника ядра/BSOD. Так устроен Linux.

Микроядров ядре только базовое, остальное — отдельные процессы

Минимум в ядре (планировщик, память, обмен сообщениями). Драйверы и ФС — обычные процессы в пользовательском пространстве. Плюс: надёжность и изоляция (упавший драйвер не валит систему). Минус: медленнее из-за обмена сообщениями. Примеры: MINIX, seL4, QNX.

Гибридное ядромонолит + идеи микроядра

Компромисс: производительность монолита, но с чёткими подсистемами и частично вынесенными службами. Так устроены Windows NT и macOS XNU (микроядро Mach + код BSD).

Системный вызов (syscall)запрос программы к ядру через защищённую «дверь»

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

Драйверпереводчик между ОС и конкретной моделью устройства

ОС работает с устройствами абстрактно («диск», «сетевая карта»), а драйвер знает, как командовать конкретной железкой. Без драйвера устройство «немое».

Служба инициализации (init)первый процесс, поднимающий всю систему (PID 1)

После загрузки ядра запускается init (systemd в Linux, launchd в macOS, SCM в Windows). Он по порядку стартует все службы и доводит систему до логина. Без него — «ядро есть, системы нет».

Пространство ядра и пользователяпривилегированная зона vs обычные программы

Код ядра исполняется в привилегированном режиме (кольцо 0) с полным доступом к железу. Программы — в пользовательском режиме (кольцо 3), изолированно. Переход — только через системные вызовы. Это фундамент безопасности и стабильности.

Графический сервер (X11/Wayland)рисует окна и обрабатывает ввод; не часть ядра

Отдельная подсистема, отвечающая за вывод графики и ввод мышью/клавиатурой. В Linux это X11 или Wayland, в Windows — оконная подсистема + DWM, в macOS — WindowServer. Сервер прекрасно работает и без неё — в текстовой консоли.

libc / системный APIготовые функции, через которые программы зовут ОС

Библиотека-прослойка между программами и системными вызовами (glibc/musl в Linux, Win32 API в Windows, libSystem/Cocoa в macOS). Даёт удобные функции и стабильный интерфейс, даже когда ядро меняется.

Дистрибутив (Linux)ядро Linux + подобранный набор пользовательских частей

Linux — это только ядро. Дистрибутив добавляет init, libc, пакетный менеджер, графику, оболочку и набор программ. Debian/Ubuntu, Fedora/RHEL, Arch, Alpine, Gentoo — разные сборки из взаимозаменяемых частей.

Дальше по теме

Эти инструменты связаны с текущим — так задачи стыкуются на практике.

Все инструменты — в каталоге.