Что такое системное программирование
Перейти к содержимому

Что такое системное программирование

  • автор:

Содержание

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

Целью изучения дисциплины являются теоретические основы построения и практическое использование системного программного обеспечения и BIOS как эффективного средства обработки данных в ЭВМ.

В персональном компьютере все основные программы, предназначенные для начальной загрузки, собраны в универсальную программу, которая записана в постоянном запоминающем устройстве, носящем название ROM BIOS или BIOS – Basic Input/Output System (базовая система ввода/вывода). Объем современной BIOS не менее 1–2 Мбайт.

Традиционно все программы, записанные в микросхеме BIOS, можно разделить по выполнению следующих функций:

инициализация и начальное тестирование всех основных (стандартных) узлов компьютера — расположенных на системной плате, подключенных к шине IDE и вставленных в слоты расширения. Для этого используется программа POST (Power On Self Test), также записанная в микросхеме BIOS. Отметим, что «нестандартные» платы расширения, например старые интерфейсы сканеров не тестируются;

загрузка операционной системы с внешнего устройства ‒ гибкого диска, винчестера, компакт-диска или ПЗУ сетевой карты. В самых первых персональных компьютерах был вариант, когда можно было загрузить интерпретатор языка Basic, который находился в дополнительной микросхеме ПЗУ;

обслуживание аппаратных прерываний, например, от клавиатуры и таймера, обработка программных прерываний BIOS, которые предназначены для управления обменом данными между операционной системой компьютера и подключенными к нему периферийными устройствами, выполнение базовых функций, например, вывод на экран монитора символов и работа с дисковыми устройствами;

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

После включения питания или нажатия кнопки Reset у компьютера на адресной шине системной платы аппаратно устанавливается адрес точки входа в программу BIOS, которая в момент старта находится в самых старших ячейках адресуемой памяти.

Следует заметить, что первоначальный адрес загрузки искусственно формируется чипсетом системной платы, который принудительно устанавливает все адресные линии, кроме первых четырех, в единичное состояние. После передачи управления BIOS точка входа становится доступной по стандартному адресу 0FFFF0h, где ею может воспользоваться любая программа.

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

Системное программирование (или программирование систем) — подраздел программирования, заключающийся в работе над системным программным обеспечением.

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

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

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

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

    Подводя итог, можно утверждать, что СИСТЕМНЫМ следует называть подраздел программирования как вида инженерной деятельности, в котором программист использует специфические и часто уникальные свойства и возможности ВНУТРЕННИХ УРОВНЕЙ вычислительной системы.

    Системное программирование отличается от прикладного, что обычно приводит к специализации программиста в одном из них.

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

    • Парадигмы программирования

    Wikimedia Foundation . 2010 .

    Полезное

    Смотреть что такое «Системное программирование» в других словарях:

    системное программирование — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN systems programming … Справочник технического переводчика

    системное программирование — sisteminis programavimas statusas T sritis automatika atitikmenys: angl. system programming vok. Systemprogrammierung, f rus. системное программирование, n pranc. programmation système, f … Automatikos terminų žodynas

    СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ — 1) Инженерная дисциплина, разрабатывающая методы построения системных программ, т. е. программ, входящих в состав больших программных комплексов (программных систем), придающих вычислительным средствам постоянные функции нек рой специальной… … Математическая энциклопедия

    Системное программное обеспечение — Системное программное обеспечение  это комплекс программ, которые обеспечивают управление компонентами компьютерной системы, такими как процессор, оперативная память, устройства ввода вывода, сетевое оборудование, выступая как «межслойный… … Википедия

    ПРОГРАММИРОВАНИЕ — 1) процесс составления программы, плана действий; 2) дисциплина, изучающая методы и приемы составления программ. С определенной долей условности П. как дисциплина делится на программирование теоретическое, изучающее математич. абстракции программ … Математическая энциклопедия

    ПРОГРАММИРОВАНИЕ — 1) процесс составления программы, плана действий. 2) Раздел информатики, изучающий методы и приёмы составления программ. С долей условности П. как дисциплина разделяется на: теоретическое, изучающее матем. абстракции программ (как объектов с… … Физическая энциклопедия

    ПРОГРАММИРОВАНИЕ — совокупность и последовательность действий в целях получения конкретного результата; (1) П. в вычислительной технике процесс составления (см.) в соответствии с данным (см.) на ЭВМ, а также создание средств программного обеспечения, с помощью… … Большая политехническая энциклопедия

    Перехват (программирование) — У этого термина существуют и другие значения, см. Перехват. Перехват (англ. hooking) технология, позволяющая изменить стандартное поведение тех или иных компонентов информационной системы. Содержание 1 Назначение технологии перехвата … Википедия

    Событийно-ориентированное программирование — Парадигмы программирования Агентно ориентированная Компонентно ориентированная Конкатенативная Декларативная (контрастирует с Императивной) Ограничениями Функциональная Потоком данных Таблично ориентированная (электронные таблицы) Реактивная … Википедия

    RAD (программирование) — У этого термина существуют и другие значения, см. RAD. Разработка программного обеспечения Процесс разработки ПО Шаги процесса Анализ • Проектиро … Википедия

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

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

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

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

    На основании вышесказанного можно выделить основные признаки, отличающие системное программирование от прикладного:

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

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

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

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

    Классификация системных программ

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

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

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

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

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

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

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

    Реестр операционной системы со временем из-за сбоев в работе, неправильного завершения работы программ или удаления ненужных программ, накапливает в себе “мусор” или ненужные ссылки. Сервисная программа очистки реестра очищает его от ненужных данных, увеличивая тем самым производительность операционной системы.

    Диагностические средства позволяют проверять исправность аппаратных ресурсов, обнаруживать и устранять отказы. Это помогает прикладному программисту убедиться, что его программа не работает из-за отказа оборудования, а не из-за неправильно написанного кода.

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

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

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

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

    Обзор

    Следующие атрибуты характеризуют системное программирование:

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

      Системное программирование настолько отличается от прикладного программирования, что программисты склонны специализироваться на одном или другом. [ нужна ссылка ]

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

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

      История

      Первоначально системные программисты неизменно писали на языке ассемблера . Эксперименты с аппаратной поддержкой языков высокого уровня в конце 1960-х годов привели к появлению таких языков, как PL/S , BLISS , BCPL и расширенный ALGOL для больших систем Burroughs . Форт также имеет приложения в качестве системного языка. В 1970-х C получил широкое распространение, чему способствовал рост Unix . Совсем недавно подмножество C ++ , называемое Embedded C ++ , нашло некоторое применение, например, оно используется в драйверах I/O Kit для macOS . [2]

      Альтернативное значение

      По историческим причинам некоторые организации используют термин системный программист для описания должностной функции, которую более точно можно было бы назвать системным администратором . Это особенно верно для организаций, в которых исторически доминировали компьютерные ресурсы мейнфреймов , хотя этот термин даже используется для описания рабочих функций, которые не связаны с мэйнфреймами. Это использование возникло из-за того, что администрирование мэйнфреймов IBM часто включало в себя написание специального кода ассемблера ( IBM Basic Assembly Language (BAL)), который интегрировался с операционной системой , такой как OS/MVS , DOS/VSE или VM/CMS. . Действительно, код некоторых программных продуктов IBM был значительно дополнен персоналом программистов заказчика. Этот тип программирования становится все менее распространенным, но термин « системный программист » по-прежнему де-факто является названием должности для сотрудников, непосредственно управляющих мейнфреймами IBM.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *