Amoeba

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:06, 29 мая 2019.
Amoeba
никакой
Разработчик Эндрю Таненбаум и др.,
Исходный код Открытый
Состояние Разработка приостановлена
Первая версия 1983 (V1.0)
Последняя версия 1996 (V5.3), 22 года назад
Лицензия MIT
Тип ядра Микроядро
Платформы i386 / i486 , MIPS , Motorola 68030 , NS 32016 , Sun 3/50 и 3/60, SPARC , VAX
Веб-сай http://www.cs.vu.nl/pub/amoeba/

Amoeba — открытая микроядерная распределённая операционная система, разработанная в Амстердамском свободном университете во главе с Эндрю Таненбаумом и такими разработчиками, как Франс Каашок, Сэйп Дж. Маллендер, Роберт ван Ренесс и другими.
Цель проекта Amoeba — создать систему распределённых вычислений, которая превращает набор рабочих станций или одноплатных компьютеров в прозрачную распределенную систему.
Как утверждается на официальном сайте, данная операционная система использовалась в академической среде, промышленности и правительственных организациях. Amoeba не основана на какой-либо существующей операционной системе.
Amoeba работает на аппаратных платформах: SPARC (Sun4c и Sun4m), 386/486, 68030 и Sun 3/50 и Sun 3/60 и поддерживается X Window System и эмуляция UNIX.

Обзор проекта

Целью проекта Amoeba было создание операционной системы для сетей компьютеров, которая представляла бы сеть пользователю, как если бы это была одна машина. [Источник 1]Пользователи не должны беспокоиться о количестве процессоров в системе, а также не должны знать расположение других компьютеров или серверов (например, сервера файловой системы).
Сеть Amoeba состоит из нескольких рабочих станций, подключенных к «пулу» процессоров. Выполнение программы с терминала приводит к ее запуску на любом из доступных процессоров, а операционная система обеспечивает балансировку нагрузки. В отличие от современного Sprite , Amoeba не поддерживает процесс миграции. Рабочие станции обычно функционируют только как сетевые терминалы . Помимо рабочих станций и процессоров, дополнительные машины работают как серверы для файлов, служб каталогов, связи TCP / IP и т. д.
Amoeba - операционная система на основе микроядра. Он предлагает многопоточные программы и механизм удаленного вызова процедур (RPC) для связи между потоками, потенциально через сеть; даже потоки ядра используют этот механизм RPC для связи. Каждому потоку назначается 48-битный номер, называемый его «портом», который служит уникальным общесетевым «адресом» для связи.
Пользовательский интерфейс и API Amoeba были смоделированы после Unix, частично было выполнено соответствие стандарту POSIX; часть кода эмуляции Unix состоит из утилит, перенесенных из другой операционной системы Tanenbaum, MINIX. Ранние версии использовали «доморощенную» оконную систему, которую авторы Amoeba считали «быстрее,на наш взгляд, чище и намного проще для понимания», но версия 4.0 использует систему X Window (позволяет использовать X-терминалы как терминалы).
В системе Amoeba одна программа или команда могут использовать несколько процессоров для повышения производительности. Пользователь просто запрашивает операцию, и ОС Amoeba решает, как лучше всего выполнить запрос. Amoeba решает, какой процессор (или процессоры) подходят для запроса, основываясь на текущем состоянии системы.
Кроме того, для среды Amoeba были созданы специальные средства разработки, которые используют преимущества присущего им параллелизма. Система использует высокопроизводительный сетевой протокол FLIP(Fast Local Internet Protocol). Он обеспечивает чистую, простую и эффективную связь между распределенными узлами.

Архитектура системы

Amoeba реализует универсальный распределенный клиент-сервер-модель. Фактически, в целом всей системе требуется только три функции для выполнения всей работы: вызов транзакции из клиента и функции GetRequest и PutReply на стороне сервера. [Источник 2].Cистема Amoeba состоит из четырех основных компонентов:

  1. Рабочие станции
  2. Процессоры пула
  3. Специализированные серверы (Файловый сервер)
  4. Шлюзы
ArchAmoeba.GIF

Система разработана как коллекция микроядер. Таким образом, Amoeba состоит из множества процессоров, подключенных по сети. Каждый процессор имеет собственную локальную память в диапазоне от 2 МБ-100 МБ. Огромное количество процессоров строит так называемый Processorpool . Эта группа процессоров может быть динамически распределена по мере необходимости системой и пользователями. Специализированные серверы, называемые Run server , справедливо распределяют процессы по этим машинам.
Рабочие станции позволяют пользователям получить доступ к системе Amoeba. Обычно на одного пользователя приходится одна рабочая станция, и рабочая станция в основном бездисковая; только ядро ​​рабочей станции должно быть загружено (с дискеты, через tftp, записано во Flash-EEPROM).
В основе системы Amoeba лежат несколько специализированных серверов, которые выполняют и синхронизируют основные операции ядра. Amoeba имеет сервер каталогов (называемый SOAP), который является службой именования всех объектов, используемых в системе.
Amoeba, конечно, имеет файловый сервер(называемый Bullet Server), который реализует стабильную высокоскоростную файловую службу. Высокая скорость достигается за счет использования большого буферного кеша. Поскольку файлы сначала создаются в кеше и записываются на диск только тогда, когда они закрыты, все файлы могут храниться произвольно. Сервер Bullet использует сервер виртуального диска для выполнения операций ввода-вывода на диск, поэтому файловый сервер может работать как обычная пользовательская программа.

Микроядро Amoeba

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

  • Низкий уровень управления вводом / выводом
  • Связь между процессами или потоками
  • Низкий уровень управления памятью
  • Управление процессами и потоками (ядро / пространство пользователя)

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

Концепция процесса:

  • Amoeba поддерживает традиционную концепцию процесса.
  • Процессы состоят из нескольких потоков (хотя бы одного).
  • Каждый поток имеет свои регистры, указатель инструкций, стек; но все потоки процесса находятся в одной области памяти
  • Пример: Файловый сервер. Каждый запрос обрабатывается одним потоком, но все потоки используют один и тот же кеш; синхронизация через мьютекс и семафор.
ProcessAm.GIF

Управление памятью:

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

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

Связь: Предусмотрены две формы общения:

  1. Двухточечная связь
  2. Групповое общение

Концепция объекта Амебы

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

  • данных;
  • операций с этими данными.

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

  • Файлы;
  • Справочники;
  • Сегменты памяти;
  • Процессы;
  • Устройства ввода/вывода (Harddrive);
  • Терминалы.

Операции над объектами выполняются с помощью Stub-процедур. При создании объекта сервер возвращает Capability . Возможность используется для адресации и защиты объекта. Типичная возможность показана ниже.

Cap.gif

Поле Port идентифицирует сервер. Поле «Object» сообщает, на какой объект ссылаются, поскольку сервер обычно управляет несколькими объектами. Поле «Rights» указывает, какие операции разрешены (например, возможность для файла может быть только для чтения). Rights управляются в пользовательском пространстве. Поле «Check» необходимо для криптографической защиты, чтобы пользователи не могли вмешиваться в их работу.

Управление памятью

Amoeba предоставляет простое управление памятью на основе сегментов. Каждый процесс владеет как минимум тремя сегментами:

  1. Сегмент Текст / Код;
  2. Стек сегмента для основного потока / процесса;
  3. Сегмент данных.

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

Источники

  1. Официальный сайт Amoeba// https://www.cs.vu.nl/en/index.aspx [1998-2019]. Дата обновления: 19.04.2019. URL: https://www.cs.vu.nl/pub/amoeba/ (дата обращения: 02.04.2019).
  2. Amoeba: A Distributed Operating System // http://fsd-amoeba.sourceforge.net/ [2006-2019]. Дата обновления: 05.04.2019. URL: http://fsd-amoeba.sourceforge.net/amoeba.html (дата обращения: 01.04.2019).