Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

8.8. Операционные системы для вычислительных сетей

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

-  обеспечение санкционированного доступа к ресурсам хост-компьютеров и прозрачности сети;

-  использование удаленных ресурсов как локальных;

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

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

-  более надежную работу, чем одиночный компьютер.

73

8.8.1. Примитивы сетевых ОС

Миграция программ и данных в сети поддерживается примитивами:

-  взаимодействия с пользователями;

-  миграции заданий;

-  миграции данных;

-  управляющими примитивами.

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

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

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

-  передача запроса в удаленный компьютер с обратной передачей запрошенного элемента (при редких запросах);

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

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

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

Операционные системы для сетей подразделяются на собственно сетевые ОС и распределенные ОС.

8.8.2. Сетевые ОС

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

74

использование имеющегося задела программного обеспечения, недостаток – отсутствие однородности.

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

выполни команду А на хост-машине В.

Если же сеть прозрачна, пользователь выдает команды типа

выполни команду А

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

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

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

8.8.3. Распределенные ОС

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

8.9. Безопасность, секретность, шифрование и идентификация

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

Схема с открытыми ключами. Применяются два ключа. По одному из них данные шифруются, по другому - дешифруются. Алгоритм шифрования-дешифрования симметричен относительно ключей (код RSA).

75

Достоинства алгоритма: 1) Один из ключей можно сделать общеизвестным, кто угодно может зашифровать и послать сообщение владельцу ключа дешифровки, хранящегося в секрете.2) Любой обладатель открытого ключа, расшифровавший сообщение, имеет гарантию того, что оно поступило от определенного лица.

НЕ нашли? Не то? Что вы ищете?

Код RSA - мощное решение проблемы ключей, но требует объема вычислений в 1000 раз больше, чем стандарт DES. Необходимо также хранить в секрете, кому сообщение предназначено. В сетях пакетной коммутации эта информация входит в конверт, обрамляющий сообщение, и анализируется сетевым программным обеспечением.

8.10.Сети Ethernet

В настоящее время Ethernet является стандартом построения локальных сетей. Один из вариантов связи в таких сетях осуществляется на основе коаксиального кабеля. Информация передается пакетами. Архитектура сети - шина с протоколом CSMA/CD с распределенным управлением.

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

9.Операционная система Unix

Операционная система Unix проектировалась как инструментальная система для разработки программного обеспечения. Она располагает мощным командным языком и независимой от устройств файловой системой.

Первая версия Unix предназначалась для ЭВМ PDP-7 и была написана на языке ассемблера. С участием Д. Ритчи к 1972 году система была переписана на языке Си. В результате программы ОС Unix стали мобильными и понятными. Объем программ возрос на 30%, но добавился режим мультипрограммирования и возможность использования реентерабельных процедур. Стандартные системы Unix - это ОС с мультипрограммированием и разделением времени. В системе Unix пользовательские программы ничем не отличаются от системных за

76

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

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

9.1. Цели проекта

Своей уникальностью ОС Unix обязана двум обстоятельствам, характеризовавшим ее появление: 1) первая версия ОС была создана всего двумя программистами за небольшое число человеко-лет; 2) люди, создавшие эту систему, были ее главными пользователями. Следствие - внутренняя согласованность и стройность системы.

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

- обращение к файлам, устройствам и буферам межпроцессорных сообщений с помощью одних и тех же примитивов;

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

- одни и те же механизмы ловушек работают в отношении программно и аппаратно возбуждаемых прерываний.

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

9.2.  Управление процессами

Ядро ОС Unix содержит 10 тысяч строк на Си и тысячу строк на языке ассемблера. Большая часть ассемблерного текста - реализация функций, которые трудно или нецелесообразно программировать на Си; оставшаяся часть - для повышения эффективности кода. Ядро составляет около 5-10% объема ОС.

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

- образ памяти;

- значения общих регистров;

-  состояние открытых файлов;

77

- состояние текущего директория

и другие компоненты

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

Образ памяти делится на три логических сегмента:

- сегмент реентерабельных процедур;

- сегмент данных;

- сегмент стека.

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

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

Сегмент стека начинается со старшего адреса в виртуальном адресном пространстве и растет в сторону меньших адресов.

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

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

- состояние регистров;

- дескрипторы открытых файлов;

- данные для расчетов за использование машин;

- область рабочих данных;

- стек для системной фазы выполнения процесса.

Процесс не может адресоваться к своему системному сегменту данных.

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

9.2.1.  Создание процессов

Новые процессы создаются при помощи системного примитива fork. Текущий процесс разветвляется на два независимых параллельных

78

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

9.2.2.  Синхронизация процессов

Синхронизация процессов осуществляется при помощи механизма событий. Процессы ожидают событий. Таблицы процессов ассоциированы с событиями. События представляются адресами соответствующих таблиц.

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

В любой момент времени все процессы, кроме выполняемого, стоят на примитиве event-wait (ожидание события) в ядре. Когда в текущем процессе встречается примитив event-wait, выполняемым становится другой процесс, который дождался своего события.

9.2.3.  Планирование процессов

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

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

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

79

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

Все системные процессы имеют более высокий приоритет по сравнению с пользовательскими. Время центрального процессора обычно выделяется процессу в виде кванта, обычно в секунду. Равноприоритетные процессы обслуживаются «по кругу» (Round Robin).

9.2.4.  Свопинг (вталкивание-выталкивание) процессов

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

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

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

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

9.2.5. Завершение процессов

Завершение процессов может произойти преднамеренно при помощи примитива exit или непреднамеренно как результат запрещенных действий, сигналов или ловушек, заданных пользователем. Ловушки обычно связаны с ошибками в программе: обращение по некорректному

80

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

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

9.3.Оболочка системы Unix

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

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

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

< in - задание файла ввода;

> out задание файла вывода;

>> out задание файла вывода с добавлением к содержимому файла out.

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

В командный язык оболочки включены средства управления потоком команд - конструкции if/then/else, case, while, for.

9.3.1.Мультизадачность

Если команда снабжена знаком «&», то оболочка не ожидает завершения ее выполнения. Она немедленно дает приглашение на ввод следующей команды, продолжая выполнять предыдущую команду в фоновом режиме. Например, команда

(cc source; a. out)&

81

вызовет выполнение в фоновом режиме последовательности из двух команд (компиляция и исполнение), «;» - разделитель указывает последовательность исполнения команд. Знак «&» относится ко всей группе.

9.4. Ввод-вывод в системе Unix

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

9.4.1. Транспортеры и фильтры

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

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

Фильтр в системе Unix - это программа с одним входным и одним выходным потоком. В системе Unix поставляется большое число фильтров.

9.5.  Файловая система

Файл в системе Unix - множество символов с произвольным доступом. Файл не имеет никакой структуры кроме той, что налагает на него пользователь.

Информация на диске размещается поблочно, по 512 байт в каждом блоке. Диск разбивается на 4 области:

- неиспользуемый блок;

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

- i-список, состоит из описаний файлов, называемых i-узлами;

-  область хранения содержимого файлов.

82

i-узел содержит:

- идентификатор владельца;

- идентификатор группы владельца;

- биты защиты;

- физические адреса на диске;

- размер файла;

- время создания;

- время последнего использования;

- время последнего изменения;

- число ссылок на файл;

- признак: директорий или обычный файл или специальный файл.

Пространство на диске, свободное от файлов, образует связанный список свободных блоков. Выделение пространства осуществляется блоками фиксированной длины. Файл идентифицируется:

- старшим номером устройства;

- младшим номером устройства;

- i-номером (индексом i-узла).

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

Файл-директорий задает соответствие между именами и файлами. Директории образуют древовидную структуру. Корневой директорий является базой для всей структуры директориев. Имена файлов задаются последовательностью имен директориев, разделенных косой чертой («/»). Файл, не являющийся директорием, может встречаться в различных директориях, возможно под разными именами (связывание). Элемент в директории, относящийся к данному файлу, называется связью. Все связи имеют равный статус. Файл исчезает, когда удаляется последняя связь, указывающая на него. Биты защиты, заданные в связях, могут отличаться от битов в исходном файле. Таким образом решается проблема избирательного ограничения доступа к файлам.

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

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

83

Запрос от системы mount (на установку носителей и т. п.) позволяет встраивать в иерархию файлов файлы на сменных томах.

9.6. Linux - версия ОС Unix для IBM-совместимых персональных компьютеров

Linux - это операционная система для IBM-совместимых персональных компьютеров (ПК), созданных на базе процессоров 386, 486 и Pentium. Linux выполняет многие из функций, характерных для DOS и Windows. Однако эта ОС отличается особой мощностью и гибкостью. Большинство ОС персональных компьютеров, например DOS, создавались для небольших ПК, обладавших ограниченными возможностями. Система Linux разрабатывалась совершенно в ином контексте. Она представляет собой ПК-версию ОС Unix, которая десятилетиями используется на мини-ЭВМ и является основой ОС рабочих станций. Linux предоставляет в распоряжение ПК скорость, эффективность и гибкость Unix, используя при этом все преимущества современных персональных машин. Она дает возможность работы ПК в многозадачном и многопользовательском режимах. Пакет Linux содержит не только ОС, но и несколько прикладных программ, в частности, компиляторы и редакторы. Кроме того, в него входит графический пользовательский интерфейс X Window с несколькими менеджерами окон, которые позволяют взаимодействовать с системой посредством окон и меню.

В системе Linux можно выделить ядро, оболочку (shell), файловую структуру и утилиты. Ядро содержит программы, которые непосредственно управляют аппаратными средствами компьютера. Shell принимает команды от пользователя и посылает их в ядро для исполнения. Shell можно модифицировать в соответствии с конкретными потребностями пользователя. Для этого в нем имеется свой язык программирования. Файловая структура представляет собой ряд взаимосвязанных каталогов. Можно переходить из одного каталога в другой и устанавливать права доступа к каталогам, открывать в них файлы и работать с этими файлами совместно с другими пользователями.

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

Одной из важнейших черт системы Linux, как и всех Unix-систем, является наличие набора инструментальных средств, предназначенных для

84

работы в Internet. В системе Linux имеется полный инструментарий Internet, а также средства прямого доступа к этой сети.

10.Операционные системы для мультитранспьютерных систем

10.1. Транспьютеры и транспьютероподобные микропроцессоры

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

В настоящее время ряд зарубежных фирм пошел по пути создания транспьютероподобных микропроцессоров, имеющих гораздо большую вычислительную мощность, чем транспьютер фирмы Inmos (например, фирма Texas Instruments выпустила сигнальный процессор TMS320C40 с производительностью 50 MFLOPS).

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

10.2. Операционная система Helios

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

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

85

ресурсов в ОС используется карта ресурсов (Resourse Map). С ее помощью производится загрузка и конфигурирование сети, а также управление распределением программ по процессорам. В каждый процессор загружается ядро ОС (Nucleus), которое управляет ресурсами этого процессора и интегрирует его в общую сетевую структуру. Ядро ОС включает в себя малое ядро (Kernel), системную библиотеку, загрузчик, диспетчер и драйверы ввода-вывода.

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

В ОС Helios возможно одновременное выполнение множества задач, которые описываются отдельно компилируемыми программными модулями и компонуются друг с другом. Каждая из задач является либо «клиентом», либо «сервером». Обмен сообщениями происходит по специально организованным каналам (Pipes) с использованием процедур обработки потоков сообщений. Передача данных между задачами, реализуемыми на разных процессорах, осуществляется автоматически и прозрачна для пользователя системы. Каждая задача в течение всего времени своего существования находится на том процессоре, в который она была загружена. Задачи могут состоять из «нитей» (Thread), подобных процессам языка Occam. Все «нити» одной и той же задачи должны выполняться на одном и том же процессоре и обмениваться данными через общие переменные с помощью механизма семафоров. Новые «нити» могут создаваться динамически.

Задачи объединяются в группы и автоматически распределяются по нескольким процессорам сети менеджером TSF (Task Force Manager). Это распределенный сервер, который следит также за балансом загрузки отдельных процессоров. Процесс распределения прозрачен для пользователя, однако позволяет, если потребуется, указывать, на каком процессоре должна выполняться та или иная задача.

Для организации интерфейса между менеджером и пользователем системы разработан язык высокого уровня CDL(Component Distribution Language). Этот язык описывает группы задач, которые можно реализовать как на одном процессоре, так и в сети, причем в обоих случаях CDL –

86

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

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

Операционная система Helios рассчитана на работу в системах как с различными процессорами (например, в транспьютерных сетях с хост-машиной на базе IBM PC, рабочей станции SUN, персонального компьютера Macintosh и др.), так и с одинаковыми (например, в чисто мультитранспьютерных системах).

В среде ОС Helios работают компиляторы со стандартных и параллельных версий языков Си, Фортран, Паскаль, Модула 2, Пролог Ассемблер, имеется ряд специальных утилит и библиотек, включая и библиотеки ОС Unix.

10.3. Операционная система Chorus

Распределенная операционная система Chorus ориентирована на управление мультипроцессорными вычислительными системами, в которых каждый процессор оснащен локальной оперативной памятью и связан с другими процессорами системы быстродействующей коммуникационной сетью. Вычислительная система, управляемая ОС Chorus, состоит из набора узлов (site), соединенных коммуникационной средой, служащей для передачи сообщений между узлами. Узел включает в себя один или несколько микропроцессоров, оперативную память и периферийное оборудование. Конструктивно узел может быть выполнен в виде отдельного автономного устройства или в виде транспьютерной платы, вставляемой в персональный компьютер.

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

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

87

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

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

Данные в ОС Chorus хранятся в виде наборов, называемых сегментами (segment). Размещение сегментов определяется системными серверами.

10.3.1.  Межпроцессные коммуникации

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

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

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

В ОС Chorus поддерживаются два протокола обмена сообщениями:

- асинхронный протокол;

-  удаленный вызов процедуры (УВП).

88

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

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

10.3.2.  Виртуальная память

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

Копия ядра ОС Chorus, управляющая данным узлом, организует подкачку сегментов в регионы, осуществляемому по запросу. Если несколько акторов на разных узлах обладают правом доступа к одному сегменту, то в обязанности распределенного ядра входит поддержание соответствия между копиями сегмента в разных узлах. Делается это путем обращения за помощью к системе IPC, которая переправляет измененное содержимое сегмента во все другие узлы, где хранятся их копии.

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

10.3.3.  Обработка сообщений актором

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

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

89

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

Кроме того, актор может выбрать конкретный шаг обработки, для выполнения которого должно быть произведено переключение при приходе сообщения в определенный порт. Например, если актор выбирает пару портов (Q, P) и пeреключает порт P на шаг T, то при получении сообщения из порта Q в порт P начинается выполнение шага T.

10.3.4. Операционная система Unix как подсистема ОС Chorus

Операционная система Unix реализована как подсистема ОС Chorus. В рамках ОС Chorus подсистема Unix строится из набора акторов (планировщик процессов, файловая подсистема и пр.), которые функционируют как системные серверы, общающиеся между собой с помощью подсистемы IPC, и обеспечивают адекватную реакцию на все системные вызовы ОС Unix. В результате подсистема Unix обладает дополнительными возможностями, которые определяются тем, что Chorus является распределенной ОС, ориентированной на управление распределенными мультипроцессорными системами.

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

Возможен доступ из ОС Unix к подсистеме, которая в ОС Chorus отвечает за организацию обмена сообщениями.

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

90

используются для управления процессом со стороны планировщика ОС Unix и не видны пользователям процесса.

11.  Децентрализованная распределенная операционная система

МИКРОС

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

Децентрализованная распределенная ОС МИКРОС способна функционировать на ВС произвольной конфигурации и создает в каждой ЭМ окружение, позволяющее осуществлять динамическую настройку параллельной программы на произвольную конфигурацию подсистемы. Число транспьютеров в подсистеме также может быть произвольным.

Децентрализованные процедуры маршрутизации обеспечивают передачу сообщений между любыми ЭМ подсистемы. Указанные свойства ОС МИКРОС являются основой для организации ее живучего функционирования и отказоустойчивого выполнения параллельных программ.

Операционная система МИКРОС имеет иерархическую структуру (рис.13.1). Каждый уровень ОС строится на основе предыдущих. Нижний (нулевой) уровень ОС включает средства инициации ВС, приводящие все ЭМ ВС в исходное состояние и средства управления процессами (ядро ОС) ЭМ. Программные средства управления процессами расширяют возможности аппаратных средств транспьютера. Так, например, если планировщик транспьютера задает только два уровня приоритета процессов, то программные средства позволяют сделать число уровней приоритета произвольным. Для организации взаимодействий между процессами введена расширенная

91

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

Уровень 1 ОС образован средствами самоконтроля и самодиагностики ВС, обеспечивающими определение состояния ВС в условиях кратных отказов. Заключение об исправности или неисправности отдельных ЭМ принимается коллективно всеми ЭМ системы на основе сопоставления результатов взаимопроверки ЭМ. Самоконтроль и самодиагностика реализуются как система параллельных процессов, выполняемая всеми исправными ЭМ системы.

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

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

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

92

ИНТЕРПРЕТАТОР ЯУПВ

 

ВОССТАНОВЛЕНИЕ ВЫЧИСЛЕНИЙ

ДИНАМИЧЕСКОЕ УПРАВЛЕНИЕ НАГРУЗКОЙ

 

ЗАГРУЗКА ПАРАЛЛЕЛЬНЫХ ПРОГРАММ

 

МАРШРУТИЗАЦИЯ СООБЩЕНИЙ

 

РЕКОНФИГУРАЦИЯ ПОДСИСТЕМ

 

САМОДИАГНОСТИКА

 

ИНИЦИАЦИЯ ВС ЯДРО ОС

Рис.13.1. Структура операционной системы МИКРОС

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

1) виртуальная подсистема типа дерево может быть реализована на произвольном связном подмножестве транспьютеров;

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

93

В общем случае строится множество покрывающих деревьев, по одному дереву для каждой ЭМ, содержащей ВУ (корневой ЭМ). При построении каждого дерева каждой ЭМ ставится в соответствие:

1) расстояние от данной ЭМ до корневой;

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

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

Для транспьютерной ВС программа инициации состоит из двух частей. Первая часть включает первичный загрузчик и вторичный загрузчик. Первичный загрузчик инициализирует транспьютер (уничтожает процессы ввода-вывода информации по линкам, инициализирует очередь к таймеру и т. п.) и определяет входной линк, с которого он был загружен. После этого по входному линку загружается вторичный загрузчик и создает процессы TestLink и BootToLink. Процесс TestLink определяет наличие соседнего транспьютера для каждого выходного линка. Если сосед имеется, процесс BootToLink передает в выходной линк первую (FP) и вторую (SP) части программы инициализации. В данном транспьютере определяется размер основной памяти. В старшие адреса памяти загружается программа SP. После этого тестируются выходные линки и SP передается в незагруженные соседние транспьютеры, процессы TestLink и BootToLink уничтожаются, необходимые параметры копируются в SP и SP инициализируется. Программа SP: загружает резидентную часть ОС на место FP (в младшие адреса памяти транспьютера); передает в соседние транспьютеры резидентную часть ОС и инициализирует ее. Далее SP формирует ВП типа дерево, которое покрывает структуру ВС.

Эффективное исполнение параллельных программ на ВС с программируемой структурой достигается на основе структурного способа организации вычислений. Сущность этого способа заключается: 1) в программной компоновке ВП с числом ЭМ и связным графом межмашинных соединений, адекватными решаемой задаче ("линейка", "кольцо", "дерево", "решетка"); 2) в установке такого порядка вычислений в машинах ВП и выполнения межмашинных обменов, при котором

94

обеспечивается бесконфликтное протекание последних. Отображение виртуальной подсистемы на физическую, состоящую из требуемого числа ЭМ, сводится к заданию взаимно однозначного соответствия между: 1)виртуальными и физическими номерами ЭМ; 2)виртуальными и физическими номерами полюсов этих ЭМ. Это отображение реализуется на основе использования структуры данных, называемой окружением виртуальной ЭМ и содержащей параметры этой ЭМ. Окружение задает: виртуальный номер элементарной машины; число ЭМ подсистемы; путевую и весовую функции; цвет подсистемы; имена семафоров, реализующих соответственно входную и выходную очереди сообщений s-го физического полюса ЭМ, s = 1,...,v, v - число полюсов ЭМ. Путевая функция задает соответствие физических полюсов виртуальным. Весовая функция W задает веса {wi, i = 1,...,v}, где вес wi равен числу вершин i-го поддерева на нисходящем из ЭМ0 корневом дереве.

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

NUCLUS (MODE, &S, PAR1 ,.....PARn )

Здесь: MODE - тип операции над семафором S, интерпретируемой соответствующей подпрограммой ядра ОС (принимает только неотрицательные значения); PARi ,i=1,...,n, - параметры обращения. Символ "&" означает, что в ядро при данном обращении передается имя семафора S. Типы и количество n параметров PARi, i=1,...,n, определяются типом операции, выполняемой над семафором S.

Для организации конвейерно-параллельных обменов используются примитивы: send(pole, message, size) - для передачи массива message из size байт в соседнюю ЭМ по направлению pole; receive(pole, message, size) - для приема массива message из size байт из соседней ЭМ по направлению pole. В отличие от примитивов обмена Оккама и подобных ему языков (например, Parallel C фирмы 3L) примитивы send и receive реализуют межмашинные обмены асинхронно, что упрощает программирование параллельных вычислений и уменьшает время пребывания процессов в состоянии ожидания.

Дифференцированные обмены реализуются примитивами: send_diff(number, message, size) - для передачи массива message из size байт в ЭМ с номером number; receive_diff(number, message, size) - для приема массива message из size байт из ЭМ с номером number.

95

Трансляционные обмены реализуются примитивами: send_all(message, size) - для передачи массива message из size байт во все ЭМ подсистемы; receive_all(number, message, size) - для приема массива message из size байт; number получает значение, равное номеру передающей ЭМ.

Примером примитива, оценивающего параметры подсистемы, может служить sys(E, P), определяющий номер E данной ЭМ в подсистеме и число P машин в подсистеме. Используя параметры E и P ветвь параллельной программы выделяет соответствующий номеру E фрагмент обрабатываемого программой массива данных. Фрагмент выделяется путем вычисления граничных значений индексов цикла, в котором происходит обработка массива, через размер массива и значения параметров E и P. Другими словами, программа настраивается на число P машин подсистемы, т. е. инвариантна к P.

Литература

1.  Дейтел Введение в операционные системы. В 2-х кн. - М.: Мир.- 1987 г.

2.  Логическое проектирование операционных систем. – М.: Мир. – 1981 г.

3.  Linux: руководство по операционной системе.- Киев: Издательская фирма BHV, 199с.

4.  , Матвеев обеспечение мультитранспьютерных систем.- М.: "Диалог - МИФИ", 1992 г.

5.  Сырков система Chorus//Журнал д-ра Добба. – 1992, 2.- С.24-27.

6.  Корнеев вычислительных систем с программируемой структурой. – Новосибирск: Наука.-1985 г. – 165 с.

7.  , Тарков система микромашинной вычислительной системы с программируемой структурой МИКРОС// Микропроцессорные системы и средства.- 1988.-N4. – С.41-44.

8.  Тарков отказоустойчивая обработка изображений в транспьютерной системе МИКРОС-Т//Научное приборостроение.-1995.-т.5,№3-4. - с.74-79.

96

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5