Введение[]
Inferno - распределенная система, основанная на трех основных принципах:
- Ресурсы как файлы. Все ресурсы ОС представлены в виде файлов в иерархической файловой системе.
- Пространства имен. С точки зрения приложения сеть представляет собой простое связанное пространство имен, которое выглядит как иерархическая файловая система, но может представлять физически разделенные (локальные или удаленные) ресурсы.
- Стандартный коммуникационный протокол. Протокол Styx используется для доступа ко всем локальным и удаленным ресурсам.
Ресурсы как файлы[]
Все ресурсы Inferno, как локальные, так и удаленные, представлены набором динамических файлов в иерархической файловой системе. Эти файлы используются для представления таких сущностей как устройства хранения, процессы, сервисы, сети и сетевые соединения. Любое приложение может получить доступ к ресурсу через обращение к соответствующим файлам. Преимущества использования файлов в качестве центральной концепции таковы:
- Файловые системы имеют простые и хорошо знакомые интерфейсы в широком диапазоне операционных систем и обычно содержат небольшой набор хорошо определенных операций, таких как открытие, чтение и запись.
- Ориентация на файловую систему уменьшает объем кода, необходимого для реализации интерфейсов и делает Inferno небольшой, надежной и хорошо портируемой.
- Соглашения об именовании файлов хорошо известны, единообразны и просты для понимания.
- Права доступа к файлам просты и могут быть использованы для обеспечения многоуровневой системы безопасности.
Имена файлов и их содержимое могут быть сгенерированы автоматически или по запросу клиента. Например, файл данных ресурса-сенсора может возвращать различные значения в зависимости от времени чтения, либо при каждом чтении строки.
Пространства имен[]
Второй ключевой принцип Inferno - это исчисляемое пространство имен, с помощью которого приложение создает свой собственный взгляд на ресурсы и сервисы, к которым оно желает получить доступ. Каждый набор ресурсов представлен в виде иерархии файлов, доступ к которой осуществляется с помощью стандартного набора операций. Различные ресурсы и сервисы, используемые процессами, скомбинированы в единую иерархию файлов, которая и называется "пространство имен". Ресурсы, доступные в индивидуальном пространстве имен, могут принадлежать самому клиенту или быть разбросанными по множеству серверов в сети.
Одна из главных выгод использования пространства имен в том, что приложение может пользоваться ресурсами совершенно прозрачно. Как только динамические файлы, представляющие ресурсы, будут смонтированы к пространству имен, они становятся видны приложению, которое может обращаться к ним без знания того, где физически они расположены, локально или удаленно.
Например, графический отладчик читает динамические файлы каталога /prog для доступа к информации о текущих системных процессах. Однако, если пользователь пожелает отладить процесс на удаленной машине, все, что от него потребуется - импортировать каталог /prog с этой машины. Все, что требуется от отладчика - это просто читать файлы каталога /prog не заботясь о том, где они на самом деле находятся.
Стандартный коммуникационный протокол[]
Третий ключевой принцип Inferno - это использование стандартного коммуникационного протокола Styx. Если все локальные и удаленные ресурсы представлены одной сущностью - файлами, то и для предоставления доступа к ним нужен только один протокол.
Такой подход - естественный способ создания распределенных систем используя хорошо известную технологию для подключения удаленных файловых систем.
Наличие единого стандартного коммуникационного протокола также позволяет сосредоточить все средства обеспечения безопасности в единой точке. Styx предоставляет несколько механизмов для обеспечения безопасности коммуникаций:
- Аутентификация пользователей, основанная на сертификатах
- Шифрование сообщений
Так как это часть низлежащей системы, все приложения получают ее преимущества автоматически. Styx работает поверх различных транспортных протоколов, включая TCP/IP, ATM и PPP.