Общие сведения
Системное программирование – это программирование, направленное на взаимодействие с аппаратными ресурсами вычислительной системы. Выполняется оно преимущественно на низкоуровневом языке программирования, максимально учитывая архитектуру аппаратной части платформы.
Целью прикладного программирования является создание программ, выполняющих определённые задачи пользователя – математический расчёт, редактирование текста, изображения или видео, ведение статистики, создание базы данных, составление расписания и т.п. Целью же системного программирования является создание инструментов для оптимального взаимодействия прикладной программы с оборудованием и операционной системой.
Поэтому системная программа не ориентирована на конкретные задачи пользователя, она предназначена для взаимодействия с определённой аппаратной частью и определённой операционной системой. Это даёт возможность прикладному программисту быстро адаптировать свои программы под разные платформы, используя системные программы, созданные для этой платформы.
На основании вышесказанного можно выделить основные признаки, отличающие системное программирование от прикладного:
- системное программное обеспечение напрямую использует системные вызовы операционной системы;
- пользователями разработанного системного программного обеспечения являются другие программисты;
- разработанное системное программное обеспечение многократно используется в различных прикладных приложениях.
Таким образом, системные программы являются необходимой и важной составляющей при создании прикладных программ, они значительно сокращают время разработки за счёт исключения подробного изучения программистом аппаратной части системы и увеличивают производительность программ, обеспечивая оптимальное использование ресурсов.
Системные программы обычно разрабатываются на машинно-ориентированных языках. Благодаря их совместимости с оборудованием, обеспечивается повышенная производительность, но при этом теряется универсальность и переносимость между платформами. Таким образом, для каждой аппаратной платформы и операционной системы должен быть создан свой набор системных программ.
Чаще всего системные программы разрабатываются на низкоуровневом языке программирования Ассемблер, который может быть специфичным для конкретной компьютерной архитектуры и центрального процессора. Современные языки высокого уровня также обладают возможностью написания кода системных программ. Так, например, язык С позволяет использовать в тексте программы ассемблерные вставки или подключать к тексту программы подпрограммы на языке ассемблера.
Классификация системных программ
Обычно системное программное обеспечение оформляется в виде библиотек функций, которые можно подключать к создаваемым прикладным программам.
Системные программы можно условно разделить на следующие категории:
- операционные системы;
- драйверы;
- сервисные программы для обслуживания оборудования;
- диагностические средства;
- программные средства, обеспечивающие автоматизацию разработки прикладного программирования.
Операционная система – это комплекс взаимосвязанных программ, предназначенных для управления ресурсами компьютера, учитывающих микроархитектуру устройств вычислительной системы и предоставляющих пользователю необходимый набор функций в виде библиотек.
Драйверы – это программные компоненты, которые используются устройствами вычислительной системы (процессором, памятью, видеокартой, клавиатурой, внешними подключаемыми устройствами) для взаимодействия с операционной системой. Драйверы обычно разрабатываются производителями аппаратных средств для различных операционных систем и продаются как неотъемлемая часть вместе с этими средствами. Они являются посредниками между аппаратными устройствами компьютера и операционной системой, обеспечивая передачу данных между ними.
Таким образом, можно представить следующую схему взаимодействия: если программисту, разрабатывающему прикладную программу, необходимо передать данные в память компьютера или сохранить файл на жёстком диске он обращается к соответствующей функции из библиотеки операционной системы, которая в свою очередь обращается к драйверу используемого в данной операции устройства.
Сервисные программы для обслуживания оборудования позволяют оптимизировать работу аппаратных средств для их более эффективного использования. Так, например, жёсткий диск со временем в результате многочисленных записей и перезаписей файлов, становится фрагментированным, то есть части одного файла становятся разбросанными в произвольном порядке, что сильно замедляет запись и чтение этих файлов. Сервисная программа дефрагментации дисков позволяет упорядочить размещение файлов, что значительно ускоряет работу с ними.
Реестр операционной системы со временем из-за сбоев в работе, неправильного завершения работы программ или удаления ненужных программ, накапливает в себе “мусор” или ненужные ссылки. Сервисная программа очистки реестра очищает его от ненужных данных, увеличивая тем самым производительность операционной системы.
Диагностические средства позволяют проверять исправность аппаратных ресурсов, обнаруживать и устранять отказы. Это помогает прикладному программисту убедиться, что его программа не работает из-за отказа оборудования, а не из-за неправильно написанного кода.
Программные средства, обеспечивающие автоматизацию разработки прикладного программирования, – это программы-трансляторы, отладчики, компоновщики, редакторы ресурсов и другие. Эти программы также относятся к системным, поскольку разрабатываются с учётом архитектуры аппаратных ресурсов и особенностей операционной системы компьютера. Применяя на практике такие инструменты, разработчики прикладных программ могут пользоваться универсальными языками программирования высокого уровня, а при компиляции программы в исполняемый файл особенности архитектуры вычислительной будут учитываться автоматически программой-компилятором.