Огляд вільної ос inferno: технічні особливості

Відео: The Case for $ 20,000 oz Gold - Debt Collapse - Mike Maloney - Silver & Gold

Огляд вільної ОС Inferno: технічні особливості
Inferno базується на модифікованому і зменшеному в розмірах ядрі Plan 9. В основу ОС належить п`ять основних задумів / концепцій, три з яких успадковані від предка (Plan 9):
gt; стандартний протокол для мережевих комунікацій (тепер він називається Styx, а не 9P);
gt; представлення всіх ресурсів як файлів;
gt; підтримка просторів імен для угруповання цих файлів в єдину структуру. Нововведеннями стали віртуальна машина Dis і внутрішньосистемний мову програмування Limbo. Прийнято порівнювати їх з технологією Java і вважати побудованими на її принципах, але це не зовсім вірно: обидві системи створювалися практично в один час, і своїм корінням сягають у ОС Oberon авторства Ніклауса Вірта (Niklaus Wirth). У випадку з Java це підтверджують слова самого Вірта, а в разі Inferno - деякі збігаються особливості, які просто не можуть бути випадковими.

Віртуальна машина Dis додана в систему для забезпечення більшої переносимості програмного коду. Тепер для запуску додатків на новій платформі не потрібно їх не тільки переписувати, а й навіть перекомпіліровать. Падіння продуктивності коду, запущеного поверх Dis, мінімально при порівнянні зі звичайним машинним кодом. Це обумовлено тим, що розробники спочатку робили ставку на продуктивність і реалізували кілька незвичайних для свого часу речей.

По-перше, віртуальна машина використовує трехоперандние команди і адресацію «з пам`яті в пам`ять», а не стек. Крім поліпшення в продуктивності, це ще і спростило збирач сміття.




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

По-третє, вперше настільки широко була використана «компіляція на льоту». Для звільнення вже невикористаної пам`яті в віртуальну машину включений збирач сміття, який використовує відразу два підходи: одна його частина використовує метод підрахунку посилань для більш швидкого очищення основного обсягу пам`яті, а інша використовує механізм позначки об`єктів і підчищає ті ділянки, які залишилися після роботи першої. В ОС Inferno немає можливості виконати програму нижче рівня віртуальної машини, а це означає, що не можна виконати звичайний машинний код цільової платформи.




Огляд вільної ОС Inferno: технічні особливості

Мова Limbo (https://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 немає принципової різниці між виконуваним файлом і бібліотекою: і те, і інше - практично однакові модулі. Кожен такий модуль може бути запущений як програма або підключений іншим модулем з наданням своїх функцій. Кожен модуль завантажується в пам`ять тільки один раз, виповнюється в окремому потоці і автоматично вивантажується «збирачем сміття», коли стає непотрібним.

ІНШЕ

Мова програмування vala фото

Мова програмування vala

Hello world! Розгляд будь-якої мови програмування традиційно належить починати з найпростішої програми «Hello…

At & t: мови програмування фото

At & t: мови програмування

Відео: Улюблені мови програмування в Яндексі Дистрибутив Yoix включає в себе Yoix Web Application Instant Template…

Мова програмування go фото

Мова програмування go

Відео: Топ-4 Кращих Мови програмування для Початківців | ТОП Мова програмування Go (https://qoianq.org/) з`явився в 2007…

» » Огляд вільної ос inferno: технічні особливості