Совокупность программ, предназначенная для решения задач на ПК, называется программным обеспечением. Состав программного обеспечения ПК называют программной конфигурацией.
Программное обеспечение, можно условно разделить на три категории:
системное ПО (программы общего пользования), выполняющие различные вспомогательные функции, например создание копий используемой информации, выдачу справочной информации о компьютере, проверку работоспособности устройств компьютера и т.д.
прикладное ПО, обеспечивающее выполнение необходимых работ на ПК: редактирование текстовых документов, создание рисунков или картинок, обработка информационных массивов и т.д.
инструментальное ПО (системы программирования), обеспечивающее разработку новых программ для компьютера на языке программирования.
Системное программное обеспечение (СПО) – это программы, управляющие работой компьютера и выполняющие различные вспомогательные функции, например, управление ресурсами компьютера, создание копий информации, проверка работоспособности устройств компьютера, выдача справочной информации о компьютере и др. Они предназначены для всех категорий пользователей, используются для эффективной работы компьютера и пользователя, а также эффективного выполнения прикладных программ.
К системному ПО относятся:
операционные системы (эта программа загружается в ОЗУ при включении компьютера);
программы – оболочки (обеспечивают более удобный и наглядный способ общения с компьютером, чем с помощью командной строки DOS, например, Norton Commander);
операционные оболочки – интерфейсные системы, которые используются для создания графических интерфейсов, мультипрограммирования и.т.;
драйверы (программы, предназначенные для управления портами периферийных устройств, обычно загружаются в оперативную память при запуске компьютера);
утилиты (вспомогательные или служебные программы, которые представляют пользователю ряд дополнительных услуг).
Центральное место среди системных программ занимают операционные системы (англ. operating systems). Операционная система (ОС) – это комплекс программ, предназначенных для управления загрузкой, запуском и выполнением других пользовательских программ, а также для планирования и управления вычислительными ресурсами ЭВМ, т.е. управления работой ПЭВМ с момента включения до момента выключения питания. Она загружается автоматически при включении компьютера, ведет диалог с пользователем, осуществляет управление компьютером, его ресурсами (оперативной памятью, дисковым пространством и т.д.), запускает другие программы на выполнение и обеспечивает пользователю и программам удобный способ общения – интерфейс – с устройствами компьютера. Другими словами, операционная система обеспечивает функционирование и взаимосвязь всех компонентов компьютера, а также предоставляет пользователю доступ к его аппаратным возможностям.
ОС определяет производительность системы, степень защиты данных, выбор программ, с которыми можно работать на компьютере, требования к аппаратным средствам. Примерами ОС являются MS DOS, Unix, Windows 10, Windows 7, Mac OS.
Сервисные системы расширяют возможности ОС по обслуживанию системы, обеспечивают удобство работы пользователя. К этой категории относят системы технического обслуживания, программные оболочки и среды ОС, а также служебные программы.
Системы технического обслуживания – это совокупность программно-аппаратных средств ПК, которые выполняют контроль, тестирование и диагностику и используются для проверки функционирования устройств компьютера и обнаружения неисправностей в процессе работы компьютера. Они являются инструментом специалистов по эксплуатации и ремонту технических средств компьютера.
Для организации более удобного и наглядного интерфейса пользователя с компьютером используются программные оболочки операционных систем – программы, которые позволяют пользователю отличными от предоставляемых ОС средствами (более понятными и эффективными) осуществлять действия по управлению ресурсами компьютера. К числу наиболее популярных оболочек относятся пакеты Norton Commander (Symantec), FAR (File and Archive manageR).
Служебные программы (утилиты) – это вспомогательные программы, предоставляющие пользователю ряд дополнительных услуг по реализации часто выполняемых работ или же повышающие удобство и комфортность работы. К ним относятся:
программы-упаковщики (архиваторы), которые позволяют более плотно записывать информацию на дисках, а также объединять копии нескольких файлов в один, так называемый, архивный файл (архив);
антивирусные программы, предназначенные для предотвращения заражения компьютерными вирусами и ликвидации последствий заражения;
программы оптимизации и контроля качества дискового пространства;
программы восстановления информации, форматирования, защиты данных;
программы для записи компакт-дисков;
драйверы – программы, расширяющие возможности операционной системы по управлению устройствами ввода/вывода, оперативной памятью и т.д. При подключении к компьютеру новых устройств необходимо установить соответствующие драйверы;
коммуникационные программы, организующие обмен информацией между компьютерами и др.
Необходимо отметить, что часть утилит входит в состав операционной системы, а другая часть функционирует автономно. Большая часть общего (системного) ПО входит в состав ОС. Часть общего ПО входит в состав самого компьютера (часть программ ОС и контролирующих тестов записана в ПЗУ или ППЗУ, установленных на системной плате). Часть общего ПО относится к автономными программам и поставляется отдельно.
Многие программы сжатия данных построены на основе алгоритма Хаффмана:
Считать все входные данные и подсчитать частоты встречаемости всех символов.
Частоты встречаемости символов выписать в ряд — это вершины будущего графа (дерева).
Выбрать две вершины с наименьшими весами и объединить их — создать новую вершину, от которой провести рёбра к выбранным вершинам с наименьшими весами, а вес новой вершины задать равным сумме их весов. Расставить на рёбрах графа числа 0 и 1 (на верхнем ребре — 0, а на нижнем — 1). Чтобы выбранные вершины больше не просматривались, стереть их веса.
Продолжить объединение вершин, каждый раз выбирая пару с наименьшими весами, до тех пор, пока не останется одна вершина — корень дерева. Вес этой вершины будет равен длине сжимаемого массива.
Создать кодовую таблицу. Для определения двоичного кода каждой конкретной буквы необходимо пройти от корня до этой вершины, выписывая 0 и 1, встречающиеся на маршруте.
Сгенерировать сжатый массив данных, для чего надо снова прочесть входные данные и каждый символ заменить соответствующим ему кодом.
Требования к системному программному обеспечению
Системные программы должны удовлетворять следующим требованиям:
прозрачность работы;
гарантированная надежность выполнения в соответствии со спецификациями (спецификациями называются функциональные требования);
максимальная скорость выполнения;
минимальные затраты на хранение машинных кодов;
поддержка стандартных средств связи с прикладными программами.
Эффективность системных программ зависит от времени их создания и надежности исполняемого кода. Требование эффективности системных программ вызывает необходимость использования специальных языков:
машинно-ориентированных типа языка Assembler;
высокого уровня типа C или C++.
К типам данных этих языков отнесены указатели на данные различных типов или адреса данных и программных объектов.