Обзор свободной ОС Inferno: технические особенности
Содержание:
1. Знакомство;
2.Технические особенности (Вы читаете данный раздел);
3. Установка системы и приложения.

Inferno базируется на модифицированном и уменьшенном в размерах ядре Plan 9. В основу ОС положено пять основных задумок/концепций, три из которых унаследованы от предка (Plan 9):
> стандартный протокол для сетевых коммуникаций (теперь он называется Styx, а не 9P);
> представление всех ресурсов как файлов;
> поддержка пространств имен для группировки этих файлов в единую структуру. Нововведениями стали виртуальная машина Dis и внутрисистемный язык программирования Limbo. Принято сравнивать их с технологией Java и считать построенными на ее принципах, но это не совсем верно: обе системы создавались практически в одно время, и своими корнями уходят в ОС Oberon авторства Никлауса Вирта (Niklaus Wirth). В случае с Java это подтверждают слова самого Вирта, а в случае Inferno - некоторые совпадающие особенности, которые просто не могут быть случайными.
Виртуальная машина Dis добавлена в систему для обеспечения большей переносимости программного кода. Теперь для запуска приложений на новой платформе не нужно их не только переписывать, но и даже перекомпилировать. Падение производительности кода, запущенного поверх Dis, минимально при сравнении с обычным машинным кодом. Это обусловлено тем, что разработчики изначально делали ставку на производительность и реализовали несколько необычных для своего времени вещей.
Во-первых, виртуальная машина использует трехоперандные команды и адресацию «из памяти в память», а не стек. Кроме улучшения в производительности, это еще и упростило сборщик мусора.
Во-вторых, в набор команд включили не только самые необходимые, но и некоторые достаточно специфичные, позволяющие лучше проводить оптимизацию кода.
В-третьих, впервые настолько широко была использована «компиляция на лету». Для освобождения уже неиспользуемой памяти в виртуальную машину включен сборщик мусора, который использует сразу два подхода: одна его часть использует метод подсчета ссылок для более быстрой очистки основного объема памяти, а другая использует механизм пометки объектов и подчищает те участки, которые остались после работы первой. В ОС Inferno нет возможности исполнить программу ниже уровня виртуальной машины, а отсюда следует, что нельзя исполнить обычный машинный код целевой платформы.
Язык Limbo (http://www.vitanuova.com/inferno/papers/limbo.html) является основным и наиболее приспособленным, но не единственным языком разработки приложений в среде Inferno. Тем не менее, именно использование Limbo будет самым простым и естественным способом - ведь он создавался с учетом всех особенностей системы.
Его авторами стали Шон Довард (Sean Dorward), Фил Винтерботтом (Phil Winterbottom) и Роб Пайк (Rob Pike). Limbo - язык высокого уровня со строгой статической типизацией, поддержкой динамической загрузки модулей и параллельного программирования. В своем дизайне он испытал влияние многих других популярных языков - тут и C, и Pascal, и не понаслышке знакомые Робу Пайку Newsqueak и Alef, а также Oberon и Lisp).
Результатом компиляции программы на Limbo будет байт-код виртуальной машины Dis. Язык поддерживает не только привычные типы данных, такие как целые и вещественные числа различной длинны, строки, массивы, структуры и объединения, но и некоторые специфические: кортежи, списки, каналы и модули.
Поддержки объектно-ориентированного подхода в привычном понимании нет, но есть тип абстрактных данных - специфических структур, которые могут содержать функции. В состав одного составного типа может входить другой составной тип. Строгая статическая типизация, контроль границ массивов в момент компиляции и во время исполнения, а также отсутствие указателей и адресной арифметики позволяют не включать механизмы защиты памяти. Это позволяет повысить быстродействие и отказаться от использования аппаратного модуля управления памятью (MMU), что увеличивает количество потенциально подходящих платформ.
В системе Inferno нет принципиальной разницы между исполняемым файлом и библиотекой: и то, и другое - практически одинаковые модули. Каждый такой модуль может быть запущен как программа или подключен другим модулем с предоставлением своих функций. Каждый модуль загружается в память только один раз, исполняется в отдельном потоке и автоматически выгружается «сборщиком мусора», когда становится ненужным.
1. Знакомство;
2.
3. Установка системы и приложения.

Inferno базируется на модифицированном и уменьшенном в размерах ядре Plan 9. В основу ОС положено пять основных задумок/концепций, три из которых унаследованы от предка (Plan 9):
> стандартный протокол для сетевых коммуникаций (теперь он называется Styx, а не 9P);
> представление всех ресурсов как файлов;
> поддержка пространств имен для группировки этих файлов в единую структуру. Нововведениями стали виртуальная машина Dis и внутрисистемный язык программирования Limbo. Принято сравнивать их с технологией Java и считать построенными на ее принципах, но это не совсем верно: обе системы создавались практически в одно время, и своими корнями уходят в ОС Oberon авторства Никлауса Вирта (Niklaus Wirth). В случае с Java это подтверждают слова самого Вирта, а в случае Inferno - некоторые совпадающие особенности, которые просто не могут быть случайными.
Виртуальная машина Dis добавлена в систему для обеспечения большей переносимости программного кода. Теперь для запуска приложений на новой платформе не нужно их не только переписывать, но и даже перекомпилировать. Падение производительности кода, запущенного поверх Dis, минимально при сравнении с обычным машинным кодом. Это обусловлено тем, что разработчики изначально делали ставку на производительность и реализовали несколько необычных для своего времени вещей.
Во-первых, виртуальная машина использует трехоперандные команды и адресацию «из памяти в память», а не стек. Кроме улучшения в производительности, это еще и упростило сборщик мусора.
Во-вторых, в набор команд включили не только самые необходимые, но и некоторые достаточно специфичные, позволяющие лучше проводить оптимизацию кода.
В-третьих, впервые настолько широко была использована «компиляция на лету». Для освобождения уже неиспользуемой памяти в виртуальную машину включен сборщик мусора, который использует сразу два подхода: одна его часть использует метод подсчета ссылок для более быстрой очистки основного объема памяти, а другая использует механизм пометки объектов и подчищает те участки, которые остались после работы первой. В ОС Inferno нет возможности исполнить программу ниже уровня виртуальной машины, а отсюда следует, что нельзя исполнить обычный машинный код целевой платформы.
Язык Limbo (http://www.vitanuova.com/inferno/papers/limbo.html) является основным и наиболее приспособленным, но не единственным языком разработки приложений в среде Inferno. Тем не менее, именно использование Limbo будет самым простым и естественным способом - ведь он создавался с учетом всех особенностей системы.
Его авторами стали Шон Довард (Sean Dorward), Фил Винтерботтом (Phil Winterbottom) и Роб Пайк (Rob Pike). Limbo - язык высокого уровня со строгой статической типизацией, поддержкой динамической загрузки модулей и параллельного программирования. В своем дизайне он испытал влияние многих других популярных языков - тут и C, и Pascal, и не понаслышке знакомые Робу Пайку Newsqueak и Alef, а также Oberon и Lisp).
Результатом компиляции программы на Limbo будет байт-код виртуальной машины Dis. Язык поддерживает не только привычные типы данных, такие как целые и вещественные числа различной длинны, строки, массивы, структуры и объединения, но и некоторые специфические: кортежи, списки, каналы и модули.
Поддержки объектно-ориентированного подхода в привычном понимании нет, но есть тип абстрактных данных - специфических структур, которые могут содержать функции. В состав одного составного типа может входить другой составной тип. Строгая статическая типизация, контроль границ массивов в момент компиляции и во время исполнения, а также отсутствие указателей и адресной арифметики позволяют не включать механизмы защиты памяти. Это позволяет повысить быстродействие и отказаться от использования аппаратного модуля управления памятью (MMU), что увеличивает количество потенциально подходящих платформ.
В системе Inferno нет принципиальной разницы между исполняемым файлом и библиотекой: и то, и другое - практически одинаковые модули. Каждый такой модуль может быть запущен как программа или подключен другим модулем с предоставлением своих функций. Каждый модуль загружается в память только один раз, исполняется в отдельном потоке и автоматически выгружается «сборщиком мусора», когда становится ненужным.