Файл: Развитие системного программирования.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 17.10.2024

Просмотров: 5

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Развитие системного программирования

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

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

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

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

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

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

  • Обычно используется низкоуровневый язык программирования или диалект языка программирования, чтобы:

    • Программы могут работать в средах с ограниченными ресурсами

    • Программы могут быть эффективными с небольшими затратами времени выполнения, возможно, с небольшой библиотекой времени выполнения или вообще без нее

    • Программы могут использовать прямое и "сырое" управление доступом к памяти и потоком управления

    • Программист может писать части программы непосредственно на языке ассемблера

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


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

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

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

Изначально системные программисты неизменно писали на языке ассемблера. Эксперименты с аппаратной поддержкой языков высокого уровня в конце 1960-х годов привели к появлению таких языков, как PL/S, BLISS, BCPL и расширенный АЛГОЛ для больших систем Burroughs. Forth также имеет приложения в качестве системного языка. В 1970-х годах C получил широкое распространение, чему способствовал рост Unix. Совсем недавно подмножество C ++, называемое Embedded C ++, получило некоторое применение, например, оно используется в драйверах набора ввода-вывода macOS.

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

Основные функции (простейшие операционные системы):

  • Загрузка приложений в оперативную память и их выполнение.

  • Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).

  • Управление оперативной памятью (распределение между процессами, виртуальная память).

  • Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, компакт-диск и т. д.), организованным в той или иной файловой системе.

  • Пользовательский интерфейс.

  • Сетевые операции, поддержка стека протоколов.

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



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

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

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

Типы утилит:

  • Дисковые утилиты:

    • Дефрагментаторы;

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

    • Очистка диска — удаление временных файлов, ненужных файлов, чистка «корзины».

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

    • Резервное копирование — создание резервных копий целых дисков и отдельных файлов, а также восстановление из этих копий.

    • Сжатие дисков — сжатие информации на дисках для увеличения вместимости жёстких дисков.

  • Утилиты работы с реестром

  • Утилиты мониторинга оборудования

  • Тесты оборудования

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

  • Исследованием структуры организационных проблем, решаемых программной инженерией;

  • Предоставлением формализмов для моделирования и представления проблем;

  • Предоставлением рекомендаций и рамок для анализа и декомпозиции проблем;

  • Определением методов формального обоснования решений (например, путем сопоставления компонентов проблемы с компонентами решения);

  • Поддержка повторного использования знаний при анализе проблем (например, с помощью шаблонов проблем).


Конкретные подходы:

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

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

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

Исследование влияния проблемно-ориентированного развития.

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

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