Введение
Назначением ЭВМ является выполнение программ, которые содержат команды, определяющие порядок действий компьютера. Совокупность программ для компьютера образует программное обеспечение (ПО). Программное обеспечение − это общий термин для обозначения "неосязаемых" , в отличие от физических, составных частей компьютерной системы. Термин охватывает как программы в символической записи (исходные модули), так и исполняемые формы этих программ (исполнительные модули).
По функциональному назначению программное обеспечение можно разделить на две основные категории: прикладное программное обеспечение (ППО) и системное программное обеспечение (СПО).
ППО помогает конечным пользователям в выполнении различных функций.
СПО контролирует функционирование самой компьютерной системы, а не удовлетворяет непосредственно потребности пользователя. Говорят, что СПО управляет ресурсами компьютерной системы. Кроме того, исторически сложилось так, что к разряду системного относится и программное обеспечение, которое позволяет пользователям создавать новое ПО, программировать в более выразительных языках, чем машинных язык компьютера. Такое ПО (т.е. это ещё и инструментальные средства).
При построении классификации ПО нужно учитывать тот факт, что стремительное развитие вычислительной техники и расширение сферы приложения компьютеров резко ускорили процесс эволюции программного обеспечения. Если раньше можно было по пальцам перечислить основные категории ПО — операционные системы, трансляторы, пакеты прикладных программ, то сейчас ситуация коренным образом изменилась. Развитие ПО пошло как вглубь (появились новые подходы к построению операционных систем, языков программирования и т.д.), так и вширь (прикладные программы перестали быть узкоспециализированными и приобрели дополнительную ценность). На сегодняшний день можно сказать, что более или менее определённо сложились следующие группы программного обеспечения:
Разумеется, эту классификацию нельзя считать исчерпывающей, но она более или менее наглядно отражает направления совершенствования и развития программного обеспечения.
|
Системное программное обеспечение − компьютерные программы, которые контролируют функционирование самого компьютера, а не удовлетворяют непосредственно потребности пользователя. Прежде всего, это операционные системы (ОС) и так называемые утилиты, которые выполняют такие задачи, как копирование файлов, проверку состояния магнитных дисков и т.д. Исторически сложилось так, что программы, участвующие в создании прикладного программного обеспечения (например, компиляторы и интерпретаторы), также принято относить к системному программному обеспечению, т.к. первые ОС обязательно комплектовались средствами разработки программ. |
При разделении программирования на системное и прикладное возникло и разделение в языках − одни их них, например, Фортран, Алгол-60, Кобол были предназначены для прикладного программирования, другие (ПЛ/360, Блисс, BCPL) − для системного. В настоящее время существует ряд языков, предназначенных для создания программных систем как системного, так и прикладного программирования, например Си, С++, Ада, Модула-2. |
Системное программирование
Разработка системного ПО имеет свои особенности по в сравнению с разработкой прикладных программ. Системное программирование (или программирование систем) ‑ род деятельности, заключающийся в работе над системным программным обеспечением. Основная отличительная черта системного программирования по сравнению с прикладным программированием заключается в том, что результатом последнего является выпуск программного обеспечения, предлагающего определённые услуги пользователям (например, текстовый процессор). В то время как результатом системного программирования является выпуск программного обеспечения, предлагающего сервисы по взаимодействию с аппаратным обеспечением (например, дефрагментация жёсткого диска), что подразумевает сильную зависимость таких программ от аппаратной части.
Термин системное программирование непосредственно связан с термином системный программист. Это программист, работающий (создающий, отлаживающий, диагностирующий и т. п.) над системным программным обеспечением. В отличие от прикладного программиста, системный программист должен в одинаковой степени владеть и программным, и аппаратным обеспечением компьютера. Если прикладной программист, как правило, не работает напрямую с аппаратурой, пользуясь сервисом операционной системы, то одна из основных задач системного программиста − организация обслуживания устройств ввода/вывода. Системный программист должен учитывать специфику аппаратной части и другие свойства системы, в которой функционирует программа, использовать эти свойства, например, применяя специально оптимизированный для данной архитектуры алгоритм.
Изначально, ОС писали на языке ассемблера. Эксперименты с поддержкой оборудования в языках высокого уровня (1960-е гг. привели к появлению таких языков, как BLISS и BCPL). Однако, язык программирования Си, сыгравший значительную роль в создании UNIX, завоевал большую популярность и распространился повсеместно к 1980-м годах.
В настоящее время некоторое применение нашлось для встраиваемого C++. Реализация основных частей в операционной системе и при использовании сетей нуждается в разработчиках системного ПО. Например, реализация постраничности (через виртуальную память) или драйверы устройств.
В некоторых типах систем прикладное и системное программное обеспечение практически неразделимо, как, например, в случае встроенного ПО (англ. embedded system) — это специализированная компьютерная система, в которой сам компьютер обычно встроен в устройство, которым он управляет. Примерами встроенных систем могут служить банкоматы, авионика, КПК, телекоммуникационное оборудование и тому подобные устройства. |
Машинная зависимость является одной из характеристик, которая обычно отличает системное ПО от прикладного. Прикладная программа интересует нас главным образом с точки зрения решения некоторой задачи. При этом ЭВМ используется как инструмент, и основное внимание сосредоточено на предметной стороне дела, а не на вычислительной системе. С другой стороны, системные программы предназначены скорее для обеспечения управления собственно ЭВМ, чем для решения какой-то конкретной задачи. Вследствие этого они обычно тесно связаны со структурой машины, для которой созданы.
Операционные системы
Операционные системы являются важнейшей и центральной частью программного обеспечения ЭВМ, предназначенной для эффективного управления вычислительным процессом, планирования работы и распределения ресурсов ЭВМ, автоматизации процесса подготовки программ и организации их выполнения при различных режимах работы машины, облегчения общения оператора с машиной.
Пользователи и операторы не имеют прямого доступа к устройствам ЭВМ. Связь пользователей и операторов с ЭВМ (точнее, с ее аппаратурными средствами) производится при помощи операционной системы, обеспечивающей определенный уровень общения человека с машиной. Уровень общения в первую очередь определяется уровнем языка, на котором оно происходит, или, иными словами, уровнем пользовательского интерфейса системы (интерфейс командной строки, графический интерфейс, голосовой или речевой интерфейс).
Основные функции операционных систем заключаются в управлении ресурсами (физическими и логическими) и процессами вычислительных систем. Физическими ресурсами являются: оперативная память, процессор, монитор, печатающее устройство, магнитные и оптические диски. К логическим ресурсам можно отнести программы, файлы, события и т. д.
Под процессом понимается некоторая последовательность действий, предписанная соответствующей программой и используемыми ею данными. Операционная система − это комплекс программ, предназначенная для управления устройствами ЭВМ, управления обработкой и хранением данных, обеспечения пользовательского интерфейса.
Современные операционные системы для ПЭВМ отличаются друг от друга, прежде всего ориентацией на машины определенного класса, поддерживаемыми ими режимами обработки, предоставляемыми сервисными возможностями.