
Операционная система состоит из ядра, драйверов устройств, механизмов управления процессами и памятью, файловой системы, системных служб, средств безопасности, библиотек и пользовательского интерфейса. Вместе эти части распределяют ресурсы компьютера и дают приложениям единый способ работать с процессором, оперативной памятью, дисками, сетью, экраном и другими устройствами. Windows, Linux, macOS и Android устроены по-разному, но решают этот общий набор задач.
Зачем компьютеру операционная система
Приложение не должно самостоятельно знать, как переключать конкретные транзисторы процессора, где лежит каждый сектор накопителя или какими командами управляется видеокарта. Оно обращается к функциям операционной системы: просит открыть файл, выделить память, создать окно или отправить данные по сети. Система проверяет запрос, выбирает подходящий драйвер и координирует работу оборудования.
Так возникает несколько уровней. Внизу находится аппаратура, выше работают ядро и драйверы, затем системные библиотеки и службы, а над ними – приложения и интерфейс пользователя. Граница не всегда одинакова. Например, графическая оболочка может быть тесно связана с системой или заменяться другой, тогда как ядро остаётся тем же.
Ядро – центральная часть системы
Ядро выполняется с особыми привилегиями и контролирует самые важные ресурсы. Оно решает, какой процесс получит процессорное время, какую область памяти можно использовать, как обработать сигнал от устройства и можно ли программе выполнить запрошенную операцию. Ошибка обычного приложения обычно завершает это приложение, а серьёзная ошибка ядра способна остановить всю систему.
Архитектуры ядер различаются. Монолитное ядро включает многие подсистемы и драйверы в общем привилегированном пространстве. Микроядерный подход оставляет внутри минимальный набор функций, а другие службы переносит в отдельные процессы. На практике распространены гибридные решения и модульные монолитные ядра. Название архитектуры само по себе не определяет скорость или надёжность: важны реализация, изоляция компонентов и качество драйверов.
Процессы, потоки и планировщик
Запущенная программа представлена одним или несколькими процессами. Процесс получает собственное виртуальное адресное пространство и набор ресурсов. Внутри него работают потоки – последовательности исполняемых команд. Браузер, например, может разделять вкладки, графику и сетевые операции между несколькими процессами и потоками.
Ядерный планировщик быстро переключает процессор между готовыми потоками. Человеку кажется, что десятки программ работают одновременно. На многоядерном процессоре часть задач действительно выполняется параллельно, но потоков всё равно обычно больше, чем ядер. Планировщик учитывает приоритеты, ожидание ввода, ограничения реального времени и энергопотребление.
Механизмы процессов выросли из идеи хранимой программы: команды и данные находятся в памяти и могут управляться общей вычислительной машиной. Современная ОС добавляет к этой идее изоляцию и совместное использование ресурсов.
Управление оперативной памятью
Каждому процессу система показывает виртуальное адресное пространство. Адрес, с которым работает программа, не обязан совпадать с физической ячейкой оперативной памяти. Ядро и аппаратный блок управления памятью сопоставляют виртуальные страницы с физическими. Благодаря этому процессы не должны видеть память друг друга, а одна и та же библиотека может эффективно использоваться несколькими приложениями.
Если свободной оперативной памяти мало, система освобождает кэш, сжимает данные или перемещает редко используемые страницы на накопитель. Такой обмен помогает продолжить работу, но диск намного медленнее памяти, поэтому компьютер начинает заметно задерживаться. Файл подкачки не является полноценной заменой дополнительной оперативной памяти.
Файловая система и накопители
Файловая система организует байты накопителя в файлы и каталоги. Она хранит имена, размеры, время изменения, права доступа и сведения о расположении данных. Разные системы используют NTFS, APFS, ext4 и другие форматы, но приложения обычно обращаются к ним через похожие операции: создать, открыть, прочитать, записать, переместить и удалить.
Виртуальная файловая подсистема позволяет ядру работать с разными форматами через общий интерфейс. К локальному дереву могут подключаться флешки, сетевые хранилища и временные файловые системы в памяти. Журналирование или другие механизмы согласованности помогают восстановить структуру после внезапного отключения питания, хотя они не заменяют резервную копию.
Драйверы устройств
Драйвер переводит общие команды системы на язык конкретного устройства. Когда приложение печатает документ, оно не посылает электрические сигналы принтеру напрямую. Система формирует задание, а драйвер знает возможности модели и протокол обмена. Подобные посредники нужны для видеокарт, звуковых адаптеров, сетевых контроллеров, камер и многих внутренних компонентов.
Драйвер часто работает с высокими привилегиями, поэтому его ошибка или вредоносная подмена опаснее сбоя обычной программы. Современные системы проверяют цифровые подписи, ограничивают доступ и по возможности изолируют драйверы. Обновление драйвера имеет смысл, когда оно закрывает уязвимость, добавляет поддержку или исправляет конкретную неисправность, а не просто потому, что существует более новая версия.
Системные вызовы, библиотеки и API
Приложение переходит к функциям ядра через системные вызовы. Это контролируемая дверь между менее привилегированным кодом и ядром. Система проверяет параметры и права, выполняет операцию и возвращает результат. Непосредственно вызывать такие низкоуровневые функции неудобно, поэтому разработчики пользуются библиотеками и программными интерфейсами API.
API задаёт договорённость: как создать окно, открыть сетевое соединение или запросить доступ к камере. Благодаря устойчивому интерфейсу старая программа может работать на новом оборудовании. Многие системные компоненты написаны на языках, пригодных для точного контроля памяти и устройства машины. Как язык C стал особенно важным для переносимых систем, объясняет отдельная история системного программирования.
Фоновые службы
Не все полезные процессы имеют окно. Службы следят за сетью, временем, печатью, обновлениями, журналами, поисковым индексом и подключением устройств. Они запускаются при загрузке или по требованию. В Linux их часто называют демонами, в Windows – службами.
Каждый фоновый компонент расходует память и иногда процессорное время, но бездумно отключать незнакомые службы опасно. Одна может обеспечивать вход пользователя, другая – шифрование или сетевое обнаружение. Оптимизация начинается с диагностики нагрузки и понимания назначения, а не с удаления всего «лишнего».
Пользовательский интерфейс и командная строка
Графическая оболочка показывает рабочий стол, окна, меню и панели. Она принимает действия мыши, клавиатуры или сенсорного экрана и вызывает системные функции. Командная оболочка делает то же через текстовые команды. Это два способа управлять системой, а не две разные операционные системы.
Сервер может работать без полноценного рабочего стола, экономя ресурсы. На телефоне графическая оболочка, сенсорные жесты и система разрешений составляют почти неразделимый опыт. Android опирается на ядро Linux, но дополняет его собственными библиотеками, средой приложений и моделью безопасности. История платформы подробнее разобрана в статье «Кто придумал Android».
Учётные записи и безопасность
Операционная система устанавливает, кто может читать файл, запускать программу, менять настройки или обращаться к устройству. Учётная запись связывает действия с пользователем, а группы и роли упрощают выдачу прав. Принцип минимальных привилегий требует давать программе только те возможности, которые ей действительно нужны.
К защите относятся проверка входа, шифрование, межсетевой экран, изоляция процессов, безопасная загрузка и установка обновлений. Антивирус является лишь одним слоем. Если система давно не обновлялась, пользователь запускает неизвестные файлы с правами администратора и повторяет пароль, один защитный модуль не устранит все риски.
Что происходит при включении
Сначала прошивка компьютера проверяет оборудование и выбирает загрузочное устройство. Загрузчик находит ядро операционной системы и передаёт ему управление. Ядро включает управление памятью, процессами и основными устройствами, подключает корневую файловую систему, а затем запускает первый системный процесс.
После этого стартуют службы, сеть и графическая оболочка, появляется экран входа. Приложения из автозагрузки запускаются уже поверх готовой системы. Если сбой происходит на разных этапах, признаки различаются: устройство может не пройти проверку прошивки, загрузчик не найти систему, ядро не прочитать диск, а оболочка не показать рабочий стол.
Из чего состоит ОС в итоге
Операционная система – не одна программа и не только красивый рабочий стол. Это согласованный набор уровней. Ядро распределяет ресурсы, драйверы связывают его с аппаратурой, файловая система организует данные, службы выполняют постоянные задачи, библиотеки дают приложениям устойчивые интерфейсы, а средства безопасности определяют допустимые действия.
Устройство можно представить как городскую инфраструктуру. Процессор и память похожи на ограниченные ресурсы, планировщик регулирует движение, файловая система ведёт адреса, драйверы соединяют разные виды транспорта, а права доступа не позволяют каждому входить куда угодно. Пользователь обычно видит только окна, но надёжность всей работы зависит от невидимого взаимодействия этих частей.



