Система Orphus
Версия для печати

Проект Singularity: обзор

Авторы: Galen Hunt
James Larus
Martin Abadi
Mark Aiken
Paul Barham
Manuel Fahndrich
Chris Hawblitzel
Orion Hodson
Steven Levi
Nick Murphy
Bjarne Steensgaard
David Tarditi
Ted Wobber
Brian Zill
Microsoft Research

Перевод: Михаил Купаев
RSDN

Источник: RSDN Magazine #5-2005
Опубликовано: 02.03.2006
Версия текста: 1.0
1 Введение
2 Singularity
2.1. Расширяемость
2.2 Абстракция приложения
2.3 Обсуждение
3 Архитектура Singularity
3.1 Доверенная основа (Trusted Base)
3.2 Ядро
3.3 Процессы
3.4 Сборка мусора
3.5 Каналы
3.6 Настраиваемые исполняющие системы
3.7 Обсуждение
4 Поддержка языков программирования
4.1 Контракты каналов
4.2 Конечные точки
4.3 Методы send/receive
4.4 Конструкция Switch-Receive
4.5 Владение
4.6 TRef
4.7 Exchange Heap
4.8 Проверки
4.9 Рефлексия времени компиляции
5 Система Singularity
5.1 Система ввода/вывода
5.2 Конфигурация драйвера
5.3 Сервер имен
5.4 Файловая система
5.5 Безопасность
6 Производительность
6.1 Микротесты
6.3 Тест SPECweb
6.4 Размеры исполняемых модулей
7 Связанные работы
7.1 Архитектура ОС
7.2 Расширяемость приложений
7.3 Языковая безопасность
7.4 Средства поиска дефектов
8 Заключение
9 Ссылки

http://research.microsoft.com/os/singularity

Microsoft Research Technical Report MSR-TR-2005-135

1 Введение

ПО исполняется на платформе, которая эволюционировала последние 40 лет и все чаще демонстрирует свой возраст. Эта платформа представляет собой огромное собрание кода – операционных систем, языков программирования, компиляторов, библиотек и т.д. – и аппаратного обеспечения, на котором исполняются программы. С одной стороны, эта платформа – пример огромного успеха как с финансовой, так и с практической точки зрения. Она лежит в основе 179-миллиардной программной индустрии, и вызвала к жизни такие революционные новинки как Internet. С другой стороны, платформа и работающее на ней ПО куда менее надежны и безопасны, чем хотелось бы большинству пользователей (и разработчиков!).

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

Singularity – исследовательский проект Microsoft Research, который начался с вопроса: на что была бы похожа программная платформа, если спроектировать ее на пустом месте, и во главу угла поставить не производительность, а надежность? Singularity пытается ответить на этот вопрос, опираясь на усовершенствования в языках и средствах программирования. Несмотря на то, что о надежности трудно судить по исследовательскому прототипу, Singularity показывает практичность новых технологий и архитектурных решений, ведущих к созданию множества устойчивых и надежных систем в будущем.

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

Языки и средства, поддерживающие перечисленные возможности, в процессе работы выявляют и предотвращают ошибки программирования. Менее исследовано, как эти механизмы способствуют глубоким изменениям в системной архитектуре, которая, в свою очередь, могла бы приблизить достижение такой цели, как устранение дефектов ПО и смягчение их последствий [28].

Эта статья в деталях описывает систему Singularity. Раздел 2 содержит обзор системы и ее новинок. Раздел 3 описывает архитектуру системы Singularity, фокусируясь на ядре, процессах и исполняющей системе языка. Раздел 4 описывает системную поддержку языков программирования. В разделе 5 описывается I/O и система безопасности. Раздел 6 содержит замеры производительности. Раздел 7 описывает работы, связанные с данной. Приложение А содержит список вызовов ABI ядра.

2 Singularity

2.1. Расширяемость

2.2 Абстракция приложения

2.3 Обсуждение

3 Архитектура Singularity

3.1 Доверенная основа (Trusted Base)

3.2 Ядро

3.2.1 Таблица дескрипторов (Handle Table)

3.2.2 Версионность ABI

3.2.3 Планировщик задач (Scheduler)

3.3 Процессы

3.3.1 Управление стеком

3.3.2 Exchange Heap

3.3.3 Потоки

3.4 Сборка мусора

3.4.1 Управление стеком

3.5 Каналы

3.5.1 Реализация канала

3.6 Настраиваемые исполняющие системы

3.7 Обсуждение

4 Поддержка языков программирования

4.1 Контракты каналов

4.2 Конечные точки

4.3 Методы send/receive

4.4 Конструкция Switch-Receive

4.5 Владение

4.6 TRef

4.7 Exchange Heap

4.8 Проверки

4.9 Рефлексия времени компиляции

5 Система Singularity

5.1 Система ввода/вывода

5.2 Конфигурация драйвера

5.2.1 Спецификация

5.2.2 Время компиляции

5.2.3 Время установки

5.2.4 Время исполнения

5.2.5 Отображение в пространство имен

5.3 Сервер имен

5.4 Файловая система

5.4.1 Реализация

5.4.2 Boxwood

5.5 Безопасность

5.5.1 Механизмы времени установки

5.5.2 Динамический контроль доступа

5.5.3 Остальные runtime-механизмы

6 Производительность

6.1 Микротесты

6.2 Тесты дискового ввода/вывода

6.3 Тест SPECweb

6.4 Размеры исполняемых модулей

7 Связанные работы

7.1 Архитектура ОС

7.2 Расширяемость приложений

7.3 Языковая безопасность

7.4 Средства поиска дефектов

8 Заключение

9 Ссылки


Полная версия этой статьи опубликована в журнале RSDN Magazine #5-2005. Информацию о журнале можно найти здесь