Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив WinRAR / лекции / операционные системы.pdf
Скачиваний:
107
Добавлен:
12.02.2015
Размер:
2.27 Mб
Скачать

89

в отличие, например, от IBM Token Ring или ARC-Net, в которых используются детерминированные методы доступа.

Основные требования к ОСРВ.

Мультипрограммность и многозадачность

ОС должна быть мультипрограммной и многозадачной (многопоточной

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

также обеспечивать прерывания на уровне обработки прерываний.

Приоритеты задач (потоков)

В ОС должно существовать понятие приоритета потока.

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

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

Наследование приоритетов

В ОС должна существовать система наследования приоритетов. Наследование означает, что блокирующий ресурс поток наследует при-

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

Синхронизация процессов и задач

ОС должна обеспечивать мощные, надежные и удобные механизмы синхронизации задач.

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

90

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

Предсказуемость

Поведение ОС должно быть известно и достаточно точно прогнозируемо.

Это означает не то, что ОСРВ должна быть быстрой, а то, что максимальное время выполнения того или иного действия должно быть известно заранее и должно соответствовать требованиям приложения. Времена выполнения системных вызовов и временные характеристики поведения системы в различных обстоятельствах должны быть известны разработчику. Поэтому создатель ОСРВ должен приводить следующие характеристики:

латентную задержку прерывания (то есть время от момента прерывания до момента запуска задачи): она должна быть предсказуема и согласована с требованиями приложения. Эта величина зависит от числа одновременно “висящих” прерываний;

максимальное время выполнения каждого системного вызова. Оно должно быть предсказуемо и не зависимо от числа объектов в системе;

максимальное время маскирования прерываний драйверами и ОС.

4.3. Операционные системы образцов АСУ войсковой ПВО

4.3.1. Операционная система VxWorks

Операционная система реального времени VxWorks фирмы Wind River Systems предназначена для применения на встроенных вычислительных машинах, работающих в управляющих системах “жесткого” реального времени. ОС VxWorks является системой с кросс-средствами проектирования прикладного программного обеспечения, т.е. проектирование ПО ведется на “инструментальной” ЭВМ (host) для последующего исполнения на “целевой” ЭВМ (target).

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

Такая иерархическая организация “перевернутой пирамиды” (рис. 2.16) позволяет обеспечить быстродействие и детерминированность ядра, а также легко строить необходимую конфигурацию операционной системы

(scalable).

91

Главная особенность ОС реального времени VxWorks – высокая мобильность. VxWorks существует для всех 32-х разрядных микропроцессорных архитектур, которые применяются в целевых встроенных вычис-

лительных машинах: Motorola 68K, Intel i960, SPARC, MIPS 3000 и AMD 29K.

В качестве инструментальной ЭВМ для проектирования прикладного программного обеспечения для VxWorks используются широко распространенные графические станции фирм Sun Microsystems, DEC, Hewllet Packard, IBM, Silicon Graphics, MIPS Computer. Для целевых микропроцес-

сорных архитектур Intel i386/486 и Motorola 68K в качестве инструментальных используется система на PC/AT – совместимых компьютерах.

Инструментальная система

Высокоуровневые сетевые протоколы

Сетевые средства

Подсистема ввода-вывода

Системные вызовы ОС

Микроядро

Wind

Аппаратура

Рис.2.16. Иерархическая структура ОС VxWorks

4.3.2. Операционная система ос2000 (ОСРВ “Багет”)

Операционная система реального времени ос2000 является разработкой научно-исследовательского института системных исследований при Российской Академии Наук (НИИСИ РАН). Можно назвать ее первой отечественной операционной системой для встроенных систем современного уровня. Интерфейс и дизайн системы во многом напоминает популярную во всем мире ОСРВ VxWorks компании Wind River System.

Разработка операционной системы реального времени ос2000 базируется на следующих основополагающих принципах:

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

92

использование объектно-ориентированного подхода, использование свободно распространяемого программного обеспе-

чения, распространение ОС вместе со средствами разработки прикладных про-

грамм.

Операционная система ос2000 полностью соответствует стандарту POSIX в части, относящейся к реальному времени. Те части стандарта, которые не относятся к системам реального времени (традиционный UNIX) не реализованы.

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

С целью повышения мобильности операционная система разбита на три части:

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

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

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

Пакет поддержки модуля (ППМ) содержит ту часть ОС, которая зависит от конкретной ЭВМ (платы). ППМ, в частности, содержит драйверы устройств и диспетчер прерываний (за исключением пролога и эпилога).

Граница между этими частями не является жесткой. Например, некоторые не зависящие от аппаратуры функции могут быть переписаны с использованием Ассемблера с целью повышения скорости. В этом случае они станут зависимыми от типа процессора.

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

В настоящее время ос2000 содержит пакет поддержки модуля для ЭВМ серии “Багет” с процессором 1В578 (совместимого с процессором MIPS R3000) и для PC-совместимых компьютеров (с процессором Intel).

93

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

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

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

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

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

4.3.3. Операционная система QNX

Операционная система QNX – это ОС стандарта POSIX, позволяющая обеспечить на ЭВМ:

распределенную обработку данных в реальном масштабе времени;

94

передачу сообщений в качестве основного средства взаимодействия между процессами;

сетевое взаимодействие “каждый с каждым” между любыми узлами се-

ти;

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

В общем виде QNX состоит из микроядра, окруженного группой взаимодействующих между собой процессов. QNX содержит:

администратор процессов (Process Manager), отвечающий за распреде-

ление памяти, запуск и окончание задач в системе;

администратор периферийных устройств (Device Manager), управ-

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

администратор файловой системы (File system Manager).

администратор сети (Network Manager), обеспечивающий коммуникации в сети. Его сервис требуется для передачи сообщений между процессами, действующими на различных узлах сети.

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

Ядро ОС QNX обеспечивает поддержку 14 основных системных вызовов для предоставления сервиса по четырем основным направлениям (см.

рис. 2.17):

95

процессы

механизм

сетевой

 

 

 

сетевой

интерфейс

 

 

 

администратор

передачи

 

 

 

 

 

 

 

 

 

сообщений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

перенаправление диспетчер аппаратных прерываний

прерывания

Рис. 2.17. Структура ядра операционной системы QNX

передача сообщений от одного процесса к другому во всей операционной системе;

диспетчеризация процессов при изменении их состояния в результате событий, связанных с сообщениями или прерываниями;

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

перенаправление сообщений по сети.

ОС QNX может осуществлять одновременную передачу данных по трем сетям, сочетающим различное сетевое оборудование: Arcnet, Ethernet и Token Ring. Кроме того, можно создать сеть без использования специальных сетевых плат, ограничившись интерфейсом RS-232. Используя модем возможно осуществление организации полноценной сети с узлами, территориально удаленными на любое расстояние.

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

ОС QNX поддерживает SCSI – устройства с полным распараллеливанием доступа к различным аппаратным средствам.

В своем составе QNX имеет также различные графические интерфейсы:

96

QNX Windows – полнофункциональная оконная система, выполненная в соответствии со стандартом Open Look.

Photon – графический интерфейс для ограниченной в ресурсах встраиваемой системы, поддерживающий стандарт Motif и требующий всего 256 Кбайт оперативной памяти.

X Window – графический стандарт для всех открытых систем. Модульная архитектура QNX также способствует гибкости ОС и может

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

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

4.3.4.Операционная система Linux (МС ВС)

В1991 г. Л. Торвальдс, в тот момент — студент университета Хельсинки, приступил к разработке того, что ныне известно как Linux — полноценной операционной системы, основанной на исходных кодах Minix и распространяемой на условиях GPL

В1992 г. была выпущена первая публичная версия системы. Вышедшее

в1997 г. ядро Linux 2.0 имело вполне приемлемую по стандартам коммерческих ОС надежность и почти все наиболее прогрессивные черты других

Unix-систем:

загрузочные модули и разделяемые библиотеки формата ELF; псевдофайловую систему /рrос;

динамическое подключение и отключение своп-файлов; длинные файлы (64-разрядные — длина файла и смещение в нем);

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

стек TCP/IP, совместимый с BSD 4.4, с поддержкой IPSec, фильтрации пакетов и др;

бинарную совместимость с UNIX System V на процессорах х86 (iBCS - Intel Binary Compatibility Standard) и, позднее, на SPARC и MIPS;

поддержку задач реального времени (класс планирования реального времени в монолитном Linux невозможен; такие задачи загружаются как модули ядра).

97

Сам термин “Linux” не вполне определен. Прежде всего, он обозначает собственно ядро - сердце любой версии Linux. В более широком понимании, Linux - любой набор программ, выполняемых в этом ядре и называемый дистрибутивом. Задача ядра - обеспечение базовой среды, в которой могут выполняться программы, в том числе программы базового аппаратного интерфейса и системы управления задачами или выполнением программ.

Если понимать термин “Linux” в широком смысле - как набор программ, выполняемых на ядре Linux, то версий этой операционной системы окажется великое множество. Каждый дистрибутив имеет собственные уникальные характеристики, отличаясь методом установки, набором средств и способом обновления версии. Но поскольку в основе каждого дистрибутива - все тот же Linux, почти любая программа, работающая в текущей версии одного, дистрибутива, будет работать в текущей версии другого.

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

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

Система Linux поддерживает многопроцессорные компьютеры, наподобие двухпроцессорных систем Pentium III. Эти системы реально выполняют два одновременных действия. Многопроцессорность в сочетании с многозадачностью позволяет значительно увеличить количество программ, одновременно выполняемых на одном компьютере.

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

Linux перенесен практически на все 32- и 64-разрядные машины, имеющие диспетчер памяти, начиная от Amiga и Atari и заканчивая IBM System/390 и IBM z/90. Бинарные эмуляторы Linux включены в состав Solaris/SPARC и FreeBSD.