|
|
Singularity: лучше, чем Windows
Новая операционная система от Microsoft бесплатна, надежна,
не подвержена вирусным угрозам и работает намного быстрее, чем Windows, Mac OS и
Linux. Тем не менее многие пользователи не принимают ее во внимание. мы объясним
почему.
Шесть лет назад корпорация Microsoft решила начать
разработку новой операционной системы: этот проект получил название Singularity.
При этом специалисты исследовательского подразделения Microsoft создали
абсолютно новую ОС, основным достоинством которой стала надежность. Во время
презентации Singularity на выставке разработок TechFest корпорация стремилась
донести следующую мысль: Singularity — это не очередная версия Windows, а
источник идей и технических нововведений для нее. По всей видимости, данное
заявление было сделано для того, чтобы умерить желание многих пользователей
получить новую ОС. Ведь всего того, на что способна Singularity благодаря своей
архитектуре, в Windows нет. Нет этого даже в Windows 7. Если вы захотите
самостоятельно убедиться в этом, можно бесплатно скачать систему с сайта
www.codeplex. com/singularity.
Практически любая существующая сегодня операционная
система, установленная в персональных компьютерах, будь то Windows, Mac OS или
Linux, имеет в своей основе «древнюю» архитектуру. Все используемые концепции
относятся к тому времени, когда еще не было ни Интернета, ни вирусов, а
компьютер по величине походил на современный серверный шкаф.
Основная часть традиционных операционных систем, прежде
всего ядро, написана на языке программирования С. Современные разработчики этого
бы делать не стали, так как команды на языке С и его преемнике C++ оказывают
прямое влияние на регистры процессорного ядра и оперативную память. Из-за
высокой производительности вначале это кажется преимуществом, но одновременно с
этим система испытывает трудности с устранением программных ошибок или остановки
исполнения вредного кода, так как ей неподконтрольно то, что делает код.
Известным примером, иллюстрирующим данную ситуацию,
является переполнение буфера, при котором программа записывает данные в области
памяти других, «соседних» приложений — типичный способ действия вредоносного ПО,
которое стремится заполучить на компьютере права администратора.
И даже если вся ответственность за брешь в системе
безопасности ложится на небрежно написанное приложение, в первую очередь
несовершенство ОС делает такую программу по-настоящему опасной.
Код: безопасные языки программирования
В Singularity разрешен только безопасный программный код,
написанный на языках, обеспечивающих собственную среду выполнения (Runtime
Enviroment). На уровне приложений она работает как виртуальная машина.
Известными языками программирования, поддерживающими Runtime, являются прежде
всего Java и все .Net-языки — к примеру, C#. Код Singularity также написан
практически полностью на C# (читается как «Си-шарп»), точнее специально
разработанном для нее языке Sing#.
В отличие от C и C++, компилятор не переводит программный
код сразу на машинный язык. Вместо этого среда выполнения преобразует его
вначале в байт-код. Благодаря данному промежуточному этапу система может
проверить правильность кода и избежать «вторжения» в другие области памяти. Это,
конечно, отнимает некоторые системные ресурсы, но Singularity позволяет
компенсировать потери — каким образом, вы узнаете из раздела
«Производительность».
Защита: изоляция всех процессов
В отличие от традиционных систем, Singularity способна на
программном уровне изолировать друг от друга все выполняющиеся процессы и
обеспечить безопасность их выполнения. Для каждого запущенного приложения,
включая все необходимые программные библиотеки, создается
программно-изолированный процесс (SIP), для которого выделяются требуемые
ресурсы
Среда выполнения каждого SIP также работает независимо от
системы и может быть изменена в соответствии с требованиями приложения.
В Windows или Linux, как правило, имеется одна среда
выполнения для всех приложений. К примеру, ответственность за все запущенные
Java-приложения ложится на Java Runtime Environment (JRE) — исполнительную среду
для написанных на языке Java приложений. Сбой одного потянет за собой всю JRE, и
работа всех приложений Java будет прервана.
Отказ какого-либо программно-изолированного процесса в
Singularity никоим образом не отразится на работе остальных компонентов системы.
Кроме того, Singularity помещает расширения приложения в отдельный SIP. К
примеру, компоненты ActiveX, используемые браузером IE, являются излюбленной
лазейкой для вредоносного ПО. В Singularity в подобном случае сбой произошел бы
только в SIP расширения, а браузер остался бы целым и невредимым.
Каналы: эффективная коммуникация
По причине того, что программно-изолированные процессы в большинстве случаев
работают самостоятельно, обмен данными с ядром посредством двоичного
интерфейса приложений (ABI) ограничивается
несколькими командами. Для сравнения: ABI в
Singularity обходится 163 функциями, а для
программного интерфейса приложений в Windows (API)
предусмотрено около 14 000 функций.
Программно-изолированные процессы, отделенные друг от друга, сообщаются между
собой посредством каналов. Они проходят через контролируемое ядром пространство
— «обменную область» (Exchange Heap). В ней также
находятся файлы, которые обрабатываются процессами в настоящий момент. Каждый
бит данных в «обменной области» принадлежит только одному процессу.
Совместное использование страницы памяти в Singularity
запрещено, разрешено только неоднократное получение доступа на чтение.
Файл, загруженный через браузер из Интернета, будет помещен в «обменную
область». Для его сохранения на диск браузер открывает канал подключения к
драйверу файловой системы. Она также посредством канала устанавливает связь с
драйвером жесткого диска. Одновременно с открытием канала
SIP передает права владения файлом.
В существующих ОС системы каналов нет, так что Singularity
в ближайшем будущем едва ли сможет прийти на смену
Windows. Для этого пришлось бы переписать все существующие приложения.
Такие известные программы, как Photoshop и
Nero, в Singularity работать
не будут, так как они написаны на небезопасных языках C
или C++. Но даже Java- или .Net-приложения,
которые полностью совместимы со средой Singularity,
пришлось бы дополнить возможностью работы с каналами.
Стабильность: синий экран смерти уходит в прошлое
Драйверы — самые небезопасные компоненты ядра. 85% всех сбоев
Windows объясняется дефектными драйверами. А в
Linux-системах вероятность появления ошибки в
драйверах в сравнении с остальным кодом ядра выше в семь раз.
Проблемы с драйверами возникают по большей части вследствие того, что система
не может контролировать все то, чем они «занимаются», какие ресурсы используют
и с какими другими системными компонентами могут провоцировать конфликты.
Вместе с этим многие драйверы работают с наивысшими системными правами. Если
они вызывают сбой, то, как правило, «тянут» за собой всю систему.
В Singularity это невозможно по двум причинам:
во-первых, в инсталляторе драйвера должен содержаться так называемый
манифест. Он представляет собой не что иное, как XML-документ,
описывающий прежде всего то, какие аппаратные ресурсы требуются драйверу. На
основании данной информации Singularity еще до
установки может выяснить, будет ли драйвер вообще работать с данным аппаратным
обеспечением и какова вероятность возникновения конфликтов с другими модулями.
Во-вторых, после установки драйвер, в отличие от традиционных систем,
располагается не в ядре, а рассматривается системой как обычное приложение, и
для него выделяется отдельный SIP. Если драйвер по
причине наличия в его коде ошибки вызовет сбой, то это никак не отразится на
ядре. Singularity просто перезагрузит драйвер,
известив об этом пользователя.
Вот в чем заключается преимущество микроядра, которое освобождает как можно
больше системных ресурсов, чтобы потом задействовать их при необходимости. Идея
микроядра сама по себе не нова, она встречается уже в обучающей системе
Minix образца 1987 года. Но ее реализация до
настоящего времени была связана со множеством проблем, главная из которых —
слишком медленная работа.
Производительность: устранение «тормозов»
В процессорах архитектуры х86 реализован механизм уровней защиты, так
называемых колец. Всего их четыре, но ОС используют только два — нулевое и
третье. Процессы нулевого кольца имеют доступ ко всем процессорным командам и
страницам памяти, а процессам третьего кольца прямой доступ к аппаратному
обеспечению, а также нулевому кольцу запрещен.
Все критичные для системы процессы, например драйверы, работают на нулевом
кольце — в режиме ядра. А приложения, к примеру Firefox,
— на третьем кольце, в режиме пользователя. Такая аппаратная защита
предпочтительна для систем, в которых драйверы работают в режиме ядра. Но
именно она и делает систему уязвимой.
Подходящим решением здесь стало бы использование микроядра, в котором драйверы
работали бы на третьем кольце. В случае возникновения проблем это бы никак не
повлияло на стабильность системы.
Техническая сингулярность
Однако такой подход снижает производительность: каждый запрос приложения на
третьем кольце, адресованный системе, должен быть повторно выполнен в нулевом
кольце, так как приложение не обладает правом прямого доступа. На это тратится
время и системные ресурсы, причем немалые: исполнение вызова на уровне
нескольких колец происходит в пять десять раз медленнее, чем в пределах одного
кольца. Поэтому монолитные ядра, которые мало взаимодействуют на уровне
нескольких колец, работают быстрее, чем микроядра.
Singularity имеет программную
защиту, реализованную с помощью закрытых SIP, и вообще
не нуждается в кольцах защиты. Иными словами, система работает полностью в
режиме ядра, превосходя в результате по скорости работы все другие системы.
Команда разработчиков Singularity провела интересный
эксперимент: они разделили системные компоненты Singularity,
как и в Windows, на кольца. В результате скорость
работы Singularity снизилась приблизительно на 30%.
Таким образом, Windows, Linux
и прочие системы могли бы уже сегодня без дополнительной оптимизации
работать на 30% быстрее. Для этого необходимо просто отключить аппаратную
защиту и пренебречь стабильностью. Singularity же
может отказаться от защиты и остаться после этого стабильной системой. Этот
фактор приводит к впечатляющим показателям производительности. Так что задержки,
обусловленные использованием безопасных языков программирования,
компенсируются с лихвой.
Термин «сингулярность» используется во многих областях науки и естествознания
— в физике и биологии, философии и математике. Благодаря фантастической
литературе наибольшую известность приобрела гравитационная сингулярность,
определяемая как «область пространства-времени, в которой кривизна
пространственно-временного континуума обращается в бесконечность или терпит
разрыв». Такими свойствами, согласно общепринятой теории, обладают черные дыры.
Однако выбирая название для своей инновационной ОС, в
Microsoft скорее имели в виду технологическую сингулярность — «короткий
период чрезвычайно быстрого технологического прогресса».
|
|
|