наводила на мысль о том, как бы это делать правильно, и в девяностых годах начали бродить в голове и осмысливаться первые идеи, которые легли в основу «Фантома». Я много об этих идеях говорил, общаясь с разными людьми, с сотрудниками разных крупных софтверных компаний — это интересная тема, которая обсуждалась. И где-то лет пять назад один из моих знакомых мне сказал: «Давай, Дим, ты что-нибудь уже сделаешь, потому что, вроде, интересная тема». А я очень боялся, потому что тема-то на самом деле неподъёмная и, честно сказать, не мог подумать пять лет назад, что ОС у меня будет запускаться и работать.
Я стал пробовать, делать какие-то наброски, пытаться сделать то один, то другой кусочек — посмотреть работает или не работает та или иная вещь. Компилятор вот написал тестовый, систему виртуальной памяти. Оно начало оживать постепенно и двигаться. Финальный шаг — когда я сказал себе, что эти куски мы действительно будем собирать в ядро операционной системы.
Отчасти процесс пошёл потому, что случился информационный прорыв. Мы, на самом деле, его не планировали, но уже пытались делать какое-то ядро. Полтора года назад случилась эта история с публикацией в западном журнале. Случилось абсолютно спонтанно, не планировалось вообще. У одного из наших сотрудников был друг за рубежом, он ему рассказал, что, знаешь, у нас тут ребята операционку потихонечку клепают. 'Да, правда? Расскажите. Написал письмо, мы кинули ему внутренние рабочие материалы, идеи, и через неделю вылетела статья, от которой мы сами были в лёгком шоке. Эта статья была перепечатана множество раз — на сотой перепечатке мы просто перестали считать. До этого нас, конечно, воодушевляло — было интересно: японский, китайский языки, европейские языки, прибалтийские языки, дискуссия где-то в Эстонии о том, что русские подкопаются под Эстонию через операционную систему, которую они разрабатывают! Феерическая, конечно, реакция.
- Когда это было?
- Полтора года назад где-то. Зимой прошлого года. Если бы не это, может, ещё года два всё бы шло на тормозах. Но тут как-то так получилось, что мир про это узнал и среагировал не очень благожелательно. Были люди, которые говорили: «Да, здорово, интересно, слава богу, что вы так смотрите на вещи нестандартно, пытаетесь что-то сделать нетипичное». Были люди, которые говорили: «Да это всё сто раз уже было». И они отчасти правы, потому что концепцию, которая у нас есть, по частям можно найти в разных работах разных времён. Третьи говорили: «Да вообще, козлы, куда вы лезете, какие вам операционные системы, вы же там какие-то сайтики программируете». Да, понятно, что моя компания занимается разработкой веб-систем довольно много, поэтому люди говорят «сайтописатели операционку делают, да кто они такие?!». Естественного скепсиса хватает, но он и у меня вообще-то есть.
Мы люди адекватные и понимаем, что создать операционную систему, во-первых, сложно, во- вторых, крайне сложно выйти с ней на рынок, хотя бы на какой-нибудь. Тем не менее, меня много спрашивают: «Почему ты за это взялся? Насколько это всё реально?» Я отвечаю, что если бы я просто не стал бы этого делать, мне бы стало стыдно, что не попробовал.
Так что мы понимаем — это большая и сложная задача. Тем не менее, в последнее время появилось некоторое ощущение того, что наша работа действительно востребована. Во всяком случае, в некоторых ситуациях я встречаюсь с людьми, которые выражают желание либо просто попробовать другую операционную систему, либо явно указывают, что то, что мы сделали, им интересно, потому что в «Фантоме» есть те или иные специфические свойства, которые отвечают их потребностям. Причём есть люди, с которыми мы общаемся по поводу этой операционки, и они говорят: «Ребята, нас очень радует то, что она простая». Даже это уже важно.
- А можете как-нибудь сформулировать, что отличает «Фантом» от других существующих ядер?
- Конечно. У меня есть хорошая, как мне кажется, иллюстрация к этому. Почти все люди в этой стране хоть раз видели икеевскую мебель и хоть раз в жизни собирали её. Представьте себе, что вы вынуждены каждый вечер, приходя домой, собирать эту мебель, а утром снова разбирать и класть в ящики. Это иллюстрация того, как работают все без исключения современные программы. Программа в силу некоторого стереотипного мышления разработчика операционных систем вынуждена, поработав какое-то время, всё своё внутреннее представление о предмете, с которым она работает, разбирать и складывать в файлы. Это достаточно болезненный, странный и ненужный процесс. Первое, что делает «Фантом» — это избавляет программиста от необходимости этим заниматься.
Из этого проистекает достаточно много вещей — от приятных до фантастически хороших. Самая простая и очевидная — то, что в силу этого факта фантомовские программы не замечают перезагрузки операционной системы. Этому все так радуются в Firefox, который, как известно, способен запомнить состояние и при загрузке его «поднять». Но Firefox делает это вручную, а «Фантом» гарантирует такое всем работающим программам, перманентно и без какой-либо поддержки с их стороны. Выключил-включил — всё осталось как прежде и поехало дальше.
Обратим внимание на то, что чтобы это делать, Firefox при перезагрузке перескачивает данные со всех сайтов. Для моих пятидесяти вкладок это вполне ощутимо. Перезагружаешь систему, и начинается война за канал — уходят минуты на то, чтобы всё это выкачать.
Ещё вчера был отличнейший пример, я просто счастлив, что на семинаре мне его подсказали. Был человек, который занимается пожарными системами. Он рассказывает про совершенно живую ситуацию: бросок питания — миллисекундный, но вызывающий сбой на процессоре. И после этого охранная система тратит пятнадцать минут на пересчёт датчиков. С «Фантомом» после сбоя питания и перезапуска система будет иметь то же состояние, и датчики пересчитывать уже не надо.
Или вот у вас стоит система, которая занимается жизнеобеспечением больного в больнице. Бросок питания — она перезапустилась и снова должна переинициализировать своё состояние, а больной до этого может просто не дожить. «Фантом» гарантирует ей перезапуск в рабочем состоянии. Оно может быть не вполне тем же самым, что и до выключения, но начнёт система не с нуля, а с полного состояния.
Есть ещё хороший пример того, где это важно (причём я не выдумываю их — это примеры, с которыми к нам приходили люди) — компания, которая делала «Марусю». У них там три или четыре компьютера в машине, при выключении зажигания их нужно выключить, потому что иначе они сожрут аккумулятор мгновенно. При включении зажигания они должны включиться. Сейчас при включении зажигания начинается загрузка — это процесс, который занимает минуты. То, что мы делаем, для них крайне актуально. Система, которая при выключении может «сфотографироваться» и лечь на диск, а при включении подняться в готовом состоянии, — точно соответствует запросам.
Стандартный вопрос, который мне задают: «А как же hibernate?». Во-первых, hibernate требует ручного указания на то, что его надо сделать, во-вторых, он ненадёжен (мы все знаем, что с какой-то вероятностью он не поднимается), потому что это не имманентное свойство системы, а он к ней привинчен снаружи. И третье — он не спасает ситуацию, когда электричество кончилось или произошёл сбой. То есть какая-то ситуация, когда компьютер перестал работать без создания образа.
Опять же, это свойство, которое все понимают, которое вроде как является главным для «Фантома». На самом деле, нет. На самом деле, важнее те вещи, которые проистекают из этой консистентности в программной среде. Что они означают? В современной операционной системе — будь то Unix или Windows, взаимодействие двух программ очень сильно осложнено по массе причин. Во-первых, в силу того, что структура системы построена по принципу раздельных адресных пространств, и они находятся за очень толстой стенкой. Они могут общаться только, грубо говоря, кидаясь друг в друга записочками, причём «записочки» — это довольно дорого, и в эту записочку не запихнёшь сложные структуры, которыми оперируют современные программы.
Во-вторых, нельзя установить долговременные отношения между программами. Оба приложения запускаются и останавливаются. И это обычное дело. Поэтому нельзя сказать «я с тобой буду дружить надолго», потому что он умрёт через пятнадцать минут и запустится уже в другом качестве. Это будет другая копия этой программы, с ней нельзя работать так же. Очень простой пример — запуск Photoshop. Он запускается и начинает сканировать шрифты, плагины, цветовые профили и всё это дело инициализирует