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

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

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

EDITOR

S

COMPILE

O

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

О В L R

S

б

B LINKEDITOR

LOAD

L

RRUN

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

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

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

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

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

212

имел соответствующий интерпретатор. Любая программа в рамках этой системы запускалась на различных типах компьютеров, таких,

как Apple, DEC-PDP11, Osborn.

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

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

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

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

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

Редакторы связи (LINKEDITOR), или компоновщики, у которых основная задача – сборка программы готовой к исполнению, подключают к основной программе внешние модули как системных библиотек, включенных в состав соответствующих транслято-

213

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

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

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

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

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

214

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

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

данной ЭВМ; все файлы, относящиеся к какой-либо подсистеме, текстовому

редактору, транслятору языка и т.п.

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

Термин «файловая система» – совокупность каталогов и файлов, хранящихся на внешних носителях компьютера. Физически файлы подразделяются на: обычные, каталоги, архивированные, Hidden (скрытые), защищенные (R – чтение, read; W – запись, write; Е – исполнение, Execute; D – удаление, Delete). Логически они подразделяются на: текстовые (txt, For, Pas, C, ASS и т.п.), графические, объективные (obj), исполнимые (exe, svs, com). Основные манипуляции, производимые с файлами, следующие: open – открыть (подготовить к обращению), close – закрыть (запретить дальнейшее обращение), create – создать (обеспечить формирование нового файла), destroy – разрушить (удалить файл), copy – копировать (создать еще один экземпляра файла), rename – переименовать (изменить имя файла), list – вывести содержимое файла.

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

Перечисленные программы ОС могут поглощать значительные ресурсы ЭВМ. Если управляющие программы загружаются и практически постоянно находятся в ОП во время работы ЭВМ, то в зависимости от размещения оставшейся части ОС подразделяются на: ПЛОС – перфоленточные ОС; ДОС – дисковые ОС; ОС – размещение в ОП.

215

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

По способу взаимодействия с пользователем различные ОС обеспечивают три режима работы:

1)режим пакетной обработки, наиболее эффективный с точки зрения использования ресурсов ЭВМ, но не очень удобный для пользователя;

2)режим диалога с пользователем:

однопользовательский, при котором один программист полностью монополизирует ЭВМ (приемлемо для ПК);

многопользовательский, или режим разделения времени (характерен для ЭВМ и ПК большой мощности);

дистанционный (или режим теледоступа в системах коллективного пользования);

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

ОС составляют основу общесистемного ПО, но, отнюдь, не исчерпывают его полностью.

Необходимой составной частью любой универсальной ЭВМ являются системы обеспечения нормального функционирования или комплексы программ технического обслуживания, в которые входят:

средства генерации ОС; контрольно-наладочные тесты; комплекты диагностических программ.

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

216

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

Несмотря на большое разнообразие ОС, создаваемых различными фирмами, имеется несколько типов этого программного обеспечения, которые получили наибольшее распространение в мире. Именно поэтому проведем краткий обзор этих систем.

6.3. Разновидности построения ОС для различных СОД, сетевые операционные системы

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

расширяемость (модульность) – написание кода таким образом, чтобы можно было легко внести дополнения и изменения, не нарушая целостности системы;

переносимость – перенос кода с аппаратной платформы одного типа на аппаратную платформу другого типа;

надежность и отказоустойчивость – защищенность системы как от внутренних, так и от внешних ошибок;

совместимость – ОС должна иметь средства для выполнения прикладных программ, написанных для других ОС;

безопасность – наличие в ОС средств защиты от несанкционированного доступа;

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

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

217

Рассмотрим некоторые принципиальные особенности перечисленных ОС.

Однопроцессорные ОС имеют традиционный набор модулей (см. разд. 6.2). Управляющие программы являются резидентными и постоянно находятся в ОП. Обрабатывающие программы и утилиты, как правило, располагаются на системных ВЗУ (как и программы пользователей) и по мере необходимости загружаются в ОП. Значительным достижением в развитии локальных ОС явилась реализация конструкции виртуальной памяти и виртуальной машины. Эти концепции были реализованы в конце 70-х годов в ОС фирмы DEC VMS (Virtual Memory System) для ЭВМ VAX и MVS (Multiple Virtual Storage) фирмы IBM для ЭВМ IBM 360. На сего-

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

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

ОС для мультипроцессорных систем определяются их конфигурацией.

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

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

218

менее, организация ОС сравнительно проста и близка к однопроцессорной.

Файлы

ЦП ОС

ЦП ОП

Файлы

 

 

 

 

 

 

Память

Память

 

 

 

 

ЦП ОС

Файлы

Память

Рис. 6.6. Мультипроцессорные системы со слабо связанными процессорами

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

 

 

ЦП

 

а

Память

ОС

 

ЦП

Файлы

 

 

 

 

ЦП

 

 

 

 

ОС

б

 

ЦП

 

Память

ЦП

Файлы

 

 

 

 

 

ЦП

 

Рис. 6.7. Мультипроцессорные системы с сильно связанными процессорами с обработкой: а – типа главный-подчиненный; б – симметричной

Сетевые ОС получили широкое распространение в связи с повышением распространения локальных вычислительных сетей. Их

219

функциональные возможности значительно больше, чем у автономных ОС.

В сетевой ОС можно выделить:

средства управления локальными ресурсами компьютера – все, что входит в традиционный состав автономной ОС, рассмотренной выше;

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

средства запроса доступа к удаленным ресурсам и их использование – клиентская часть (сюда входят распознавание и перенаправление в сеть запросов к удаленным ресурсам, прием ответов от серверов и преобразование их в локальный формат и многое другое);

коммуникационные средства ОС, с помощью которых происходит обмен сообщениями в сети – адресация, буферизация, маршрутизация и т.п.

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

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

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

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

Если выполнение каких-либо серверных функций является основным назначением компьютера (например, предоставление фай-

220