Системное программное обеспечение

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

Системное программирование — создание системного программного обеспечения; системный программист — разработчик системного программного обеспечения.

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

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

Операционные системы 

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

Функции операционных систем 
Основные функции (простейшие операционные системы):
 Загрузка приложений в оперативную память и их выполнение.
 Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).
 Управление оперативной памятью (распределение между процессами, виртуальная память).
 Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, компакт-диск и т. д.), организованным в той или иной файловой системе.
 Пользовательский интерфейс.
 Сетевые операции, поддержка стека протоколов.

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

Есть приложения вычислительной техники, для которых операционные системы излишни. Например, встроенные микрокомпьютеры содержатся сегодня во многих бытовых приборах, автомобилях (иногда по десятку в каждом), сотовых телефонах и т. п. Зачастую такой компьютер постоянно исполняет лишь одну программу, запускающуюся по включении. И простые игровые приставки — также представляющие собой специализированные микрокомпьютеры — могут обходиться без операционной системы, запуская при включении программу, записанную на вставленном в устройство «картридже» или компакт-диске. Тем не менее некоторые микрокомпьютеры и игровые приставки всё же работают под управлением особых собственных операционных систем. В большинстве случаев, это UNIX-подобные системы (последнее особенно верно в отношении программируемого коммутационного оборудования: файрволов, маршрутизаторов).

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

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

Встроенные программы 

Встроенные программы или firmware — это программы, «зашитые» в цифровые электронные устройства. В ряде случаев (например, BIOS IBM-PC совместимых компьютеров) являются по сути частью операционной системы, хранящейся в постоянной памяти. В достаточно простых устройствах вся операционная система может быть встроенной. Многие устройства современных компьютеров имеют собственные «прошивки», осуществляющие управление этими устройствами и упрощающие взаимодействие с ними.

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

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

Типы утилит 
 Дисковые утилиты
 Дефрагментаторы
 Проверка диска — поиск неправильно записанных либо повреждённых различным путём файлов и участков диска и их последующее удаление для эффективного использования дискового пространства.
 Очистка диска — удаление временных файлов, ненужных файлов, чистка «корзины».
 Разметка диска — деление диска на логические диски, которые могут иметь различные файловые системы и восприниматься операционной системой как несколько различных дисков.
 Резервное копирование — создание резервных копий целых дисков и отдельных файлов, а также восстановление из этих копий.
 Сжатие дисков — сжатие информации на дисках для увеличения вместимости жёстких дисков.
 Утилиты работы с реестром
 Утилиты мониторинга оборудования
 Тесты оборудования

Системы программирования 

К этой категории относятся системные программы, предназначенные для разработки программного обеспечения:

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

Системы управления базами данных 

Система управления базами данных (СУБД) — специализированная программа (чаще комплекс программ), предназначенная для организации и ведения базы данных.

Так как системы управления базами данных не являются обязательным компонентом вычислительной системы, зачастую их не относят к системному программному обеспечению. Часто СУБД осуществляют лишь служебную функцию при работе других видов программ (веб-серверы, серверы приложений), поэтому их не всегда можно отнести к прикладному программному обеспечению. Поэтому СУБД иногда относят к промежуточному программному обеспечению (Middleware).

Основные функции СУБД 
 управление данными во внешней памяти (на дисках);
 управление данными в оперативной памяти с использованием дискового кэша;
 журнализация изменений, резервное копирование и восстановление базы данных после сбоев;
 поддержка языков баз данных (язык определения данных, язык манипулирования данными).

Классификация СУБД по способу доступа к базе данных 
 Файл-серверные, в которых файлы данных располагаются централизованно на файл-сервере, а программная реализация СУБД располагается на каждом клиентском компьютере целиком. Доступ к данным осуществляется через локальную сеть. Синхронизация чтений и обновлений осуществляется посредством файловых блокировок. Всплеск популярности файл-серверных систем управления базами данных относится к концу 1980-х — началу 1990-х годов.
 Клиент-серверные СУБД состоят из клиентской части (которая входит в состав прикладной программы) и сервера (см. Клиент-сервер).
 Встраиваемые — программные библиотеки, которые позволяют унифицированным образом хранить большие объёмы данных на локальной машине.

См. также 
 Низкоуровневый язык программирования
 Машинный код

Литература 
 Васильев В. Г. Системное программное обеспечение