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

Аверянов Современная информатика 2011

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

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

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

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

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

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

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

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

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

241

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

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

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

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

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

242

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

 

 

ОС

 

Управляющие

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

Утилиты

программы

 

программы

 

 

Программы

Транс-

 

Супервизор

обработки

Копировщики

ляторы

 

прерываний

 

 

Управление

 

Редак-

Перемещение

данными

 

данных

 

торы

 

 

связи

 

Управление

 

 

Печать,

задачами

 

 

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

перфорация

 

Управление

 

библиотек

 

 

 

 

заданиями

 

Отладчики

и т. п.

 

 

 

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

 

 

 

Другие

 

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

 

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

243

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

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

Процессы могут порождать процессы, которые будут выполняться совместно.

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

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

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

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

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

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

244

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

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

Блокирован

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

Активен

Готов

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

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

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

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

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

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

245

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

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

Программа А

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

 

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

 

Прерывание

прерываний

 

 

 

 

 

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

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

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

246

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

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

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

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

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

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

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

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

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

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

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

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

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

247

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

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

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

После завершения синтаксической отладки (2-й этап) создается объектный модуль (О) этой программы, который на следующем этапе 3 обрабатывается редактором связи (или компоновщиком). Компоновщик включает в программу необходимые библиотечные модули и в результате работы этой программы создается исполнимая программа (В). Таким образом, в результате работы трех обрабатывающих программ имеются три программы одного и того же функционального назначения в различных форматах. Как правило, по завершении каждой стадии программы перечисленных форматов копируются на диск, а соответствующие обрабатывающие программы также удаляются из ОП. В связи с этим, чтобы запустить изготовленную программу, ее необходимо загрузить (этап 4 – LOAD) в ОП и произвести ее запуск (этап 5 – RUN).

В отличие от компилятора интерпретатор обрабатывает по одному предложению программы, выполняя все четыре фазы, (рис. 6.5, б). Разница, в некотором смысле, подобна разнице между переводчиком литературы и переводчиком устной речи. Этот режим характерен для диалоговых языков и, безусловно, более удобен с точки зрения алгоритмической отладки программ и оперативного получения результатов. Но для выполнения интерпретируемой программы интерпретатор должен находиться в оперативной памяти вместе с выполняемой программой.

248

S

Интерпретатор

EDITOR

О В L R

S

б

COMPILE

O

B LINKEDITOR

LOAD

L

R RUN

а

Рис. 6.5. Схема работы компилятора (а) и интерпретатора (б)

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

249

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

как Apple, DEC-PDP11, Osborn.

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

Интерес к промежуточному коду значительно возрос в связи с сетевыми приложениями, требующими платформенной независимости запускаемых приложений. Практически все современные инструментальные средства сетевого программирования, такие, как Java, C# и т.п., используют промежуточный код, который имеет общее название байт-код. Microsoft использует промежуточный код MSIL (Microsoft intermediate Language). Одна из первых ис-

пользовала этот подход фирма Sun при разработке языка сетевого программирования Java. Язык Java использует так называемые аплеты – небольшие программы, запускаемые на Web-клиенте при обнаружении последним вызова в HTML-программе отображаемой страницы. При вызове аплета его промежуточная форма загружается клиентом с сервера и интерпретируется. Результат работы отображается в виде Web-страницы. Аплеты работают под управлением броузера и не зависят от конкретного типа компьютера и его ОС. При этом браузер (Hot Java) пишется на языке Java.

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

Кросс-системы, устанавливаемые на больших и мини-ЭВМ, используются при программировании микросистем с ограниченными

250