Сергей Кузнецов
2006-11-13
В области операционных систем происходит следующее. Всегда имеется какая-то функциональность, которая является самой передовой, самой ценной, но, с другой стороны, всегда появляется что-то новое. Например, на самом низком уровне ядра у нас поддерживается диспетчеризация и управление памятью. Так сделано в Windows, в Linux, в разных других встраиваемых системах. Какое-то время новаторской областью был графический пользовательский интерфейс, мы им занимались, и он был одним из ключевых факторов успеха.
Чтобы быть сегодня на переднем крае, требуется не только вывести на новый уровень графику, но нужно также внедрять лингвистику, распознавание речи и образов и т.д. По мере нашего продвижения в этих направлениях многие операционные системы будут терять свои позиции. Требуется решать вопросы безопасности. Пользователь должен быть уверен в том, что выполняемая им программа работает действительно в его интересах, а не в интересах какого-то хакера, который смог получить над ней контроль. То есть новаторские подходы имеются в областях естественного интерфейса, безопасности и параллелизма. Мы думаем не только об изолированных компьютерах, а обо всем Internet в целом, о координации действий в масштабе глобальной сети, можно сказать, о распределенных вычислениях. Вот наш новый передний край. И будущий успех Windows, очевидный на сегодняшний день, будет зависеть от того, насколько активно мы будем работать на этом переднем крае.
Понимаете, если ОС Windows вырвалась сегодня далеко вперед, то какие-то наработки, еще недавно бывшие уникальными, рано или поздно будут использоваться в других системах. Именно поэтому наш исследовательский бюджет весьма велик, как велики и инвестиции в продвинутые исследования по определенным направлениям, о которых я говорил в своем выступлении. Мы движемся вперед, потому что мы знаем, что сегодняшнее программное обеспечение завтра будет стоить не так уж много, и вся наша история – это постоянное преодоление расширяющихся границ. И мы считаем, что Windows будет оставаться лидером и в решении этих непростых задач.
В чем состоят новые идеи по поводу технологии драйверов?
В области драйверов надо многое совершенствовать, потому что сейчас драйверы работают в режиме ядра, и поэтому, если с драйвером что-то происходит, пусть даже непреднамеренно или из-за какой-то проблемы с защитой, последствия могут быть катастрофическими. Поэтому одна из тенденций в области драйверов состоит в том, чтобы попытаться организовать большую часть их работы в пользовательском режиме. Конечно, это порождает существенные проблемы с точки зрения производительности, но я надеюсь, что применение творческого подхода поможет нам их преодолеть. Другая мера заключается в том, чтобы дать возможность разработчикам драйверов писать меньше своего собственного кода. Широко известно, что чем больший объем имеет код, тем больше вероятность наличия в нем ошибок. Так что чем больше мы сможем абстрагировать драйверы от ядра, тем более компактным будет код и тем меньше в нем будет ошибок.
Требуется многое сделать в области графических драйверов, потому что графический процессор стал очень мощной системой с большим числом задач распределения ресурсов, и необходимость координации работы центрального и графического процессоров естественным образом приводит нас к мыслям о гетерогенных параллельных вычислениях как основной концепции на будущее. Уже сейчас это находит свое отражение в некоторых графических драйверах.
Еще одна заслуживающая внимание тенденция состоит в том, что область драйверов является одной из первых областей, в которых мы начали использовать технологию верификации программного обеспечения. Речь идет о том, чтобы проверять программы перед исполнением и подтверждать их корректность. Мы об этом мечтали еще в то время, когда я был студентом, а это было уже давно, и тогда мы думали, что находимся на пороге прорыва в этой области. На самом же деле лишь в последние годы компании Microsoft удалось добиться скромных результатов в области верификации программного обеспечения. И для этого мы использовали как раз свои наработки по программным драйверам.
Мы думаем, что сможем поднять эту работу на гораздо более высокий уровень, сделав так, что разработчикам приходилось писать меньше кода, работающего в режиме ядра. Эту часть кода будет легче верифицировать перед тем как предоставить ему возможность работать на более высоком уровне привилегий. Так что область драйверов достаточно сложна, и очень важным преимуществом Windows является то, что у нас всегда была и есть самая лучшая их библиотека.
Каковы планы Microsoft по реализации в будущих версиях Windows WinFS?
Проект WinFS был связан с концепцией, в которую я твердо верю. У нас имеется слишком много разных способов хранения информации. Мы сохраняем информацию о контактах, музыку, фотографии и т.д. на очень низком уровне. Только приняв очень мощный подход, который реализован в базах данных, и создав функционально насыщенную унифицированную базу данных, мы сможем получить общие возможности навигации, поиска и программирования надо всеми этими данными. Мы намеревались встроить базу данных в файловую систему, но пришли к решению не делать это в текущей версии Windows.
Пока мы решили ограничиться унификацией управления данными на уровне почтового сервера. Мы включаем SQL Server в состав Exchange, Active Directory и SharePoint, а в следующем раунде вернемся к этому вопросу уже и на уровне клиентской операционной системы, так что при сохранении информации в Outlook она будет попадать в базу данных. Это сложная задача, потому что ее нужно выполнять без замедления выполнения обычных операций, но я убежден, что именно с этим будет связана следующая эпоха в области хранения информации, и компания Microsoft должна сделать этот шаг. Я думаю, что пройдет еще 2-3 года, пока мы не решим эту проблему полностью.
Недавно, с выпуском Microsoft Windows Compute Cluster Server компания Microsoft вышла в область параллельных вычислений. Как изменится информационная технология в предстоящие годы?
Имеется несколько причин, по которым компания Microsoft вышла в область высокопроизводительных вычислений, и двигателем наших усилий являлся Крейг Манди. Во-первых, это достаточно большой рынок. Если посмотреть на фармацевтические, проектные, конструкторские компании или государственные организации, которым требуется моделирование, то мы увидим, что класс задач, для которых требуется параллельные вычисления, достаточно широк. Одного этого было достаточно для того, чтобы мы решили заняться высокопроизводительными вычислениями.
Но есть и гораздо более важная причина, побудившая нас поработать в этой области. Чрезвычайно актуальным является обеспечение возможности на основе описания, постановки задачи принятия в динамическом режиме решения о том, какие вычислительные ресурсы целесообразно использовать для решения этой задачи. На основе формулировки задачи и описания наличных ресурсов требуется понять, как можно распределить задачу по разделам хранения, разделам вычислительной системы, с какой скоростью могут работать разные соединения и т.д. Эта проблема, до недавнего времени носившая частный характер, сейчас становится одной из основных.
Параллельные вычисления играют очень важную роль при повышении уровня возможностей сетевого поиска, области, в которой мы конкурируем с Google. Наш кластер, один из самых крупных в мире, используется для решения поисковых задач, и это похоже на то, как в Google выполняется распределенная обработка географических карт. Но мы считаем, что нам удалось выйти на уровень следующего поколения – работать не только с задачами, которые распараллеливаются естественным образом, но и декомпозировать последовательные задачи.
Бизнес-вычисления, автоматизация управления, практически все, что обеспечивается в Cluster Server, станет мейнстримом компьютерного мира. Это позволяет сэкономить затраты времени операторов, исключить распределение ресурсов вручную. Хорошим примером этого в Microsoft является процесс тестирования. Мы существенно уменьшили объем ручной работы, и сэкономили немало денег за счет использования параллельных вычислений при тестировании. Поэтому хочу подчеркнуть, что задачи, которые мы ставим перед собой, требуют расширения круга наших партнеров.
Имеются новые тенденции в процессорной архитектуре, такие, как появление многоядерных, многопоточных процессоров. В ближайшие годы параллельное программирование станет основным подходом в программировании. Каково видение Microsoft технологии параллельного программирования?
Да, действительно происходит революция. В течение двадцати последних лет тактовая частота процессоров повышалась пропорционально росту числа транзисторов на подложке. А в ближайшие годы, хотя число транзисторов будет увеличиваться, тактовые частоты будут расти очень медленно, может быть, на 5% в год и достигнут 5-8 гигагерц, в самом лучшем случае, 10 гигагерц. Встречаясь с представителями компаний, производящих процессоры, я всегда прошу дать мне процессоры с частотой 20, 40 гигагерц, но они не знают, как это сделать.
И поэтому программистам приходится решать проблему параллельных вычислений, которая, по сути дела, осталась неразрешенной за исключением так называемых «до неприличия естественно-параллелизуемых задач». Над этой проблемой работают наши лучшие умы. Мы взяли на работу специалистов по суперкомпьютерам, и все это находится в сфере ответственности Крейга.
У нас имеются разные идеи, включая программные транзакции, новую аппаратную архитектуру, аппаратную реализацию потоков для снижения задержек. У нас есть идеи по поводу внедрения в операционную систему знаний о физической структуре процессора, чтобы она могла обеспечивать высокий уровень распараллеливания, чтобы разработчикам приложений не приходилось выполнять эту работу самостоятельно. Есть у нас и мысли о построении систем управления базами данных в основной памяти гораздо более высокого уровня, чем те, которые существуют в настоящее время. То есть мы активно работаем в этой области.
Тем не менее, я полностью согласен с тем, что в области параллельных вычислений нужны новые идеи. И мы очень заинтересованы в лицензировании, сотрудничестве, экспериментах в этой области, потому что как бы много мы ни делали, это сложная проблема, и нам нужны решения на многих уровнях. Нас очень интересует сотрудничество в этой области. Библиотеки для решения специальных задач и приложения позволят нам быстрее продвигаться в этом направлении.