Базовое программное обеспечение (base software) — минимальный набор программных средств, обеспечивающих работу компьютера. Самый низкий уровень программного обеспечения. Отвечает за взаимодействие с базовыми аппаратными средствами и согласованием их работы. ПО этого уровня, как правило, хранятся в специальных микросхемах, называемых ПЗУ (Read Only Memory – ROM). Программы и данные записываются («прошиваются») в микросхемы ПЗУ на этапе производства и не могут быть изменены на этапе эксплуатации. Если изменение базовых программ считается целесообразным технически, вместо микросхем ПЗУ применяют перепрограммируемые постоянные запоминающие устройства ППЗУ (Erasable Programmable Read Only Memory – EPROM). Тогда изменение содержания ПЗУ можно выполнять непосредственно в системе (флэш-технологии) или на специальных устройствах-программаторах. Программы низшего уровня (BIOS)[2] начинают работать в момент первичной загрузки компьютера. Обеспечивают аппаратно-программный интерфейс.
Системный уровень. Программы этого уровня обеспечивают взаимодействие программ прикладного (более высокого) уровня с программами базового уровня и непосредственно с аппаратным обеспечением, т.е. выполняют посреднические функции. Конкретные программы, отвечающие за взаимодействие с конкретными устройствами называются драйверами – они входят в состав ПО системного уровня и обеспечивают аппаратно-программный интерфейс. Другой класс программ этого уровня отвечает за взаимодействие с пользователем. Именно этот класс позволяет вводить данные, управлять работой вычислительной системы, получать результаты работы в удобной форме. Этот класс есть средство обеспечения пользовательского интерфейса (удобство работы с компьютером и производительность труда). Итак, программы системного уровня обеспечивают взаимодействие пользователя с оборудованием, опираются на программы базового уровня, обеспечивают взаимодействие дополнительного оборудования с базовым, предоставляют возможность установки и работы программ более высокого уровня. Совокупность ПО системного уровня образует ядро ОС.
Служебный уровень. Программы служебного уровня (утилиты) обслуживают компьютерную систему, автоматизируют работы по ее проверке, наладке и настройке. Опираются на программы базового и системного уровней. Некоторые утилиты изначально входят в состав ОС, другие являются для ОС внешними и служат для расширения ее функций. Средства коммуникации относятся к служебным программам. Они позволяют установить соединение с удаленным компьютером, обеспечивают передачу электронной почты и другое в компьютерных сетях.
17. Назначение программ-архиваторов заключается в экономии места на диске за счет сжатия (упаковки) одного или нескольких файлов в архивный файл. Программы-архиваторы используют для хранения в упакованном виде больших объемов информации, которая понадобится в будущем; переноса информации между компьютерами с помощью дискет или электронной почты; создания в сжатом виде резервных копий файлов; для защиты от компьютерных вирусов. В результате работы программ-архиваторов создаются архивные файлы (архивы).
Самораспаковывающийся архив — это определенным образом обработанный архивный файл, являющийся выполняемым файлом. Выполнение такого файла приводит к распаковке содержащихся в нем файлов. Типовые функции программ-архиваторов следующие;
1. Помещение исходных файлов в архив.
2. Извлечение файлов из архива.
3. Удаление файлов из архива.
4. Просмотр оглавления архива.
5. Версификация (проверка) архива.
6. В настоящее время наибольшее распространение получили программы-архиваторы, ориентированные на работу под управлением операционной системы Windows. Это WinRAR и. WinZip, отличающиеся большой степенью сжатия, работой с длинными именами файлов и удобным интерфейсом.
Компьютерный вирус — это специальная программа, Способная самопроизвольно присоединяться к другим программам и при запуске последних выполнять различные нежелательные действия: порчу файлов и каталогов; искажение результатов вычислений; засорение или стирание памяти; создание помех в работе компьютера. Наличие вирусов проявляется в разных ситуациях.
1. Некоторые программы перестают работать или начинают работать некорректно.
2. На экран выводятся посторонние сообщения, сигналы и другие эффекты.
3. Работа компьютера существенно замедляется.
4. Структура некоторых файлов оказывается испорченной.
Имеются несколько признаков классификации существующих вирусов:
· по среде обитания;
· по области поражения;
· по особенности алгоритма;
· по способу заражения;
· по деструктивным возможностям.
· Файловые вирусы — наиболее распространенный тип вирусов. Эти вирусы внедряются в выполняемые файлы, создают файлы-спутники (companion-вирусы) или используют особенности организации файловой системы (link-вирусы).
· Загрузочные вирусы записывают себя в загрузочный сектор диска или в сектор системного загрузчика жесткого диска. Начинают работу при загрузке компьютера и обычно становятся резидентными.
· Макровирусы заражают файлы широко используемых пакетов обработки данных. Эти вирусы представляют собой программы, написанные на встроенных в эти пакеты языках программирования. Наибольшее распространение получили макровирусы для приложений Microsoft Office.
· Сетевые вирусы используют для своего распространения протоколы или команды компьютерных сетей и электронной почты. Основным принципом работы сетевого вируса является возможность самостоятельно передать свой код на удаленный сервер или рабочую станцию. Полноценные компьютерные вирусы при этом обладают возможностью запустить на удаленном компьютере свой код на выполнение.
По деструктивным возможностям вирусы разделяются на:
1. неопасные, влияние которых ограничивается уменьшением свободной памяти на диске, замедлением работы компьютера, графическим и звуковыми эффектами;
2. опасные, которые потенциально могут привести к нарушениям в структуре файлов и сбоям в работе компьютера;
3. очень опасные, в алгоритм которых специально заложены процедуры уничтожения данных и возможность обеспечивать быстрый износ движущихся частей механизмов путем ввода в резонанс и разрушения головок чтения/записи некоторых НЖМД.
Для борьбы с вирусами существуют программы, которые можно разбить на основные группы: мониторы, детекторы, доктора, ревизоры и вакцины.
Программы-мониторы (программы-фильтры) располагаются резидентно в ОП компьютера, перехватывают и сообщают пользователю об обращениях ОС, которые используются вирусами для размножения и нанесения ущерба. Пользователь имеет возможность разрешить или запретить выполнение этих обращений. Программы-детекторы проверяют, имеется ли в файлах и на дисках специфическая для данного вируса комбинация байтов. При ее обнаружении выводится соответствующее сообщение. Недостаток — возможность защиты только от известных вирусов.
Программы-доктора восстанавливают зараженные программы путем удаления из них тела вируса. Обычно эти программы рассчитаны на конкретные типы вирусов и основаны на сравнении последовательности кодов, содержащихся в теле вируса, с кодами проверяемых программ. Программы-доктора необходимо периодически обновлять с целью получения новых версий, обнаруживающих новые виды вирусов.
Программы-ревизоры анализируют изменения состояния файлов и системных областей диска. Проверяют состояние загрузочного сектора и таблицы FAT; длину, атрибуты и время создания файлов; контрольную сумму кодов. Пользователю сообщается о выявлении несоответствий.
Программы-вакцины модифицируют программы и риски так, что это не отражается на работе программ, но вирус, от которого производится вакцинация, считает программы или диски уже зараженными. Существующие антивирусные программы в основном относятся к классу гибридных (детекторы-доктора, доктора-ревизоры и пр.).
18. Алгоритмом называется точное и понятное предписаниe исполнителю совершить последовательность действий, направленных на решение поставленной задачи. Слово «алгоритм» происходит от имени математика Аль Хорезми, который сформулировал правила выполнения арифметических действий. Первоначально под алгоритмом понимали только правила выполнения четырех арифметических действий над числами. Основными свойствами алгоритма являются:
1. детерминированность (определенность). Предполагает получение однозначного результата вычислительного процecca при заданных исходных данных. Благодаря этому свойству процесс выполнения алгоритма носит механический характер;
2. результативность. Указывает на наличие таких исходных данных, для которых реализуемый по заданному алгоритму вычислительный процесс должен через конечное число шагов остановиться и выдать искомый результат;
3. массовость. Это свойство предполагает, что алгоритм должен быть пригоден для решения всех задач данного типа;
4. дискретность. Означает расчлененность определяемого алгоритмом вычислительного процесса на отдельные этапы, возможность выполнения которых исполнителем (компьютером) не вызывает сомнений.
Алгоритм должен быть формализован по некоторым правилам посредством конкретных изобразительных средств. К ним относятся следующие способы записи алгоритмов: словесный, формульно-словесный, графический, язык операторных схем, алгоритмический язык.
Блок-схемой называется графическое изображение логической структуры алгоритма, в котором каждый этап процесса обработки информации представляется в виде геометрических символов (блоков), имеющих определенную конфигурацию в зависимости от характера выполняемых операций. Перечень символов, их наименование, отображаемые ими функции, форма и размеры определяются ГОСТами.
При всем многообразии алгоритмов решения задач в них можно выделить три основных вида вычислительных процессов:
· линейный;
· ветвящийся;
· циклический.
Линейным называется такой вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов.
Ветвящимся называется такой вычислительный процесс, в котором выбор направления обработки информации зависит от исходных или промежуточных данных (от результатов проверки выполнения какого-либо логического условия).
Циклом называется многократно повторяемый участок вычислений. Вычислительный процесс, содержащий один или несколько циклов, называется циклическим. По количеству выполнения циклы делятся на циклы с определенным (заранее заданным) числом повторений и циклы с неопределенным числом повторений. Количество повторений последних зависит от соблюдения некоторого условия, задающего необходимость выполнения цикла. При этом условие может проверяться в начале цикла — тогда речь идет о цикле с предусловием, или в конце — тогда это цикл с постусловием.
19. Языком программирования называют систему обозначений для точного описания алгоритмов для ЭВМ. Эти языки являются искусственными языками со строго определенным синтаксисом (строение предложения и правила сочетания слов) и семантикой (смысловое значение слов и оборотов речи), поэтому они допускают свободного толкования конструкций, характерного для естественного языка (языка общения между людьми).
Виртуальная машина – это программный комплекс, связывающий входной язык ЭВМ с другим, машинным языком. Виртуальная машина содержит транслятор и может включать библиотеки подпрограмм, отладчик, компоновщик и другие сервисные средства.
Языки программирования, если в качестве признака классификации взять синтаксис образования его конструкций, можно условно разделить на классы:
- Машинные языки (computer language) – языки программирования, воспринимаемые аппаратной частью компьютера (машинные коды);
- Машинно-ориентированные (computer oriented language) – языки программирования, которые отражают структуру конкретного типа компьютера (ассемблеры);
- Алгоритмические языки (algorithmic language) – не зависящие от архитектуры компьютера; языки программирования для отражения структуры алгоритма;
- Процедурно-ориентированные языки (procedure-oriented language) – языки программирования, где имеется возможность описания программы как совокупность процедур (подпрограмм);
- Проблемно-ориентированные языки (universal programming language) – языки программирования, предназначенные для решения задач определенного класса;
- Интегрированные системы программирования.
Другой классификацией программирования является их деление на языки, ориентированные на реализацию основ структурного программирования, и объектно-ориентированные языки, поддерживающие понятие объектов и их свойств и методов обработки.
Программа, подготовленная на языке программирования, проходит этап трансляции, когда происходит преобразования исходного кода программы (source code) в объектный код (object code), который далее пригоден к обработке редактором связей. Редактор связей – специальная программа, обеспечивающая построение загрузочного модуля (load module).
Трансляция может выполняться с использованием средств компиляторов (compiler), или интерпретаторов (interpreter). Компиляторы транслируют всю программу, но без ее выполнения.
Интерпретаторы, в отличие от компиляторов, выполняют кооперативную обработку выполнения программы.
Система программирования включает:
· Компилятор;
· Интегрированная среда разработки программ;
· Отладчик;
· Средства оптимизации кода программ;
· Набор библиотек;
· Редактор связей;
· Сервисные средства для работы с библиотеками;
· Справочные системы;
· Документатор исходного кода программ;
· Система поддержки и управления проектом программного комплекса.
· Обзор языков программирования высокого уровня
Fortran (Фортран). Это первый компилируемый язык, созданный Джимом Бэкусом в 50-е гг. программисты, разрабатывающие программы исключительно на Ассемблере, выражали серьезные сомнения в возможности появления высоко-производительного языка высокого уровня, поэтому основным критерием при разработке компиляторов Фортрана являлось эффектность исполняемого кода. Хотя в Фортране впервые был реализован ряд важнейших понятий программирования, удобство создания программ было принесено в жертву возможности получения эффективного машинного кода. Язык Ассемблера. Это язык, предназначенный для удобочитаемой формы программ, записанных на машинном коде. Он позволяет программисту пользоваться мнемоническими кодами операций, задавать наиболее удобные в том или ином смысле схемы адресации.
Cobol (Кобол). Это компилируемый язык для применения в экономической области и решения общие задачи, разработанных в начале 60-х гг. Он отличается большой «многословестностью» - его операторы иногда выглядят как обычные английские фразы. В Коболе были реализованы очень мощные средства работы с большими объемами данных, хранящимися на различных внешних носителях. На этом языке создано очень много приложений, которые активно эксплуатируются и сегодня. Достаточно сказать, что наибольшую зарплату в США получают программисты на Коболе.
Algol (Алгол). Это компилируемый язык, созданный в 1960 году. Он был призван заменить Фортран, но из-за сложности структуры не получил широкого распространения. В 1968 году была создана версия Алгол 68, по своим возможностям и сегодня опережающие многие языки программирования, однако из-за отсутствия достаточно эффективных компьютеров для нее не удалось своевременно создать хорошие компиляторы для нее.
Pascal (Паскаль). Язык Паскаль, созданный в конце 70-х гг. основоположником множества идей современного программирования Никлаусом Виртом, во многом напоминает Алгол, но в нем ужесточен ряд требований в структуре программы и имеются возможности, позволяющие успешно применить его при создании крупных проектов.
Basic (Бейсик). Для этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире. Он создавался в 60-х годах в качестве учебного языка и очень прост в изучении.
С (Си). Данный язык был создан в лаборатории Bell и первоначально не рассматривался как массовый. Он планировался для замены Ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в тоже время не зависит от конкретного типа процессора. Си во многом похож на Паскаль и имеет дополнительные средства для прямой работы с памятью (указатели). На этом языке в 70-е гг. написано множество прикладных программ и ряд известных операционных систем, например Unix.
С ++ (Си ++) - это объективно-ориентированное расширение языка Си, созданное Бьярном Страуструпом в 1980 году. Множество новых мощных возможностей, позволивших резко повысить производительность программистов, наложилось на унаследованную от языка Си определенную низкоуровневость, в результате чего создание сложных и надежных программ потребовало от разработчиков высокого уровня профессиональной подготовки.
Java (Джава, Ява). Этот язык был создан компанией Sun в начале 90-х гг. на основе Си ++. Он призван упростить разработку приложений на основе Си ++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка – компиляция не в машинный код, а в платформно-независимый байт-код (каждая команда занимает один байт). Этот байт код может выполняться с помощью интерпретатора – виртуальной Java – машины JVM (Java Virtual Machine), версией которой созданы сегодня для любых платформ. Среды быстрого проектирования.
В последние несколько лет в программировании (особенно в ОС Windows) наметился так называемый визуальный подход. До этого серьезным препятствием для разработки графических приложений была сложность различных элементов управления и контроль над их работой. Достаточно взглянуть на окно любой Windows-программы. В нем имеется множество стандартных элементов управления. Очень трудоемко в ручную описывать процесс создания этих элементов. Этот процесс автоматизирован в средах быстрого проектирования (Rapid Application Development, RAD-среды). Все необходимые элементы оформления и управления создаются и обслуживаются не путем ручного программирования, а с помощью готовых визуальных компонентов, которые с помощью мыши «перетаскиваются» в проектируемое окно. Их свойство и поведение затем настраиваются с помощью простых редакторов, визуально показывающих характеристики соответствующих элементов. При этом вспомогательный текст программы, ответственный за создание и работу этих элементов, генерируется RAD-средой автоматически, что позволяет разработчику сосредоточится только на логике решаемой задачи.
В результате программирования во многом заменяется проектированием – подобный подход называется визуальным программированием.