Введение
Распределенная операционная система
Inferno — это распределенная операционная система, разработанная в Bell Labs и в настоящее время разрабатываемая и поддерживаемая Vita Nuova Holdings как свободное программное обеспечение под лицензией MIT. Ядро Inferno содержит виртуальную машину, компилятор, работающий «на лету», планировщик, устройства, стеки протоколов и оценщик пространства имен для пространства имен файлов каждого процесса, а также корень иерархии файловой системы. Ядро также включает в себя некоторые встроенные модули, предоставляющие интерфейсы виртуальной операционной системы, такие как системные вызовы, графические, защитные и математические модули. В статье в Bell Labs Technical Journal, представляющей Inferno, перечислены несколько аспектов переносимости и универсальности, обеспечиваемых ОС:
Переносимость между процессорами: в настоящее время она работает на архитектурах ARM, SGI MIPS, HP PA RISC, IBM PowerPC, Sun SPARC и Intel x86 и легко переносится на другие. Переносимость между средами: она работает как автономная операционная система на небольших терминалах, а также как пользовательское приложение под Bell Plan 9, MS Windows NT, Windows 95 и Unix (SGI Irix, Sun Solaris, FreeBSD, Apple Mac OS X, Linux, IBM AIX, HP UX, Digital Tru64). Во всех этих средах программы Inferno видят идентичный интерфейс. Распределенная архитектура: идентичная среда создается как на терминале пользователя, так и на сервере, и каждый из них может импортировать ресурсы другого (например, подключенные устройства ввода-вывода или сети). Благодаря средствам связи среды выполнения программы могут быть легко (и даже динамически) разделены между клиентом и сервером. Минимальные аппаратные требования: она запускает полезные приложения самостоятельно на машинах с объемом памяти всего 1 Мбайт и не требует аппаратного обеспечения для отображения памяти. Портативные программы: программы Inferno написаны на типобезопасном языке Limbo и компилируются в байт-код Dis, который может выполняться без изменений на всех платформах Inferno. Динамическая адаптивность: программы могут, в зависимости от доступного оборудования или других ресурсов, загружать различные программные модули для выполнения определенной функции. Например, видеопроигрыватель может использовать любой из нескольких различных модулей декодера. Эти конструктивные решения были направлены на предоставление стандартных интерфейсов, которые освобождают поставщиков контента и услуг от необходимости учитывать детали различного оборудования, программного обеспечения и сетей, через которые доставляется их контент.
Особенности
Программы Inferno переносимы на широкий спектр аппаратного обеспечения, сетей и сред. Система определяет виртуальную машину, известную как Dis, которую можно реализовать на любой реальной машине, предоставляет Limbo – типобезопасный язык, компилируемый в портативный байт-код, и, что более важно, включает виртуальную операционную систему, обеспечивающую одни и те же интерфейсы, независимо от того, работает ли Inferno непосредственно на аппаратном обеспечении или как пользовательская программа поверх другой операционной системы. Для доступа к локальным и удаленным ресурсам единообразно применяется коммуникационный протокол Styx, с которым программы взаимодействуют посредством стандартных файловых операций: открытия, чтения, записи и закрытия. Начиная с четвертой редакции Inferno, Styx идентичен более новой версии фирменного протокола Plan 9, 9P2000. Большинство команд Inferno очень похожи на команды Unix с тем же именем.
runs natively on hardware or runs as a user program on top of another operating system. A communications protocol called Styx is applied uniformly to access both local and remote resources, which programs use by calling standard file operations, open, read, write, and close. As of the fourth edition of Inferno, Styx is identical to Plan 9's newer version of its hallmark 9P protocol, 9P2000. Most of the Inferno commands are very similar to Unix commands with the same name.
История
Inferno является потомком Plan 9 от Bell Labs и разделяет многие концепции дизайна и даже исходный код ядра, особенно в части устройств и протокола Styx/9P2000. Inferno, как и Plan 9, унаследовала от Bell Labs традиции Unix и философию Unix. Многие утилиты командной строки в Inferno были портированы из Plan 9 на язык Limbo. В середине 1990-х годов разработка Plan 9 была приостановлена в пользу Inferno. О существовании новой системы сообщил Деннис Ричи в начале 1996 года, менее чем через год после начала разработки, а позднее в том же году она была представлена публике как конкурент Java. В то же время материнская компания Bell Labs, AT&T, лицензировала технологию Java у Sun Microsystems. В марте-апреле 1997 года журнал IEEE Internet Computing опубликовал рекламу сетевого программного обеспечения Inferno, в которой утверждалось, что различные устройства могут взаимодействовать по "любой сети", включая Интернет, телекоммуникации и локальные сети. В рекламе говорилось, что видеоигры смогут общаться с компьютерами (на изображении была PlayStation), мобильные телефоны получат доступ к электронной почте, а голосовая почта станет доступна через телевизор. Lucent использовала Inferno как минимум в двух внутренних продуктах: Lucent VPN Firewall Brick и телефонном коммутаторе Lucent Pathstar. Первоначально компания пыталась продавать лицензии на исходный код Inferno, но не нашла большого количества покупателей. Lucent уделяла мало внимания маркетингу и недооценила важность Интернета и потенциал Inferno в этой сфере. В то же время Sun Microsystems активно продвигала свой язык программирования Java, ориентированный на аналогичный рынок и использующий схожие технологии, работающие в веб-браузерах и удовлетворяющие спрос на объектно-ориентированные языки, популярные в то время. Lucent лицензировала Java у Sun, заявив, что все устройства Inferno будут поддерживать Java. Для этого был разработан транслятор байт-кода Java в байт-код Dis. Однако Inferno так и не смогла привлечь клиентов. Через три года подразделение Inferno было закрыто и продано компании Vita Nuova Holdings. Vita Nuova продолжила разработку и предлагала коммерческие лицензии на полную систему, а также бесплатные загрузки и лицензии (несовместимые с GPL) для всех компонентов системы, кроме ядра и виртуальной машины. Компания портировала программное обеспечение на новое оборудование и сосредоточилась на разработке распределенных приложений. В конечном итоге Vita Nuova выпустила 4-ю редакцию под более распространенными лицензиями на свободное программное обеспечение, а в 2021 году перелицензировала все редакции, в основном под лицензией MIT. Vita Nuova сообщала о разработке плагинов для других браузеров, но они так и не были выпущены. Inferno также была портирована на Openmoko, Nintendo DS, SheevaPlug и Android.
Распространение
Inferno 4th Edition была выпущена в начале 2005 года как свободное программное обеспечение. В частности, она распространялась по двойной лицензии, предусматривающей две схемы. Пользователи могли получить её либо по набору лицензий свободного программного обеспечения, либо по проприетарной лицензии. В случае схемы лицензирования свободного программного обеспечения различные компоненты системы были покрыты разными лицензиями, включая GNU General Public License, GNU Lesser General Public License, Lucent Public License и MIT License, за исключением шрифтов, которые были получены по подлицензии от Bigelow и Holmes. В марте 2021 года все издания были перелицензированы, преимущественно под лицензией MIT.