ФЭНДОМ


Оригинал: http://www.vitanuova.com/inferno/design.html

ВведениеПравить

Inferno - распределенная система, основанная на трех основных принципах:

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

Ресурсы как файлыПравить

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

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

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

Пространства именПравить

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

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

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

Стандартный коммуникационный протоколПравить

Третий ключевой принцип Inferno - это использование стандартного коммуникационного протокола Styx. Если все локальные и удаленные ресурсы представлены одной сущностью - файлами, то и для предоставления доступа к ним нужен только один протокол.

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

Наличие единого стандартного коммуникационного протокола также позволяет сосредоточить все средства обеспечения безопасности в единой точке. Styx предоставляет несколько механизмов для обеспечения безопасности коммуникаций:

  • Аутентификация пользователей, основанная на сертификатах
  • Шифрование сообщений

Так как это часть низлежащей системы, все приложения получают ее преимущества автоматически. Styx работает поверх различных транспортных протоколов, включая TCP/IP, ATM и PPP.