Участник:Vald/Системное программирование
Содержимое этой статьи нуждается в чистке. |
В статье не хватает ссылок на источники (см. рекомендации по поиску). |
Системное программирование (или программирование систем) — подраздел программирования, заключающийся в работе над системным программным обеспечением.
Определение «системное» подчеркивает тот факт, что результаты этого вида программирования существенно меняют свойства и возможности вычислительной системы. В то же время бесспорным остаётся тот факт, что в определенной степени этот результат имеет место при применении любых программ, выполняемых в вычислительной системе. Поэтому между программированием «системным» и «несистемным» (прикладным программированием") нет четкой границы.
Вычислительная система имеет иерархическую структуру, которую можно представить в виде набора вложенных слоев, на внешнем из которых находятся прикладные программы, а на самом внутреннем — аппаратура компьютера. Условная степень системности нарастает при программировании, затрагивающем все более внутренние уровни системы.
Одной из основных отличительных черт системного программирования по сравнению с прикладным заключается в том, что результатом последнего является выпуск программ для взаимодействия с пользователем (например, текстовый процессор). В то время как результатом системного программирования является выпуск программ для взаимодействия с аппаратным обеспечением (например, дефрагментация жёсткого диска), что подразумевает сильную зависимость таких программ от аппаратной части. В частности выделим следующее:
- программист должен учитывать специфику аппаратной части и другие, часто уникальные, свойства системы в которой функционирует программа, использовать эти свойства, например, применяя специально оптимизированный для данной архитектуры алгоритм;
- часто используется низкоуровневый язык программирования или такой диалект языка программирования, который
- позволяет функционирование в окружении с ограниченным набором системных ресурсов,
- работает максимально эффективно и имеет минимальное запаздывание по времени завершения,
- имеет маленькую библиотеку времени выполнения (RTL) или не имеет её вообще,
- позволяет прямое управление (прямой доступ) к памяти и управляющей логике,
- позволяет делать ассемблерные вставки в код;
- отладка программы может быть затруднена при невозможности запустить её в отладчике из-за ограничений на ресурсы, поэтому может применяться компьютерное моделирование для решения этой проблемы.
Подводя итог, можно утверждать, что СИСТЕМНЫМ следует называть подраздел программирования как вида инженерной деятельности, в котором программист использует специфические и часто уникальные свойства и возможности ВНУТРЕННИХ УРОВНЕЙ вычислительной системы.
Системное программирование отличается от прикладного, что обычно приводит к специализации программиста в одном из них.
Часто, для системного программирования доступен ограниченный набор средств. Использование автоматической сборки мусора довольно редкое явление и отладка обычно сложна. Библиотека времени выполнения, при её наличии, часто менее способная и совершает меньшее количество проверок. В связи с этими ограничениями обычно применяют при мониторинге и записи данных — операционные системы.