Операционная система (ОС) — это базовый комплекс программ, который управляет оборудованием компьютера, запускает и разграничивает прикладные программы и дает им единый способ обращаться к железу. Без ОС каждое приложение пришлось бы писать под конкретную видеокарту, диск и сетевую плату.
Содержание
Ниже разберем, зачем нужна ОС, из каких частей она состоит, какие функции выполняет, как различают ядра и виды систем, как проходит загрузка и какие ОС актуальны в 2026 году. Пример с системным вызовом запущен, вывод в тексте — реальный.
Зачем нужна операционная система: две роли
У ОС две главные роли, и обе стоит держать в голове.
Первая — абстракция железа. ОС прячет различия конкретных устройств за единым интерфейсом: программа вызывает «прочитать файл», а не «подать команду вот этой модели SSD». Благодаря этому один и тот же код работает на разном оборудовании.
Вторая — распределение ресурсов. Процессор, оперативная память, диск и сеть — общие и ограниченные. ОС решает, какому процессу и когда дать процессорное время, сколько выделить памяти, чей запрос к диску выполнить раньше. Цель — чтобы десятки программ работали одновременно и не мешали друг другу.
Эти роли не противоречат друг другу: абстракция дает удобство, распределение — порядок и безопасность.
Из чего состоит операционная система
ОС — не одна программа, а слоеная конструкция. Ключевое разделение — на две зоны с разными правами.
- Пространство ядра (kernel space) — привилегированный режим, где код имеет прямой доступ к железу.
- Пространство пользователя (user space) — режим, где работают обычные приложения; напрямую к железу они не ходят.
Основные компоненты:
- Ядро (kernel) — центральная часть, работает в пространстве ядра. Управляет процессами, памятью, обрабатывает системные вызовы и прерывания от оборудования.
- Драйверы устройств — модули, которые знают язык конкретного железа (видеокарты, диска, принтера) и переводят общие запросы ядра в команды устройства.
- Системные библиотеки — готовые функции, через которые приложения обращаются к ядру, не зная деталей системных вызовов (например, стандартная библиотека C).
- Оболочка и пользовательский интерфейс — командная строка (shell) или графическая среда, через которую с системой работает человек.
- Системные утилиты — служебные программы: диспетчер файлов, монитор процессов, инструменты обслуживания дисков.
Важно не путать ядро и всю ОС. Ядро — это сердцевина; вокруг него живут библиотеки, оболочка и утилиты, которые для пользователя и есть «система».
Основные функции ОС
Функции ОС удобно свести к пяти направлениям.
| Функция | За что отвечает | Пример |
|---|---|---|
| Управление процессами | запуск, приостановка и переключение программ, дележ процессорного времени | планировщик дает каждой задаче кванты времени |
| Управление памятью | выделение и защита оперативной памяти, виртуальная память | процессу выдается свое адресное пространство |
| Файловая система | хранение, чтение и запись файлов, права доступа | открыть, переименовать, удалить файл |
| Управление устройствами | доступ к диску, сети, экрану через драйверы | печать документа на принтере |
| Безопасность и доступ | учетные записи, разграничение прав, изоляция процессов | обычный пользователь не меняет системные файлы |
Отдельно стоит выделить системный вызов (syscall) — это способ, которым программа из пространства пользователя просит ядро сделать привилегированную операцию: прочитать файл, выделить память, отправить пакет в сеть. Почти все обращения приложения к железу в итоге проходят через системные вызовы.
Как программа обращается к ядру: пример
Покажем это на маленькой программе на C. Она печатает строку не обычным способом, а напрямую системным вызовом write, а затем спрашивает у ОС размер страницы памяти — величину, которой распоряжается сама система.
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main(void) {
/* ОС дает процессу готовые потоки ввода-вывода.
Пишем в stdout напрямую системным вызовом write(). */
const char *msg = "Привет от процесса через системный вызов write()\n";
write(1, msg, strlen(msg)); /* 1 - дескриптор stdout */
/* Памятью распоряжается ОС, размер страницы отдает сама система. */
long page = sysconf(_SC_PAGESIZE);
printf("Размер страницы памяти: %ld байт\n", page);
return 0;
}
Вывод программы (на машине с архитектурой arm64, где прогонялся пример):
Привет от процесса через системный вызов write()
Размер страницы памяти: 16384 байт
Первую строку напечатал не язык, а ядро: write(1, ...) — это прямой системный вызов, где 1 — дескриптор стандартного вывода. Размер страницы памяти вернула сама ОС, и он зависит от архитектуры: на arm64 (Apple Silicon) в примере это 16384 байта, а на типичном x86-64 — 4096. Это и есть абстракция: программа спрашивает систему, а не считает сама.
Виды операционных систем
ОС классифицируют по двум разным признакам, и их не стоит смешивать: по назначению и по устройству ядра.
По назначению:
- Настольные — Windows, macOS, десктопные сборки Linux; расчет на одного пользователя за экраном.
- Серверные — варианты Linux (Ubuntu Server, Debian, RHEL), Windows Server; работают без графики, держат нагрузку и много подключений.
- Мобильные — Android и iOS; заточены под сенсорный ввод и экономию батареи.
- Встраиваемые — в роутерах, телевизорах, автомобилях; часто урезанный Linux или специализированная ОС.
- Реального времени (RTOS) — там, где важно гарантированное время реакции (промышленные контроллеры, медтехника): FreeRTOS, QNX, VxWorks.
По устройству ядра:
| Тип ядра | Идея | Примеры |
|---|---|---|
| Монолитное | все службы (драйверы, файловая система) работают в одном адресном пространстве ядра | Linux (с загружаемыми модулями) |
| Микроядро | в ядре — минимум, службы вынесены в пространство пользователя | MINIX, seL4, QNX |
| Гибридное | компромисс: часть служб в ядре, часть вынесена | Windows NT, macOS (XNU) |
Монолитное ядро быстрее за счет прямых вызовов внутри, но ошибка драйвера может уронить систему. Микроядро надежнее и изолированнее, но платит за это накладными расходами на обмен сообщениями между службами. Гибридные ядра — попытка взять сильные стороны обоих подходов.
Как загружается операционная система
Загрузка проходит по цепочке, где управление передается от железа к ОС по шагам.
- Подача питания и POST. После включения прошивка запускает POST (power-on self-test) — самопроверку основных устройств: памяти, процессора, дисков.
- Прошивка UEFI (или устаревший BIOS). UEFI инициализирует оборудование и находит загрузочный носитель. На современных машинах это UEFI; классический BIOS остался на старых системах.
- Загрузчик. Прошивка передает управление загрузчику (GRUB в Linux, Windows Boot Manager). Его задача — найти ядро на диске и загрузить его в память.
- Запуск ядра. Ядро разворачивается в памяти, инициализирует управление памятью, драйверы и файловые системы.
- Система инициализации. Ядро запускает первый пользовательский процесс — систему инициализации (в большинстве дистрибутивов Linux это systemd). Она поднимает службы и готовит вход в систему.
- Пользовательская сессия. Появляется экран входа или рабочий стол; дальше процессы порождаются от уже запущенных.
Для пользователя все это выглядит как «включил — появился рабочий стол», но за кулисами управление успевает пройти через прошивку, загрузчик, ядро и систему инициализации.
Популярные ОС в 2026 году
Три семейства держат настольный рынок, и у каждого своя ниша.
- Windows — остается самой распространенной настольной ОС; сильна совместимостью с прикладным и игровым ПО, много специфического софта работает только на ней. Актуальная линейка — Windows 11.
- macOS — система Apple, работает только на технике Apple (с 2020 года — на процессорах Apple Silicon). Ценится за стабильность и интеграцию с экосистемой; игр и корпоративного софта под нее меньше.
- Linux — на десктопе доля невелика, но именно Linux доминирует на серверах, в суперкомпьютерах и облаках, а его ядро лежит в основе Android. Требует большей готовности работать с терминалом, зато гибок и бесплатен.
На мобильных устройствах картина иная: там лидирует Android (на ядре Linux), второй — iOS от Apple. То есть «редкий на десктопе» Linux по числу устройств в мире — один из самых массовых.
Выводы
- Операционная система — это слой между железом и программами; ее две роли — абстракция оборудования и распределение общих ресурсов.
- ОС состоит из ядра (привилегированный режим), драйверов, системных библиотек, оболочки и утилит; ядро — не вся система, а ее сердцевина.
- Пять базовых функций: управление процессами, памятью, файлами, устройствами и безопасностью; приложения обращаются к железу через системные вызовы.
- Ядра различают на монолитные, микроядра и гибридные; ОС — на настольные, серверные, мобильные, встраиваемые и реального времени.
- В 2026 году настольный рынок держат Windows, macOS и Linux, а мобильный — Android (на ядре Linux) и iOS.
Где применяется / связь с практикой
Понимание устройства ОС — это фундамент системного программирования. Драйверы, работа с памятью, процессы и системные вызовы — все это пишут на C и близких к железу языках. Тот же системный вызов write из примера выше — основа того, как любая программа общается с ядром; понимая эту границу, вы точнее отлаживаете производительность и работу с памятью.
Освойте тему на практике
Если хочется разобраться, как процессы, память и системные вызовы устроены на уровне C, посмотрите курс Otus по системному программированию на C. Оценить формат и уровень до старта помогают бесплатные открытые уроки Otus — живые занятия с преподавателями.
Смежные темы: Операционные системы и программное обеспечение, Системы Unix: особенности и описание, Файловые системы.
FAQ
Чем ОС отличается от прошивки (firmware)? Прошивка (например, UEFI) вшита в микросхему устройства и решает узкую задачу — запустить железо и передать управление дальше. ОС загружается с диска в память и управляет всей работой компьютера уже после старта.
Ядро и операционная система — это одно и то же? Нет. Ядро — центральная часть, работающая в привилегированном режиме. Полная ОС — это ядро плюс драйверы, библиотеки, оболочка и утилиты, с которыми и взаимодействует пользователь.
Почему серверные ОС часто без графического интерфейса? Графическая среда тратит память и процессор и расширяет поверхность атаки. На сервере важнее надежность и ресурсы под нагрузку, поэтому им управляют по командной строке или удаленно.



