`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Операционные системы – кризис прагматизма

Статья опубликована в №40 (706) от 10 ноября

+33
голоса

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

Одно из возможных мнений современного прагматика от мира разработки программного обеспечения лучше всех не так давно высказал, как ни странно, знаменитый Дональд Кнут – представитель академической школы и, что бы кто ни говорил, все-таки один из самых знаменитых программистов (если за мерку известности принять значимость и распространение хотя бы одной авторской программы). В интервью с Эндрю Бинстоком (InformIT) менее года назад Дональд Кнут более чем резко высказался о факторе, который считается сегодня одним из главных мотивов, побуждающих искать новые архитектурные решения на уровне операционных систем (перевод не дословный, но полностью сохраняющий смысл): «...Мне кажется, что в большей или меньшей степени, но у разработчиков аппаратных средств иссякли идеи и они пытаются переложить ответственность за сохранение в будущем действенности закона Мура на плечи программистов, причем делают это с помощью разработки машин, которые демонстрируют прирост производительности всего на нескольких ключевых тестах!.. Продолжу свою мысль – за последние 50 лет я написал более тысячи программ, и многие из них были весьма солидного размера. Сейчас не могу сказать, что хотя бы пять из них можно усовершенствовать за счет мультипроцессорности или многоядерности».

Давайте подумаем о том, что именно мог хотеть сказать Дональд Кнут. И что именно он сказал. Для этого вспомним закон Амдала, который почему-то не очень любят упоминать, когда речь идет о битве за работоспособность закона Мура с применением «многоствольного» оружия с ограниченной скорострельностью каждого «ствола» (аналогии – штуки очень опасные, и данный случай не исключение).

Итак, закон Амдала гласит – если некоторая часть всей задачи может быть решена только не поддающейся распараллеливанию последовательностью операций, то максимальный прирост производительности за счет использования вычислителя параллельной архитектуры c процессорами по сравнению с классической однопроцессорной машиной не может превышать значения

Операционные системы – кризис прагматизма

Следует особо подчеркнуть, что это фундаментальное ограничение устанавливает максимально возможный прирост производительности. Что для прагматика означает – такой, который невозможно достичь на практике. И самое интересное в законе Амдала – зависимость максимального прироста производительности для задач с некоторым известным значением нераспараллеливаемой части вычислительного процесса от увеличения числа процессоров. Например, для задачи, всего 40% кода которой (α = 0,4) не допускает распараллеливания, картина выглядит, мягко говоря, не многообещающей (рис. 1).

Как видно из этого графика, для увеличения прироста производительности при решении такой задачи всего в два раза в идеале требуется восемь вычислителей. И дальнейшее повышение их количества совершенно бессмысленно – просто невероятно, что расходы на реализацию, эксплуатацию и программирование 256-процессорной машины будут компенсироваться достигнутым 1,25-кратным приростом производительности. Который в реальности из-за технологических и архитектурных ограничений, естественно, никогда не будет достигнут.

Соответственно, сразу напрашивается самый неприятный вопрос – а есть ли у нас формальные способы оценки этой самой цифры, позволяющие на самом раннем этапе проектного процесса (например, на этапе постановки задачи) с какой-то степенью уверенности ответить на крайне неприятные вопросы. А именно – есть ли нам смысл тратиться на параллельную реализацию нашей будущей программы? Получим ли мы существенный выигрыш в производительности при ее исполнении параллельными (многоядерными) вычислителями, которые станут массовыми ко времени завершения нашего проекта? Вопросы эти на самом деле вовсе не игрушечные или потешные. Разработка параллельных программ заданного уровня качества (пусть это условный термин, но он интуитивно понятен и не ограничивается только количеством дефектов) – удовольствие не из дешевых. И далеко не быстрое. Иными словами – занятие с двумя большими факторами риска (деньги и время) в условиях неопределенности. Эмпирически получены даже не оцен-ки, а некоторые основания для уверенности в правоте принятого решения о распараллеливании кода будущего проекта для определенных классов задач (реалистичной 3D-графики, моделирования систем, описываемых дифференциальными уравнениями, ряда численных методов etc).

Так что Дональд Кнут хоть и чрезмерно строг, но во многом все-таки справедлив. И хоть это, безусловно, интересное занятие – чтение новостей о 100-ядерных процессорах, спешить кричать «ах!» не стоит. Потому что совершенно непонятно пока, что именно с этим «ах!» делать. Причем вся проблема как раз и заключается в вопросе «что именно с этим делать?», потому как на вопрос «как именно делать?» ответы ищутся и, похоже, уже находятся. Поэтому вполне возможно, что реалистичный 3D-интерфейс в виде смазливой и болтливой девушки к... обычной и с обычной скоростью работающей утилите поиска в тексте с помощью регулярных выражений – ближайшее будущее. Архитектуру ведь надо использовать на все 100%? Надо. И пока что развитие пользовательских интерфейсов всех массовых операционных систем убеждает в том, что такое допущение вовсе не настолько глумливое, каким кажется. Несмотря на это, мы все же немного поговорим о том, какими именно представляют себе разработчики новых ОС те механизмы, с помощью которых мы в ближайшем будущем сможем еще намного быстрее не совсем понятно что.

Как ни странно, но ориентировочно с 2003 г. основным источником новых операционных систем является самая, пожалуй, прагматичная программистская компания в мире. Да, речь идет о Microsoft. Знаменитой своим подчеркнутым прагматизмом и неспешностью по отношению к включению «необкатанных» инноваций в массовые продукты. Точнее, о ее исследовательских подразделениях Microsoft Research. Три крупных исследовательских проекта ключевого системного ПО меньше чем за шесть лет – это не шутка. Больше того, это вообще в своем роде исключение из правил. Причем речь идет о проектах совершенно новых, созданных с нуля операционных систем, не оставшихся на бумаге, а доведенных до статуса «полностью работоспособный прототип».

Операционные системы – кризис прагматизма
Закон Амдала в действии

Первой в этой цепочке, в чем-то, возможно, отражающей черты будущего, располагается, естественно, ОС Singularity. Эта система распространяется на основании лицензии MSR-LA с открытыми исходными текстами и доведена в прошлом году до вполне работоспособной версии 2.0. Лицензия либеральна и имеет ярко выраженный исследовательский характер в том смысле, что допускает практически все что угодно некоммерческое вплоть до распространения системы на сопровождающих книги носителях информации. Совершенно замечателен тот факт, что Singularity, создание которой началось за несколько лет до упомянутого выше интервью Дональда Кнута, подчеркнуто и как будто нарочито соответствует его резким словам в адрес разработчиков аппаратных средств. Точнее, даже не так. Создатели идей и кода Singularity словно бросили вызов расписавшимся в бессилии «железячникам» и в полной мере попытались принять на себя всю ответственность за сохранение закона Мура. Singularity, если можно так сказать, сугубо программная операционная система, не требующая традиционной аппаратной поддержки для решения ключевой задачи ОС – защиты множества исполняемых процессов друг от друга. Впрочем, система не исключает и возможности специфической аппаратной поддержки, радикально отличающейся от известных традиционных решений. В некоторых крупных чертах Singularity очень похожа на ставшую уделом маргиналов и утонченных эстетов от программирования систему Forth. В первую очередь в том, что и Singularity, и Forth являются неразрывно взаимосвязанными гибридами собственных специфических языков программирования и ОС. Для реализации Singularity был создан диалект C# – Sing#, позволяющий с минимумом дополнительных языковых конструкций удобно писать весьма выразительный параллельный код. С вечной головной болью всех «параллельщиков» – разделяемыми областями памяти с совместным доступом – идеологи проекта поступили радикально. А именно, принципиально отказались от такой возможности. Что, естественно, потребовало массы логично следующих из этой конструктивной особенности проектных решений (в том числе и отказа от традиционных методов защиты процессов друг от друга). Основная абстракция Singularity – программно изолированный объект (несмотря на слово «process» в аббревиатуре SIP). Изоляция здесь означает собственное уникальное адресное пространство, недоступное прочим объектам. Объекты-SIP могут обмениваться данными посредством каналов связи со строго заданными протоколами и типами данных. Обо всяких очевидных для современных технологий программирования нюансах (типа сборщиков мусора) есть смысл сказать только, что они в системе реализованы. Кое-что менее очевидное надо подчеркнуть. Например, тот факт, что уникальность адресных пространств объектов-SIP принципиально исключает возможность обмена адресами памяти (в идеале – из-за полной бесполезности, в реальности несовершенных реализаций системы – из-за возможности нарушения ее нормальной работы). И, естественно, низкую «стоимость» (в вычислительных терминах) всех ключевых системных операций. В принципе, этих сведений о Singularity вполне достаточно для того, чтобы понять – эта ОС очень похожа на... доведенный до уровня основного компонента системного ПО многопроцессорного вычислителя аналог среды программирования C# или Java, со своей специфической виртуальной машиной, runtime, библиотеками и т. д. По сути, это одно из вполне возможных направлений развития ОС – доведение виртуализированной (с собственной виртуальной машиной и JIT-компилятором) системы программирования до уровня автономной системы, максимально использующей возможности многопроцессорных архитектур. Этакий последователь Forth в 2010-x годах. В пользу такого решения говорит и то, что параллельное программирование требует адекватных языковых инструментов, соответствующих возможностям 8- и 16-ядерных процессоров в той же степени, в какой в свое время язык Forth соответствовал возможностям 8- и 16-битовых микропроцессоров. Ну и само собой, этот последователь предусматривает доведение идей объектно-ориентированного программирования до уровня идеала, с подлинной, исключающей любые обходные пути, инкапсуляцией, и с семантическим, а не синтаксическим механизмом обмена сообщениями между объектами.

Следующий проект цепочки, ОС Barrelfish, на уровне идеи можно назвать «ОС для гетерогенного многопроцессорного персонального вычислителя». Такой вычислитель – вовсе не далекое будущее, любой из нас может обнаружить его... на своем рабочем столе. В большинстве наших компьютеров – многоядерные процессоры, графические акселераторы со своим множеством процессоров в GPU и куча всяких вовсе малозаметных вычислителей (сигнальные процессоры звукового тракта, контроллеров внешних устройств etc). Идея разработчиков Barrelfish – ОС, превращающая весь этот разнобой в слаженный хор, подчиненный решению одной задачи. Соответственно, необходимы и множество ядер ОС для каждого вычислителя, и компиляторы, позволяющие генерировать для них код, и язык, позволяющий писать максимально мобильные программы, и очень специфическая среда времени исполнения такого языка. Что очевидно, в подобной системе уникальность адресных пространств объектов или процессов – не решение разработчика, а техническое требование. Так что без механизма передачи сообщений здесь также не обойтись. Barrelfish также не «бумажный» проект, рабочий прототип этой системы уже доступен в исходных текстах. В отличие от предшественницы Barrelfish, разрабатываемая Microsoft Research в альянсе со знаменитой Швейцарской высшей технической школой Цюриха (ETH, откуда родом все детища Никласа Вирта, в том числе и ОС Oberon и Bluebottle), распространяется на основе самой либеральной лицензии BSD.

Ну и наконец, совсем «свежий» проект – ОС Helios, уточняющий очередной контур возможного будущего. По большому счету, он эволюционно продолжает главную идею Barrelfish (использовать гетерогенный многопроцессорный персональный вычислитель как единую систему), но с применением приемов, заимствованных из мира «больших» гетерогенных вычислительных кластерных систем. Если Barrelfish – это множество ядер ОС, заранее созданных и запущенных одновременно на разных вычислителях, то Helios – это динамический механизм порождения первым загруженным ядром-координатором новых ядер для всех обнаруженных вычислителей. К числу существенных, но как- будто незначительных модификаций предшественников Helios добавляет дифференциацию реализации механизма передачи сообщений, вводя понятия «близкого» и «далекого» сообщений. Если два процесса выполняются под управлением одного ядра, Helios автоматически активирует для них механизм близкого обмена сообщениями, вообще не требующий затрат на копирование данных. Во всех остальных случаях включается режим «дальней» связи с соответствующим повышением накладных затрат на доставку сообщения.

Теперь настало время поговорить о том общем, что объединяет все три проекта. Во-первых, это микроядро. Что бы ни говорили самые оголтелые фанатики, какие бы цифры ни приводили в качестве доводов, если многопроцессорность (многоядерность) как мода, тенденция и элемент окружающей действительности продержится еще несколько лет, альтернативы микроядерным ОС не будет. Увеличение числа процессоров на одном кристалле – это ведь с какого-то момента еще и неизбежное упрощение каждого из процессоров (потому что площадь кристалла – это деньги, а деньги в посткризисном мире – это критерий). Много простых процессоров – это и невозможность реализовать ряд мощных механизмов ОС, и источник колоссального снижения надежности при одновременном увеличении количества исполняемого в привилегированном режиме кода. Так что микроядерные ОС неизбежны. Если, конечно, неизбежны многоядерные архитектуры. Во-вторых, отказ от разделяемой памяти и переход к полноценному механизму передачи сообщений. Он, безусловно, является следствием из во-первых. В-третьих, рост интереса к гибридам язык-ОС, обусловленный спецификой параллельных вычислителей. В-четвертых, идеи объектно-ориентированного программирования, перенесенные на архитектурный уровень (это уже не новое явление, просто для него вечно придумывали всякие «новые» названия). Объекты, инкапсуляция и передача сообщений перестают быть синтаксическими терминами и становятся основными абстракциями и механизмами ОС.

Перефразируя некогда смешного юмориста – или наши компьютеры опять станут однопроцессорными, или эти гадания станут предсказаниями. Время покажет.

+33
голоса

Напечатать Отправить другу

Читайте также

Первая матрица.

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

Технология Британской разведки, построенная в условиях строжайшей секретности, позволила достичь большего успеха в части электронных средст разведки, и была эффективно использована для многих применений. Эффективность этой технологии трудно переоценить. По сути эта система состояла из несколиких цифровых электронных компьютеров объедененных в вычислительную сеть, обрабатывавших оперативную информацию в реальном времени. использовалась такая система как система принятия решений в реальном времени. Система опиралась на незабвенной конструкции Чарлза Баббиджа (Чарльза Бэббиджа) http://ru.wikipedia.org/wiki/%D0%91%D1%8D%D0%B1%D0%B1%D0%B8%D0%B4%D0%B6#... http://en.wikipedia.org/wiki/Analytical_Engine , и реализована как электронная, а не механическая система, в частности с использованием двустабильных мультивибраторов http://en.wikipedia.org/wiki/Flip-flop_(electronics). В программирование система опералось на работах Ады Ловелас Байрон http://ru.wikipedia.org/wiki/%D0%9B%D0%B0%D0%B2%D0%BB%D1%8D%D0%B9%D1%81,... http://en.wikipedia.org/wiki/Ada_Byron.

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

Такая система была, как и было написано, сроздалась в условиях строжайшей секретности, и это первая публикация о системе. Система была самой продвинутой для своего времени. Машина Z-1 которой располагали Немцы в годы второй мировой войны по сравнению с первой Матрицей обладала рядом недостатков, так как и Дефференциальный Вычеслитель Рокфеллера не выделялся с лучшей стороны.

Собственно все три системы различным образом состязавшиеся между собой, были разными машинами, выполнявшие разные функции.

Так упрощенный по сути но более масштабный, по сравнению с более старой конструкцией из США, дифференциальный вычислитель Рокфеллера был в состоянии находить аналитические решения для дифференциальных уравнений, которые потом приходилось расчитывать без компьютера (других компьютеров в США небыло). Машина использовалась для аналитических и логистических расчетов, для войны против Фашистских стран. Но выполнять она могла только одну функцию, да и та была ограниченна и размеров уравнений и скоростью их выполнения. Эта функция позволяла достичь некоторого улучшения в планировании. Сама машина была громоздка, подтебляла много электроэнергии, и мела очень большое количество электромоторов, которые скорее приближали ее к механической нежели к электронной.

Машина Конрада Цюзе Z-1 обладала куда более выдающимися характеристиками по сравнению и с Американской машиной (из США), и даже матрицей. Она программировалась на языке программирования, который до сих пор в состоянии составить конкуренцию языку C (одной буквой навзывается) и C++ и многим другим. Также машина была в состоянии работать с натуральными числами в цифровой форме, и производить с ними довольно сложные вычисления, чего немогла делать матрица. К недостаткам стоит отнести то, что машина имела электромоторы для подачи команд (инструкций) процессора. И такая машина как и дифференциальный вычислитель рокфеллера, практически невсостоянии была работать в реальном времени.

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

Случайно кто-то рассказал с США что такая машина якобы существует. (У Дава Милибанда есть шансы представится с теми кто Америкосам налягавил). Американцы попытались ее воссоздать, и по фрагментированной информации, был создан полу компьютер ANIAC. Который больше походил на доменный воздухонагреватель, нежели на эффективную вычислительную машину. Зато программрировали его только женщины, считалось что именно женщины в состоянии подчинить себя такой работе. Дейстивтельно электронный маниак, своими физическими недостаткми, был в состоянии истязать тех кто с ним работал, так что только женщины из США могли это вытерпеть. Собственно проблема состояла втом что машину было очень трудно программировать.

Потом когда появились машины фон-Неймановского типа, казалось что фон Нейман считал реваншистами, всех студентов которые пытались программировать компьютеры на языках программирования. (Прямо как доктор Блюмберг, после жалобы мадам Проди, из известного произведения.)

После долговременной эксплуатации система оказалась не эффективной, ее заменяли на другие. И о конструкции матрицы вспомили уже позже, в системе противоракетной обороны, которую случайно изобрели в СССР и США. И в новой матрице которую построили на базе транспютеров фирмы ИнМос. С матрицей ход Холодной войны пошел в сторону ее завершения. Сейчас уже эксплуатируется более продвинутая матрица, которой мы буквально по многим параметрам регулируем экономику США, как хотим. Им почему-то не нравитца. В пору бы вспомнить что так сказать- потомки Дифференциального Вычислителя Рокфеллера, обладают такими же недостатками как и их прородитель.

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

Использованы воспоминания ветранов MI-1, MI-1a (после реформы службам дали новые названия).

--Миша друг Dd

--Hirony Destansion

Вот есть вопрос по к специалистам по P.R., посмотрите вниметельно на
фотограцию http://en.wikipedia.org/wiki/File:Colossus.jpg. Опишите что там изображено. Посмотрите какой год.

Нет это не 80-е, и не 70-е, и не 60-е это даже не 50-е это 40-е годы
прошлого столетия, годы второй мировой войны. Образ довольно жесткий,
но требовалась сильная консолидация и психологическая война, для этого использовали вот такой жесткий P.R. В секретном документе он как видете, в довольно чистой форме.

Вот с так в Великобритании использовали компьютеры во время Второй
Мировой Войны.

....

Как видете компьютер сделан в хорошо развитом и отработаном до 1943
года стиле компьютеростроения, и представляет собой специализированную машину для раскрытия шифров. В виду обработки больших объемов данных, специально сконструированную машину с большими объемами некоторых узлов, назвали Коллосом Марком.

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

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

Если бы не некоторые тайны истории связаные с проблемами установления
плана Маршала, то сам факт сущиствования таких машин удалось бы
скрыть. Пока что рассекретили только ту машину что на фотографии. Но
еще есть любопытный факт, на фотографии применены современные метода,
обеспечения секретности при работе с секретной информацией. (Это я по
работе знаю, специалисты могут заметить.)

Прикольно то что Американцы скопирывали эту специализированную машину. Потом "натыкали" в нее "планок", и долго немогли понять как ею пользоваться. Уже эту специализированную машину было трудно
программировать, тогда как американскую подделку - вообще было
невозможно. (Но Американцам явно понравилась идея секс-миссии.)

Американская подделка, получилась трудной в управлении, потому что они ее не там ее доработали, где надо было. А программировалась
первоначальная машина довольно легко, в таком себе матиматическом
коде, предложенном Адой Ловелас Байрон. Только в отличии от машины
Чарльза Баббиджа, электронная машины обладала куда лучшими
характеристиками.

....

Но больше всего электроника повлияла на развитие радио, поэтому долго
говорили о радиоэлектронике как о чем-то неразделимом. Потом успехи в
области электроники, создали нечто новое, которое занимало ранее
незанятые места. Так, в частности, появилась автоматика. Электронная
автоматика, позволила создавать совершенно немыслимые до того вещи. Но наверное самым интересным шагом в области автоматики, было создание электронного программируемого вычислительного устройства. (Я точно незнаю кто его сделал, но скорее всего его создали где-то в в 20-х 30-х годах в секретных мастерских Британской разведки). То
программируемое устройство сильно отличалось от того что мы понимаем
под компьютером на сегодняшний день. Но нельзя однозначно сказать что
отличалось в худшую сторону. По некоторым абстрагированным
характеристикам его можно считать более user-friendly чем многие
современные машины. Чтобы им управлять надо было быть математиком и
применить подход Ады Байрон, предложенныей еще в 19-м веке. Тогда для
некоторых своременных машиных чтобы разобраться иногда надо быть
"стукнутым на всю голову". Собственно программирование заключалось в
переключении, положений переключателей для автоматического скажем так
вычисления некоторых коэффициентов. При использовании "ленты", без
которой господин Тюринг непредставлял как это вообще может работать,
выглядело так что электронная машина напоминала ядро программируемое
микрокодом, тогда как через ленту подавались комманды и данные, более
выского уровня абстракции. Собственно языка ассемблера нетребовалось,
да и он мог оказаться неинформативным при переключении электронного
процессора. А если вместо ленты по аналогии с Тюрингом, задолго до его работ, установить, еще несколько таких машин, то получается матрица. Способная делать чудеса, скорости реакции на события.

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

Похоже именно из наблюдений за использованием матрицы, на Британские
корабли начали устанавливать механические генераторы случайных чисел.

А Колос Марк (Colossus Mark), будучи машиной специализированной, уже
имел что-то наподобе стандартной клавиатуры, стандартного системного
блока, стандартного монитора и так сказать механического
долговременного накопителя. Но вместе с этим, довольно нестандартный
процессор.

--Hirony Destansion

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT