Перейти к основному содержимому

Программное обеспечение и операционная система

Всем

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

Связь с соседними материалами

Запуск и исполнение — в Что такое программа?.

Роль операционной системы и железа — ниже и в Как работает компьютер.

Софт обычного пользователя — в разделе Софт рядового пользователя.


ПО и система

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

См. также Что такое программа?: там — исполнение, компиляция и процесс. Здесь — как программы входят в ПО и системы.

Программное обеспечение (ПО) — совокупность программ, библиотек и данных для решения задач. Одна программа — элемент; ПО — пакет или экосистема:

  • Системное ПО — ОС (Windows, Linux), драйверы, фоновые службы, среды выполнения (JVM, .NET runtime), без которых байт-код и скрипты не стартуют; без ОС прикладные программы не запустятся.
  • Прикладное ПО — то, с чем работает пользователь — офис, браузер, игры; решает конкретную задачу "на столе".
  • Инструментальное ПО — среды и утилиты для создания других программ — IDE (Visual Studio, VS Code), компиляторы, отладчики; см. Код и разработка.

Система — это набор компонентов, словно целостный организм, где каждый элемент взаимодействует с другими для достижения общей цели. В отличие от ПО, система включает в себя не только технические составляющие, но и людей, процессы, и даже физическую инфраструктуру. Примером может служить банковская система, которая объединяет ПО (например, системы кредитного конвейера, учёта транзакций), аппаратное обеспечение (серверы, терминалы), сотрудников (операторов, аналитиков) и регламенты (правила безопасности, протоколы работы). Иерархия: система ⊃ ПО ⊃ программа (программа выполняет конкретную задачу внутри более крупного решения).


Системное ПО

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

Основные компоненты системного ПО:


Операционная система (ОС)

Ядро всей системы. Она управляет:

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

Примеры — Windows 11, Ubuntu, macOS, Android. Подробный разбор функций ОС — в разделе Операционная система; как приложения обращаются к ядру — в Взаимодействие программ с ОС.

Когда вы открываете файл в проводнике, прикладная программа не пишет на диск напрямую: она вызывает API ОС, а та через драйвер обращается к накопителю. Тот же принцип для сети, камеры и микрофона.


Драйверы устройств

Специализированные программы, которые "переводят" команды операционной системы на язык конкретного оборудования. Без драйвера видеокарта не выведет изображение, принтер не напечатает, Wi-Fi модуль не подключится к сети. Драйверы работают на уровне ядра или в режиме пользователя (в зависимости от архитектуры ОС).


Службы и демоны

Фоновые процессы, обеспечивающие непрерывную работу системы:

  • служба обновлений — проверяет и устанавливает патчи,
  • служба времени — синхронизирует часы с сервером,
  • демон печати — управляет очередью заданий,
  • systemd в Linux — координирует запуск всех остальных служб.

Утилиты системного уровня

Программы для администрирования и диагностики:

  • diskpart / fdisk — управление разделами диска,
  • taskmgr / htop — мониторинг процессов и ресурсов,
  • sfc / fsck — проверка целостности системных файлов.

Системное ПО — фундамент. Оно создаёт единое пространство, в котором могут сосуществовать прикладные программы, не зная друг о друге напрямую. Оно отвечает за справедливость, порядок и ресурсы.


Прикладное ПО

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

Прикладное ПО делится на категории по назначению:


Офисные приложения

Работа с документами в привычных форматах (.docx, .xlsx, .pdf). Текстовые процессоры (Microsoft Word, LibreOffice Writer) хранят структуру абзацев и стилей; табличные редакторы (Excel, Google Sheets) оперируют ячейками и формулами — примеры СУММ, ЕСЛИ, ВПР с разбором в Excel и Google Sheets — формулы — Lab; редакторы презентаций (PowerPoint, Impress) собирают слайды из текста и графики. Общее у них — локальное или облачное хранение файлов и обмен через почту или мессенджеры.


Мультимедиа

Проигрыватели (VLC, MPC-HC) декодируют сжатые форматы (MP4, MP3) и выводят поток на экран и колонки. Редакторы (Photoshop, DaVinci Resolve, Audacity) изменяют исходные данные и сохраняют новый файл — нагрузка на CPU и GPU выше, чем у проигрывания. Конвертеры переводят один формат в другой (например, WAV → MP3) без полноценного монтажа.


Коммуникации

Мессенджеры (Telegram, WhatsApp Desktop) держат постоянное или периодическое соединение с сервером — см. основы сети. Почтовые клиенты (Outlook, Thunderbird) скачивают письма по IMAP/POP3 и отправляют по SMTP. Видеоконференции (Zoom, Jitsi) совмещают захват аудио/видео с потоковой передачей; часто работают как отдельный процесс с доступом к камере через разрешения ОС.


Интернет-навигация

Браузеры (Chrome, Firefox, Edge) — главный вход в веб — загрузка HTML, выполнение JavaScript, кэш страниц. Как устроены сайты с точки зрения сети — в Как работают сайты. RSS-агрегаторы подписываются на ленты новостей без обхода каждого сайта вручную. Загрузчики управляют большими файлами (докачка, очередь).


Образование и наука

Обучение, моделирование, расчёты:

  • среды программирования для обучения (Scratch, Thonny),
  • симуляторы (логические схемы, физические эксперименты),
  • визуализаторы данных (Tableau Public, Grafana).

Бизнес-приложения

Учёт, планирование, управление:

  • CRM-системы (1C:CRM, Bitrix24),
  • бухгалтерия (1C:Бухгалтерия, Контур.Бухгалтерия),
  • ERP-системы (SAP, Oracle E-Business Suite).

В отличие от системного ПО, прикладное ПО:

  • ориентировано на конечную цель (написать отчёт, отредактировать фото),
  • имеет развитый пользовательский интерфейс,
  • часто работает через API других систем (например, облачных сервисов),
  • может быть как локальным (установленным на компьютере), так и веб-приложением.

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


Инструментальное ПО

Инструментальное программное обеспечение — программы, предназначенные для создания, отладки, тестирования, анализа и поддержки других программ. Это "инструменты для строителей", а не "дома для жильцов".

Основные виды инструментального ПО:


Интегрированные среды разработки (IDE)

Интегрированная среда разработки (ИСР, IDE) — один комплекс программ для всего цикла "написал → собрал → запустил → отладил". В отличие от набора разрозненных утилит разработчик остаётся в одном окне — меньше переключений, быстрее обратная связь (подсветка ошибок, подсказки по API).

Типичный состав:

  • редактор исходного кода — подсветка синтаксиса, отступы, автодополнение, проверка парных скобок;
  • транслятор — компилятор и/или интерпретатор;
  • сборка — Make, MSBuild, Gradle и аналоги;
  • отладчик — точки останова, пошаговое выполнение, просмотр переменных (подробнее);
  • SCM — Git и другие системы версий;
  • опционально — визуальный конструктор форм, профилировщик, тесты.

Исторически одной из первых IDE для массового рынка считают Maestro I (1975); язык Dartmouth BASIC (1964) уже объединял правку, компиляцию и запуск в одной консоли. Современные примеры — Visual Studio, IntelliJ IDEA, PyCharm, Eclipse, Android Studio, Xcode. Развёрнутое сравнение — в разделе 4.04 IDE.


Редакторы исходного кода

Редактор исходного кода — программа для текста программы с функциями, ускоряющими разработку — подсветка, автодополнение, запуск компилятора из меню. Может входить в IDE или работать отдельно.

Обычный текстовый редактор (Блокнот) файл .java откроет, но без анализа языка это просто символы. Граница — в автоматизации ввода и структуры кода.

Популярные варианты:

  • Visual Studio Code — лёгкий кроссплатформенный редактор с расширениями (часто используют как IDE);
  • Notepad++ (Windows, Scintilla) — подсветка, макросы, плагины;
  • Vim / Neovim — терминальный редактор, режимы команд и вставки; мощен при освоении горячих клавиш;
  • Sublime Text, Emacs.

Для старта в курсе обычно достаточно VS Code; подробности — IDE и редакторы.


Системы сборки

Автоматизируют процесс компиляции, связывания, тестирования:

  • Make (классический инструмент для C/C++),
  • CMake (генератор make-файлов для разных платформ),
  • Maven, Gradle (для Java),
  • MSBuild (.NET).

Отладчики

Отладчик — программа, которая присоединяется к выполняющемуся процессу (или запускает его под контролем) и помогает найти ошибку — трассировка, точки останова, просмотр стека и переменных. В IDE отладчик встроен; отдельно ставят GDB (Linux, нативный код), WinDbg (Windows), отладчик в Xcode, Android Studio.

Символьные отладчики показывают исходный текст; машинные — дизассемблер и регистры. Для .NET и Java нужны отладочные символы (PDB, javac -g). См. Отладка.

  • GDB — GNU Debugger, низкоуровневая отладка на Linux;
  • WinDbg — отладчик Microsoft для Windows;
  • модуль pdb в Python — пошаговая отладка (имя совпадает с файлами символов .pdb в .NET, но это разные вещи).

Профилировщики

Анализируют производительность программы:

  • какие функции тратят больше всего времени (time, cProfile),
  • где происходят утечки памяти (Valgrind, AddressSanitizer),
  • как используется процессор и кэш (perf, Intel VTune).

Генераторы кода и шаблонизаторы

Автоматически создают заготовки программ:

  • yeoman — для веб-проектов,
  • dotnet new — для .NET,
  • create-react-app (устаревший, но показательный пример).

Средства документирования

Преобразуют комментарии в коде в структурированную документацию:

  • Javadoc (Java),
  • Doxygen (мультиязычный),
  • Sphinx (Python, Markdown/RST).

Инструментальное ПО редко используется конечными пользователями. Его аудитория — разработчики, тестировщики, DevOps-инженеры. Чем выше качество инструментов, тем быстрее и надёжнее создаются прикладные программы.


Информационная система

Понятие информационной системы

Информационная система – система для сбора, хранения и обработки данных. В отличие от простого вычисления, здесь выстраивается целый процесс работы с информацией. Самый известный пример в России — портал Госуслуги — веб-интерфейс, серверы, базы данных, интеграция с ведомствами, регламенты для операторов. Это частный случай системы, ориентированный на данные на всех этапах жизненного цикла — сбор, хранение, обработка, анализ, распространение. См. также Государство и бизнес про крупные ИС в госсекторе и корпорациях.


Инфраструктура

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

Инфраструктура делится на уровни:


Физическая инфраструктура

Базовый слой — "железо" и его окружение:

  • серверы, дисковые массивы (SAN/NAS), сетевые коммутаторы и маршрутизаторы;
  • системы охлаждения, бесперебойного питания (ИБП), пожаротушения;
  • дата-центры — здания, спроектированные под размещение оборудования — с контролем доступа, резервированием вводов электропитания, экранированием от помех.

Сетевая инфраструктура

Обеспечивает связь между компонентами:

  • локальные сети (LAN), широкие сети (WAN), межсетевые экраны (firewalls);
  • системы балансировки нагрузки (Nginx, HAProxy, F5);
  • DNS-серверы, DHCP-серверы, системы мониторинга трафика (Wireshark, Zabbix).

Программная инфраструктура

Слои, построенные поверх аппаратуры:

  • гипервизоры (VMware ESXi, KVM, Hyper-V) для виртуализации;
  • контейнерные платформы (Docker, containerd);
  • оркестраторы (Kubernetes, Nomad);
  • системы конфигурации и развёртывания (Ansible, Terraform, Puppet).

Операционная инфраструктура

Сервисы и практики управления:

  • системы мониторинга (Prometheus + Grafana, Datadog);
  • логирование (ELK-стек — Elasticsearch, Logstash, Kibana);
  • централизованная аутентификация (LDAP, Active Directory, Keycloak);
  • CI/CD-конвейеры (GitLab CI, Jenkins, GitHub Actions).

Человеческая инфраструктура

Невидимый, но критически важный слой:

  • регламенты резервного копирования и аварийного восстановления;
  • процедуры инцидент-менеджмента (ITIL-подход);
  • документация архитектуры, схемы взаимодействия, runbook’и;
  • команды поддержки, дежурства, ротации ответственности.

Инфраструктура — это то, на чём работают программы. Она должна быть:

  • надёжной — минимизация простоев,
  • масштабируемой — возможность роста под нагрузку,
  • воспроизводимой — развёртывание одинаковой среды в разных местах (dev/stage/prod),
  • наблюдаемой — возможность понять состояние системы в любой момент.

Простой пример: сайт example.com. Его инфраструктура включает — доменное имя (DNS), веб-сервер (Nginx), бэкенд (Node.js), базу данных (PostgreSQL), CDN для статики, систему сбора метрик и бэкапов. Всё это — инфраструктура, без которой сайт перестаёт существовать как сервис.


Аппаратное обеспечение

Аппаратное обеспечение (hardware) — физические компоненты компьютера и связанных с ним устройств. Это материальная основа, на которой работает всё программное обеспечение.

Основные группы аппаратного обеспечения:


Центральный процессор (CPU)

"Мозг" компьютера. Выполняет инструкции, управляет потоком данных, координирует работу остальных компонентов. Современные процессоры многоядерные — каждое ядро работает как отдельный вычислитель, что позволяет обрабатывать несколько задач одновременно.


Оперативная память (RAM)

Временное хранилище для данных и кода, с которыми работает процессор сейчас. Чем больше RAM — тем больше программ может быть загружено одновременно без замедления. Информация в RAM исчезает при отключении питания.


Постоянное хранилище

Устройства для долговременного хранения данных:

  • жёсткие диски (HDD) — высокая ёмкость, невысокая скорость, механическая конструкция;
  • твердотельные накопители (SSD) — высокая скорость, отсутствие движущихся частей, дороже за гигабайт;
  • флеш-накопители, SD-карты — портативные решения.

Графический процессор (GPU)

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


Устройства ввода и вывода

Средства взаимодействия с пользователем или внешним миром:

  • ввод — клавиатура, мышь, сканер, микрофон, сенсорный экран;
  • вывод — монитор, принтер, акустическая система, проектор.

Сетевые интерфейсы

Обеспечивают подключение к сетям:

  • проводные (Ethernet-адаптеры — 1 Гбит/с, 10 Гбит/с);
  • беспроводные (Wi-Fi, Bluetooth);
  • специализированные (оптические трансиверы для дата-центров).

Материнская плата

Основная печатная плата, объединяющая все компоненты:

  • разъёмы для CPU;
  • RAM;
  • дисков;
  • карт расширения; чипсет;
  • BIOS/UEFI; встроенные контроллеры (звук, сеть, USB).

Аппаратное обеспечение определяет физические границы возможностей:

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

Программа не может "обойти" физические ограничения аппаратуры — она может лишь эффективнее их использовать.