Amoeba — это распределённая операционная система, разработанная Эндрю С. Таненбаумом и другими в Vrije Universiteit Amsterdam . Целью проекта Amoeba было создание системы разделения времени , которая заставляла бы всю сеть компьютеров выглядеть для пользователя как одна машина . Разработка в Vrije Universiteit была остановлена: исходный код последней версии (5.3) был последний раз изменён 30 июля 1996 года. [1]
Язык программирования Python изначально был разработан для этой платформы. [4]
Целью проекта Amoeba было создание операционной системы для сетей компьютеров, которая представляла бы сеть пользователю так, как если бы это была одна машина. Сеть Amoeba состоит из ряда рабочих станций, подключенных к «пулу» процессоров, и выполнение программы с терминала заставляет ее работать на любом из доступных процессоров, при этом операционная система обеспечивает балансировку нагрузки . [3] В отличие от современного Sprite , Amoeba не поддерживает миграцию процессов . [5] Рабочие станции обычно функционируют только как сетевые терминалы . Помимо рабочих станций и процессоров, дополнительные машины работают как серверы для файлов, служб каталогов, коммуникаций TCP/IP и т. д . [3]
Amoeba — это операционная система на основе микроядра . Она предлагает многопоточные программы и механизм удаленного вызова процедур (RPC) для связи между потоками, потенциально по сети; даже потоки ядра используют этот механизм RPC для связи. Каждому потоку назначается 48-битный номер, называемый его «портом», который служит его уникальным, общесетевым «адресом» для связи. [3]
Пользовательский интерфейс и API Amoeba были смоделированы по образцу Unix , и соответствие стандарту POSIX было частично реализовано; часть кода эмуляции Unix состоит из утилит, перенесенных из другой операционной системы Таненбаума, MINIX . Ранние версии использовали «домашнюю» оконную систему, которую авторы Amoeba считали «более быстрой... на наш взгляд, более чистой... меньше и гораздо более простой для понимания», но версия 4.0 использует X Window System (и позволяет использовать X-терминалы в качестве терминалов). [3] Система использует FLIP в качестве сетевого протокола.