Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Аверянов Основы современной информатики 2007

.pdf
Скачиваний:
72
Добавлен:
16.08.2013
Размер:
7.31 Mб
Скачать

различных состояния (или формата). Исходная программа – программа в кодах языка программирования, объектная (или полуготовая) – программа в кодах машины, прошедшая фазу трансляции, но выполнение которой невозможно по ряду причин. И, наконец, рабочая программа (или загрузочный модуль), которая может быть выполнена на ЭВМ.

Под программным обеспечением понимают группу взаимодействующих программ.

Любая программа имеет три стадии (или фазы) жизни (рис. 6.1).

Фаза использования

Фаза разработки (создание программы) Фаза продолжающейся

разработки

Рис. 6.1. Жизненный цикл программного обеспечения

На этапе продолжающейся разработки:

устраняются скрытые дефекты, не выявленные на этапе тестирования;

вносятся изменения в существующую версию, учитывающие опыт использования;

проводится адаптация программ к изменяющимся требованиям. В общем объеме работ принято считать [8], что 33 % составляет фаза разработки, а 67 % – сопровождение (продолжающаяся разра-

ботка) и эксплуатация.

Сама фаза разработки предполагает прохождение шести обязательных этапов:

определение требований и заданий; проектирование (алгоритмизация);

написание команд (кодирование – программирование); компоновка; тестирование; документирование.

Разумеется, в данном случае имеется в виду, что программный продукт закончен и представляет собой промышленное изделие. Затраты на разработку программного обеспечения довольно высо-

201

ки. Так, в США ежегодно тратится более 20 млрд дол. на эти цели. Высокая стоимость программ объясняется низкой скоростью роста производительности труда программистов. Говоря о высокой стоимости программного обеспечения, очень часто ошибочно абсолютизируют соотношение между стоимостью программной и аппаратной частями системы. Утверждение о том, что программное обеспечение намного дороже аппаратного (обычно распространяемое программистами) справедливо в редких случаях при разработке больших по объему уникальных программных комплексов (например, в системах управления спутниками Земли). В большинстве тиражируемых систем ПО (например, ПК) это соотношение может быть прямо противоположным.

В заключение приведем высказывание одного из ведущих специалистов США по разработке программного обеспечения Дж. Фокса. Он сказал [18]: «Разрабатывать программное обеспечение с каждым годом становится все труднее и в то же самое время разрабатывать программное обеспечение с каждым годом становится легче». Это связано, прежде всего, с тем, что стремление к автоматизации труда программиста путем включения в этот процесс ЭВМ привело к созданию очень большого количества программ, освоение которых требует дополнительных и немалых усилий. Дадим краткий обзор существующих на сегодняшний день программных продуктов.

1. Общесистемное ПО, в котором иногда выделяют две части: системное ПО – программы, выполняемые вместе с приклад-

ными (сопровождают выполнение прикладных программ); инструментальное ПО – программы, помогающие программи-

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

2. Прикладное ПО – программы, фактически выполняющие задачу пользователя. Имеется несколько способов организации этого ПО, находящихся в тесном взаимодействии. Например, позадачный подход, который представлен в виде отдельных программ, разрабатываемых под конкретные задачи пользователей и отражающих узкоспециализированные особенности этих задач. Этот подход применяется традиционно, когда технические требования не укладываются в рамках стандартных программных решений и требуют значительных временных и материальных ресурсов.

202

Библиотеки программ по специальностям – наборы программ по определенной тематике, описанные с соблюдением определенных стандартов в виде модулей типа функций или подпрограмм.

Они могут быть представлены как исходные тексты или объектные модули. Не имея самостоятельного значения, они предполагают наличие главной программы (предоставленной пользователем), из которой к ним происходит обращение и включение в состав этой программы редактором связи (Linkeditor).

Существует несколько уровней библиотечных программ. К ним относятся стандартные функции и подпрограммы, включаемые в состав систем программирования традиционных алгоритмических языков, а также разнообразные обрабатывающие функции непроцедурных языков (элементарные математические функции, подпрограммы графических построений, системные функции и т.п.). Существует ряд популярных библиотек подпрограмм в виде листингов исходных текстов и кодов, распространяемых в печатных изданиях или на различных носителях ВЗУ ЭВМ. К ним можно отнести библиотеки научных программ на Фортране, Паскале и т.п. Существуют и библиотечные программы конечного пользователя, разработанные с учетом специфики различных областей применения ПО. Библиотечные программы могут являться составной частью программного продукта, разрабатываемого при позадачном подходе.

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

Начиная с 1968 г. возникает мнение о кризисе программного обеспечения (Software Crisis), что связано с общим процессом проектирования, вызванным постоянным усложнением технических систем и появлением сложных технических систем (СТС), увеличением объема и сложности программных продуктов, значитель-

203

ным ростом ресурсов вычислительных систем, массовым внедрением параллельных архитектур.

Традиционный, позадачный способ проектирования ПО при создании крупных программных комплексов оказался тормозом в развитии ПО. В связи с этим аналогично системам автоматизированного проектирования (САПР) при проектировании СТС появились средства автоматизированного проектирования ПО, т.е. включение компьютера в процесс проектирования ПО. Эти средства по-

лучили названия CASE-технологии (Computer Aided SoftWare Engineering, т.е. создание ПО с помощью компьютера).

Эти средства реализуют блочно-иерархический подход при разработке ПО и так называемое проектирование сверху вниз.

Суть этого подхода давно и хорошо известна. Он связан с декомпозицией, т.е. с разбиением большой задачи на подзадачи и привлечением средств ЭВМ на всех шести этапах проектирования ПО, перечисленных выше, и использованием объектно-ориентиро- ванного подхода. К этим средствам относятся как текстовые и графические редакторы для изготовления описаний, блок-схем, графов и т.п. на верхних уровнях проектирования, так и средства генерации исполняемого кода на нижнем уровне – уровне базовых элементов.

К числу наиболее популярных элементов CASE-средств можно отнести унифицированный язык моделирования UML (United Modelling Language), имеющий четырехуровневую архитектуру и с 1997 г. являющийся стандартом в области визуального объектноориентированного моделирования.

6.2. Операционные системы, их эволюция, состав и функциональное назначение отдельных частей

Основу общесистемного ПО составляют ОС. Это – один из наиболее важных компонентов вычислительной системы независимо от класса ЭВМ, которая осуществляет интерфейсные функции между пользователем и аппаратурой. Кроме того, ОС обеспечивают управление ресурсами вычислительной системы (ЦП, ОП, УВВ). За время существования ЭВМ в эволюции ОС можно выделить несколько этапов, на каждом из которых решались задачи, актуальные для определенного времени.

204

В 40-е годы полное отсутствие элементов ОС привело к чрезвычайно низкой эффективности использования ЭВМ. Операторы должны были вручную (с помощью переключателей) загружать и выполнять программы пользователей. Время работы ЭВМ составляло незначительную часть по сравнению с подготовительными операциями. Хотя ресурсы ЭВМ полностью использовались при работе загружаемой программой, отсутствовали «накладные расходы» на программное сервисное обслуживание ЭВМ.

50-е годы ознаменовались появлением зачатков ОС, хотя отсутствовало само понятие этой структуры. Основная задача, которая решалась на этом этапе, – повышение эффективности использования ЭВМ, создание удобств для оператора по загрузке и выполнению задач пользователей. Был разработан пакетный режим обработки данных. Исходные тексты (или командные коды) программ готовились на автономных устройствах подготовки данных (на перфокартах или перфоленте (УПДК, УПДЛ)), после чего загружались в ЭВМ.

60-е – 70-е годы связаны с появлением многофункциональных операционных систем общего назначения для больших ЭВМ. Это громоздкие замкнутые системы, полностью загружаемые в ОП ЭВМ с круглосуточным режимом работы машины (поскольку загрузка была длительным и сложным процессом). При этом на работу ОС требовались значительные ресурсы ЭВМ. В это же время в связи с появлением таких технических средств, как схемы прерываний, генераторы истинного времени – таймеры и механизмы защиты памяти, были разработаны программные средства обеспечения многозадачного, многопользовательского режимов работы ЭВМ, так называемого режима разделения времени. Таким образом, было уделено внимание удобствам работы пользователей.

70-е – 80-е годы связаны с развитием модульного принципа построения ОС, их стандартизации и дальнейшим совершенствованием многопользовательских и многозадачных режимов. В сферу ОС входит организация структур с перекрытием организации систем виртуальной памяти. Этому способствовал прогресс технических средств, появление вначале мини-ЭВМ, а затем и персональных компьютеров.

90-е – 2000-е годы связаны с интенсивным внедрением сетевых ОС.

205

В состав ОС (рис. 6.2) входят программы, присутствующие в любой ОС универсального назначения.

 

 

ОС

 

Управляющие

Обрабатывающие

Утилиты

программы

 

программы

 

 

Программы

Транс-

 

Супервизор

обработки

Копировщики

ляторы

 

прерываний

 

 

Управление

 

Редак-

Перемещение

данными

 

данных

 

торы

 

 

связи

 

Управление

 

 

Печать,

задачами

 

 

Обслуживание

перфорация

 

Управление

 

библиотек

 

 

 

 

заданиями

 

Отладчики

и т. п.

 

 

 

Кросс-средства

 

 

 

Другие

 

Рис. 6.2. Состав операционных систем

 

Управляющие программы. Ядро ОС составляют управляющие программы, с которых и началось создание ПО этого вида. Одно из важнейших понятий, связанных с управляющими программами, – понятие «процесс», под которым понимается любая задача (или несколько), находящаяся в ОП и обрабатываемая ЦП. Программы – супервизоры, осуществляющие планирование работы процессов, представлены в модуле «Управление задачами». Качественный скачок от сравнительно простых управляющих программ к совре-

206

менным ОС произошел с появлением мультипрограммной обработки задач (см. гл. 2). Программная поддержка этого режима может осуществляться двумя путями.

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

2.Метод разделения времени (time-sharing) основан на исполь-

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

На рис. 6.3 представлены изменения состояний процесса при реализации мультипрограммного режима работы.

Ожидает события

Блокирован

Событие Истек квант времени наступило

Активен

Готов Выбран для активизации

Рис. 6.3. Изменение состояния процесса

В любой момент времени активным (т.е. использующим ЦП) может быть только один процесс. В режиме вытесняющей много-

207

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

Режим невытесняющей многозадачности исключает прерывание по таймеру (в схеме рис. 6.3 исключается цепь «Истек квант време-

ни»).

Программы управления заданиями обеспечивают прием и интерпретацию директив так называемого языка управления заданиями – инициирование и завершение заданий.

Имеется несколько типов заданий, представляющих команды ОС:

получение информации о системе; манипулирование файлами; команды запуска программ на выполнение;

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

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

Прерывание (interrupt) – сигнал, заставляющий менять порядок исполнения потока команд. Возникновение подобных сигналов может быть обусловлено самыми разнообразными событиями. На

208

рис. 6.4 представлена последовательность событий, происходящих в ответ на сигнал прерывания.

Программа А

Стандартная про-

 

грамма обработки

 

прерываний

 

Прерывание

Возврат из прерываний

Рис.6.4. Основная концепция обработки прерываний

Если в момент поступления от некоторого источника сигнала прерывания программа А находится в процессе исполнения, управление автоматически передается блоку программ обработки прерываний. Эти программы предназначены для выполнения некоторых действий в ответ на условие, вызвавшее прерывание. После завершения обработки управление может быть снова передано в ту точку программы А, где ее выполнение было прервано.

Следует иметь в виду, что возникновение и обработка прерываний могут быть совершенно не связаны с прерванной программой А. Можно выделить четыре класса прерываний.

Первый класс – прерывания, возникающие при выполнении ЦП команд вызова супервизора.

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

Третий класс – прерывание по таймеру, которое обсуждалось выше.

И, наконец, четвертый – главный вид прерываний – прерывание по вводу-выводу.

209

Управляющая часть ОС обычно называется монитором и является резидентной, т.е. постоянно находится в ОП ЭВМ.

Следующие две подгруппы программ, входящие в ОС, – это обрабатывающие и утилиты (или вспомогательные программы).

Программы-утилиты. Обычно они хранятся в дисковой памяти и вызываются по мере необходимости.

Обрабатывающие программы. Они составляют основу инст-

рументального обеспечения ЭВМ (см. рис. 6.2). Кратко рассмотрим их назначение и разновидности. Они отражают три состояния одной и той же программы, о которой уже упоминалось: фаза подготовки на машинный носитель (диск или ленту) текста программы на языке программирования (вид S – source); фаза трансляции и перевода написанной программы в коды ЭВМ (вид О – object); фаза компоновки и сборки готовой программы (вид B – binary) с помощью компоновщика (или редактора связей).

Язык программирования и транслятор, реализующий его на конкретной ЭВМ, обычно объединяют под общим названием – система программирования.

Трансляторы могут быть представлены в следующих вариантах: ассемблеры; компиляторы; интерпретаторы;

трансляторы, использующие промежуточный код; кросс-трансляторы.

Ассемблер – трансляторы с языков Ассемблер. Хотя у каждого типа ЭВМ имеется свой язык, все разновидности трансляторов с этих языков имеют единое название – Ассемблер.

Компиляторы – наиболее распространенный вид транслятора. Схема его работы представлена на рис. 6.5, а.

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

После завершения синтаксической отладки (2-й этап) создается объектный модуль (О) этой программы, который на следующем этапе 3 обрабатывается редактором связи (или компоновщиком).

210