ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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-привода; изменение скорости вращения вентиляторов), контроля показателей (проверка ссылочной целостности; правильности записи данных), расширения возможностей (форматирование или переразметка диска с сохранением данных, удаление без возможности восстановления).
Типы утилит:
-
Дисковые утилиты:-
Дефрагментаторы; -
Проверка диска — поиск неправильно записанных либо повреждённых различным путём файлов и участков диска и их последующее удаление для эффективного использования дискового пространства. -
Очистка диска — удаление временных файлов, ненужных файлов, чистка «корзины». -
Разметка диска — деление диска на логические диски, которые могут иметь различные файловые системы и восприниматься операционной системой как несколько различных дисков. -
Резервное копирование — создание резервных копий целых дисков и отдельных файлов, а также восстановление из этих копий. -
Сжатие дисков — сжатие информации на дисках для увеличения вместимости жёстких дисков.
-
-
Утилиты работы с реестром -
Утилиты мониторинга оборудования -
Тесты оборудования
Проблемное программирование (проблемно-ориентированная разработка) — это формирующаяся парадигма вычислительной техники, в которой проблемы (в отличие от требований) являются основным предметом пристального внимания разработчиков программного обеспечения. Таким образом, проблемно-ориентированная разработка связана с:
-
Исследованием структуры организационных проблем, решаемых программной инженерией; -
Предоставлением формализмов для моделирования и представления проблем; -
Предоставлением рекомендаций и рамок для анализа и декомпозиции проблем; -
Определением методов формального обоснования решений (например, путем сопоставления компонентов проблемы с компонентами решения); -
Поддержка повторного использования знаний при анализе проблем (например, с помощью шаблонов проблем).
Конкретные подходы:
-
Проблемно-ориентированная разработка программного обеспечения обеспечивает формальное определение проблем и структуру для сопоставления проблем с решениями с помощью формальных, логических аргументов; -
Проблемные фреймы обеспечивают основу для определения эмпирических моделей проблем разработки программного обеспечения, которые основаны на физическом мире. Подход с использованием фреймов проблем также предоставляет набор элементарных шаблонов проблем; -
Теория предметной области выдвигает гипотезу о наборе когнитивных «глубинных структур», соответствующих компонентам знаний предметной области, и использует их для обеспечения основы для моделирования проблем с программным обеспечением.
Исследование влияния проблемно-ориентированного развития.
Инженерия знаний — это область компьютерных наук, которая предлагает значительный объем работ по методам решения проблем. Методы решения проблем — это шаблоны рассуждений, которые применяются для решения конкретных проблем. Поэтому работа над абстракциями проблем в рамках разработки знаний может стать основой для исследований в области разработки программного обеспечения.
Когнитивная наука, которую можно определить как изучение природы интеллекта, предлагает основу для изучения когнитивных структур, которые эксперты предметной области разрабатывают для решения проблем, а также для лучшего понимания человеческих подходов к решению проблем. Теория предметной области является одним из примеров влияния когнитивной науки на исследования проблемно-ориентированного развития.