Главные новости

Новости RSS
13:14
+ 
12:36
+ 
00:00
+ 
16:44
+ 
16:11
+ 
15:45
+ 
15:10
+ 
14:44
+ 
14:10
+ 
13:45
+ 
13:11
+ 
12:44
+ 
11:45
+ 
10:45
+ 
09:44
+ 
09:10
+ 


Phantom Operating System


Андрей Анненков     

  распечатать RSS
Рассказ об этом проекте The Register начинает традиционным для импортных статей о русских программистах образом. В Москве девять градусов по Фаренгейту, вследствие чего абориген Dmitry Zavalishin вынужден сидеть дома и отлаживать код операционной системы Phantom. Другого способа абстрагироваться от ужасной погоды у Dmitry Zavalishin нету.



Дмитрий Завалишин

Можно иронизировать по поводу опубликованного англичанами текста, однако нельзя не признать, что именно после него (а также заметки о Phantom на slashdot.org) проект получил известность на родине разработчика. Из-за тона онлайн-обсуждений на русском языке (например, здесь) известность эту впору назвать скандальной.

Начало переписки с Дмитрием и нас заставило подумать, что он – городской сумасшедший. Судите сами. Человек утверждает, что может создать ОС, обеспечивающую рост производительности труда программиста на 200-400%.

Предупреждение читателю


Дальнейший текст представляет собой краткое и более или менее добросовестное изложение беседы с Дмитрием Завалишиным, разработчиком операционной системы Phantom.

Давать этот материал в виде интервью показалось нам неоправданной жестокостью по отношению к читателю, поэтому мы решили взять на себя труд написать удобоваримый текст.

Задачу эту выполнить не удалось, несмотря на все старания. Даже примитивное описание Phantom’а представляет собой весьма непростое чтение. Если такое вам не по вкусу, бросьте читать прямо здесь.

Кому она нужна


Вы полагаете, будто операционная система (представьте себе для наглядности Windows) нужна пользователям, т.е. нам с вами? Да, но только во вторую очередь. В первую – операционная система нужна программистам.

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

Но самый главный ресурс, который ОС должна позволять использовать как можно более эффективно – это время программиста. Поэтому скорость разработки приложений есть главный критерий качества ОС. Если разрабатывать приложения для какой-то ОС неудобно, она плоха.

Современные ОС – старые ОС


Эволюция языков программирования позволила радикально ускорить отладку отдельно взятого приложения: современный программист легко справляется со множеством взаимосвязанных объектов весьма сложной структуры. Но как только требуется передать эти объекты из одного приложения в другое, программирование становится, по словам Дмитрия Завалишина, "смертоносно сложным".

Пример – технология OLE, существующая в Windows с незапамятных времен. С ее помощью можно внедрить, например, полноценную таблицу Excel в документ Word. Для пользователя OLE – великое благо. Но приложений, реализующих OLE, ничтожно мало по причине запредельной трудоемкости изготовления кода. Да и иные способы взаимодействия программ – не легче. Все многообразие объектов, связанных друг с другом в сложный граф, надо свернуть в линейную последовательность байтов, чтобы передать другому приложению, которое, в свою очередь, станет восстанавливать данные во всем многообразии их структуры из примитивной, не приспособленной ни для чего сложного линейной последовательности.

Все хорошо, пока мы пишем приложения. Но как только нам надо выйти на уровень операционной системы для того, чтобы обеспечить их взаимодействие – мы оказываемся в далеком прошлом, среди технологий полувековой давности.

Почему так


Потому что каждое приложение (точнее, процесс) в современных ОС (а все они в той или иной степени UNIX-подобны; правильно будет сказать, что мы все еще живем в эпоху UNIX) работает в своем адресном пространстве – выгороженном участке оперативной памяти, недоступном для других процессов. Иначе нельзя. Иначе процессы – по  злой ли воле или случайно – станут портить друг другу жизнь.

Разделение адресных пространств неэффективно с точки зрения использования ресурсов компьютера (обосновывающие объяснения придется опустить). Но оно гарантирует работоспособность, бесконфликтность одновременно работающих процессов.

Современный разработчик иного и не мыслит.

Intel 432


Но разделение адресных пространств вовсе не необходимо. Есть иные способы защитить процессы друг от друга.

Во времена, когда Intel сделала 286-й процессор (а было это более 20 лет назад – уже выросло поколение, которое такого и не помнит), был спроектирован чип Intel 432, который реализовывал красивейшую концепцию: не позволял преобразовать число в указатель на определенную область памяти. Просто не было такой операции. Указатель мог быть порожден только из указателя.

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

Сегодня ничто не мешает реализовать эту концепцию на любой аппаратной платформе. Технологии, необходимые для этого, известны не первый год под именем "бинарной трансляции". Об этом чуть ниже.

Без файлов


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

Но зачем это нужно? Если адресное пространство едино, достаточно просто наладить механизм его эффективного сохранения в энергонезависимой памяти (на диске). Да, это чрезвычайно затратное дело – вспомните о функции Hibernate в Windows. Минуты уходят на то, чтобы записать всю оперативную память на диск, причем не всегда потом удается восстановить систему в зафиксированном состоянии.

Но процедуры вроде Hibernate и не требуется. Все современные ОС в ходе работы используют т.н. виртуальную память, рассматривая ее на логическом уровне как продолжение оперативной, в то время как физически она лежит на диске (на сей счет устоялась терминология: swapping, paging). Это работает в реальном времени, одновременно с приложениями.

Есть, однако, очевидная проблема. В том случае, если одновременно с работой приложений надо зафиксировать ("сфотографировать") на диск актуальное состояние постоянно модифицируемой оперативной памяти, ее, эту память, нельзя выгружать по кусочкам. Она нужна нам целиком. Иначе потом систему не поднимешь после, например, аварийного выключения питания.

Но останавливаться и ждать, пока ОС довершит фиксацию (получится тот же Hibernate), нет времени.

Дмитрий Завалишин утверждает, что решил эту проблему. Phantom время от времени "поднимает волну", которая бежит по памяти, выводя ее содержимое на диск. Процессы при этом вправе модифицировать память только в той ее части, которая еще не выгружена, не зафиксирована на диске. Если же им потребовалась модификация ещё не выгруженной памяти, соответствующий фрагмент памяти обрабатывается по специальной процедуре и переносится "вперёд", за гребень волны. Быстрые алгоритмы для такой процедуры вполне могут быть реализованы. Пользователь ничего не почувствует.

Это означает почти полный отказ от понятия "файл" в его нынешнем понимании. Точнее сказать – использование файлов перестаёт быть неизбежной повинностью программиста.

Почему теперь


Т.н. технология бинарной трансляции, ныне широко применяемая в системах виртуализации, позволяет сделать из любого реального компьютера любой виртуальный. Причем с очень высокой эффективностью. Пример – компания Transmeta (в которой трудился, кстати говоря, Линус Торвальдс). Ее процессор ничего общего с архитектурой 8086 не имел, однако работал под Windows благодаря системам бинарной трансляции – прикладной софт не замечал подмены.

Выбрасывать старые приложения в связи с приходом новой гипотетической ОС – Phantom, как вариант – скорее всего, не придется. Двухшаговая трансляция с промежуточным представлением программного кода в форме эсперанто (т.н. bytecode), "понятного" для транслятора, обеспечивающего эффективный загрузочный код для любого процессора – функция, реализованная в большинстве современных языков программирования. C# и Java построены ровно так. Текст на C# компилируется в bytecode, который потом обрабатывается платформой .NET. Точно так же поступает с bytecode, полученным на первом шаге трансляции кода Java, виртуальная Java-машина.

Все это развязывает руки разработчику операционных систем. Время принципиально новых решений в области проектирования ОС наступает или уже наступило. Причем новая ОС не будет революцией. Ее приход для пользователя станет потрясением несколько меньшим по сравнению с тем, которое сопровождало выход Windows 95. Он, пользователь, уже подготовлен к переменам в этой области появлением новых ОС вроде Android.

Заключительное замечание


Многие важные детали опущены ради компактности изложения, что оставляет простор для уточняющих вопросов и критики.
 

Возврат к списку


Комментарии — 18
Защита от автоматических сообщений:
Символы на картинке:
  Защита от автоматических сообщений

777  — 06 июня 09:07
Фантом система несовместимая с windows, linux и mac os. Под новую систему нужно разработчиков заставить писать драйвера, но под систему, которая не имеет комерческого успеха(и не будет иметь) никто тратится на написание любых програм. Сиситема без файлов-бред. Как програма будет отличать текст от музыки? А разработчики знают, что програма тоже файлы. А если система зависла, после перезагрузки мы будем иметь тоже состояние, что и до перезагрузки, тоесть зависание сиситемы. в случае с windows, linux, mac и прочими "старыми" системами, после перезагрузки мы будем иметь работающую систему и сможем снова запустить програму. А если програмы не закрывать, то они будут грузить комп'ютер и он будет работать медлено.

Анненков  — 18 апреля 16:37
2 ir4y

Простите, что не сразу - не заметил ваш комментарий вовремя.

Вы правы: в командах процессора я не программировал никогда. Спасибо за замечание. Надеюсь, представление о сути дела (т.е. о Фантоме) этот фрагмент текста не искажает

ir4y  — 06 марта 18:39
Intel 432, который реализовывал красивейшую концепцию: не позволял преобразовать число в указатель на определенную область памяти. Просто не было такой операции. Указатель мог быть порожден только из указателя.

то что реально делал Intel iAPX 432:
Programs are not able to reference data or instructions by address; instead they must specify a segment and an offset within the segment

не зависимо от того что это данные, адрес, смещение, номер сегмента это все ЧИСЛА и их никуда не надо преобразовывать, и подобные высказывания об отсутствии инструкции звучат по меньшей мере странно.
PS
может просто автор статьи перефразировал что то и исказил смысл, но написано так буд то говорил человек не до конца разобравшийся см низкойровневым программированием, а без него на одном C# и JAVA ос не напишешь....

Гость  — 18 февраля 16:13
>Производительность труда программиста интересует всех, кто делает деньги на разработке софта.

интересует. но это лишь один из факторов. к тому же неоднозначный. и далеко не самый значимый. на мой взгляд, конечно.

dz  — 16 февраля 13:21
Производительность труда программиста интересует всех, кто делает деньги на разработке софта.

Гость  — 16 февраля 13:02
Могу ошибаться, но технические детали той или иной ОС (как и любого другого продукта) имеет смысл обсуждать лишь после того, как становится понятно, кому и зачем это нужно. Неужели кого-то интересует "рост производительности труда программиста"? Глобально ("индусов", "уставших от Windows пользователей", etc.) - может быть. За обсуждение концептов денег не берут. А конкретно? Какому-то программисту интересно писать приложение под никем не используемую ОС? Даже если это занимает очень мало времени..

С другой стороны, кто знает... Если сегодня заказать дизайн web-сайта у разработчика революционной ОС (насколько я понял, компания-разработчик вообще-то больше занимается созданием сайтов и web-приложений), может быть, когда-нибудь настанет время писать об этом мемуары ;)

msado  — 15 февраля 20:50
Понимаю, конечно. Попытку перейти на личности внутри команды тоже отследил. Я, к сожалению, не умею поворачивать время вспять. Что сделано, то сделано, мы учимся на своих ошибках, на этой тоже обучились, будем работать дальше - у нас других занятий, как работать и побеждать нет и ближайшие годы не предвидется.

Извините, если кого обидел.

Анненков  — 15 февраля 19:22
Не трогаем, а цитируем. Близко к тексту

LimeHat  — 14 февраля 22:29
Зачем вы трогаете El Reg? :\
И не стоит его приравнивать к обычному англоязычному айти-ресурсу. Это — британский таблоид. Ему положено иметь не совсем обычный стиль изложения.

Феликс Мучник  — 14 февраля 22:23
Кир, но ты же прекрасно понимаешь, что мое отношение к любым вашим проектам после этого однозначное. Я, к сожалению часто, человек очень последовательный.

msado  — 14 февраля 21:10
Феликс, это к сожалению тоже понятно почему. Мы растем и нам приходится очень быстро бежать вперед, чтобы успевать кормить своих людей. При этом мы вынуждено теряем по дороге очень многое. У нас с Димой есть изрядное чувство вины в той ситуации, к которой ты обращаешься, но я не уверен, если честно, что ее можно было практически сдвинуть. Оформить ее по другому надо было обязательно, и это, строго говоря, вторая наша вина, может и более существенная чем первая.

Феликс Мучник  — 14 февраля 06:52
Дим, но тогда надо приходить и обсуждать, почему не продается, а не сидеть в засаде с хорошим продуктом и надеяться, что он продастся сам по себе. Ты меня понимаешь, надеюсь...

dz  — 13 февраля 22:16
Феликс: не думаю, чтобы Кирилл был виноват. Мы почти всё умеем сделать, но мало что умеем продать. :( Итог - из пяти продуктов на полке реально продаются два. Мы, увы, довольно медленно учимся быть продуктовыми, а не аутсорсными.

Феликс Мучник  — 13 февраля 21:50
неаккуратненько, доктор :)

Павел Власов-Мрдуляш  — 13 февраля 21:00
Мы как-то отказались от этого правовыравнивания - кажется, что оно как раз мешало чтению своими разрывами между словами. Ошибка?

Феликс Мучник  — 13 февраля 19:47
Не хотелось бы обижать dz, но его сотрудничество с Готовцевым приводит к потрясающим результатам... Любая хорошая идея, даже под которую им дают деньги, превращается в пшик, провокацию и Phantom!!!

П.С. Текст, уважаемая редакция, сделали бы удобочитаемым, или изложение таких идей лучше не выравнивать по правому краю?! :))))

JLarky  — 13 февраля 16:48
"рост производительности труда программиста на 200-400%." по сравнению с чем? с программированием "OLE" или другими чудо-техниками майкрософта?

"В первую – операционная система нужна программистам" толсто, учтите что "в первую очередь компьютеры нужны людям далёким от программирования"

А вообще ощущение что человек пишет ОС на лиспе...

Гость  — 13 февраля 16:08
Завалишину должно быть обидно :)



Блоги


, 1С-Битрикс , 3D , 3G , 4G , ABBYY , Acer , Adobe , Alawar , Alcatel-Lucent , Altimo , Amazon , AMD , Android , AOL , Apple , AppStore , Asus , AT&T , Autodesk , Avaya , Bing , BlackBerry , Blu-ray , Bluetooth , British Telecom , CeBIT , CES 2009 , China Mobile , Cisco , cloud computing , Conficker , Dell , Depo Computers , Deutsche Telekom , Dixis , DST , DVD , eBay , Elcomsoft , Electronic Arts , EMC , Ericsson , ESET , Facebook , FCC , Firefox , France Telecom , Fujitsu , Gartner , Gmail , Google , Google Chrome , GPS , HeadHunter , Hitachi , HP , HTC , Huawei , IBM , IBS , ICANN , ICQ , IDC , InfoWatch , Intel , Internet Explorer , iPad , iPhone , iPod , IPTV , IT , iTunes , Kindle , Kraftway , Lenovo , LG , LinkedIn , Linux , LiveJournal , LTE , Luxoft , Mac OS , Mail.ru , Mail.Ru , McAfee , Microsoft , Microsoft Office , Microsoft Rus , Motorola , Mozilla , MSI , MySpace , NEC , Nintendo , Nintendo Wii , Nokia , Nortel , NVIDIA , OLPC , Opera , Opera Mini , Oracle , Orange , Ozon , Palm , Palm Pre , Panasonic , Parallels , peer-to-peer , Philips , Pirate Bay , QIWI , Qualcomm , Rambler , REAL-IT , Red Hat , RIM , Ru-Center , SaaS , Samsung , Sanyo , SAP , Sharp , Shyam Telelink , Siemens , Skype , sms , SMS , Softkey , Softline , Sony , Sony Ericsson , Sony PSP 3000 , Street View , Sun , Symantec , Symbian , T-Mobile , Tele2 , Telenor , Toshiba , Twitter , Verizon , Vista , VMware , Vodafone , Walt Disney , WebMoney , Wi-Fi , Wikipedia , WiMax , Windows , windows , Windows 7 , Windows Mobile , Xbox , Xerox , Yahoo , Yota , YouTube , авторские права , АйТи , Акадо , Альфа-групп , Антон Носик , АФК Система , Барак Обама , Бегун , Беталинк , Билайн , Билл Гейтс , биометрические паспорта , Биргер Стен , блоги , ботнет , Василий Буров , ВГТРК , видео , Википедия , вирус , ВКонтакте , Владимир Путин , Восход , Вымпелком , гаджеты , Герман Клименко , ГЛОНАСС , Госдума , данные , дети , Дмитрий Медведев , домены , Евгений Касперский , Евгений Чичваркин , Еврокомиссия , Евросеть , Евросоюз , Игорь Ашманов , Игорь Щеголев , игры , Илья Пономарев , Индия , инновации , Интернет , Казахстан , кибербезопасность , кибервойна , киберпреступления , кино , Китай , книги , Комстар-ОТС , концепты , кризис , КРОК , Кэрол Бартц , Лаборатория Касперского , Леонид Рейман , ЛИНЭКС , Мамба , МВД , МГТС , Мегафон , медицина , Минкомсвязи , Минэкономразвития , мошенники , МТС , МТТ , музыка , нанотехнологии , Наталья Касперская , нетбуки , Николай Прянишников , ноутбуки , образование , Одноклассники , олимпиада , онлайн-торговля , Пентагон , пираты , полупроводники , порно , почта , провайдеры , Рамблер , РБК , реклама , РЖД , роботы , Роскомнадзор , Роснано , Ростелеком , Ростехнологии , Рунет , Руперт Мердок , РУССОФТ , Сбербанк , Связной , связь , Связьинвест , Сергей Иванов , Сергей Карелов , Синтерра , Ситроникс , Скай Линк , Скартел , Сколково , СМАРТС , смартфоны , СМИ , сотовые операторы , сотовые телефоны , софт , социальные сервисы , социальные сети , спам , спорт , Спутниковая связь , стартапы , Стив Балмер , Стив Джобс , суперкомпьютеры , США , телекоммуникации , Техносерв , ФАС , Феликс Мучник , хакеры , цензура , церковь , цифровое ТВ , ШПД , Электронная Россия , Электронное правительство , Эльдорадо , Эрик Шмидт , Яндекс , Япония ,