- Насколько сложный программный код у Windows?
- Кен Грегг (Ken Gregg), разработчик в составе группы Windows NT
- Насколько сложна Windows в программном коде?
- Кен Грегг (Ken Gregg)
- Как менялся программный код Windows?
- Как база кода Windows NT развивалась с 1993 года
- Кен Грегг (Ken Gregg)
- Несколько слов про ядро Windows NT
- Открытые коды Windows: сила закона
Насколько сложный программный код у Windows?
Чтобы разобраться вопросе, насколько может быть сложным программный код «Виндовс» мы обратились к одному из разработчиков команды Windows NT в компании Microsoft — Кену Греггу (Ken Gregg).
Кен Грегг (Ken Gregg), разработчик в составе группы Windows NT
«Могу сказать вам, что у меня был доступ к исходному коду, когда я был в команде Windows NT (NT является основой для всех настольных версий Windows начиная с XP), во время проектов разработки NT 3.1 и NT 3.5. Всё было в рамках стандартов кодирования NT Workbook — эдакой «библии» для всей проектной команды.
. Хотя я и не читал каждую строку кода, но то, с чем мне пришлось работать, было очень:
Нужно исходить из того, что именно понимается под сложностью кода. Это понимание сугубо субъективное, ведь так? Благо существует множество различных метрик, используемых и комбинируемых для измерения сложности программного обеспечения в тех или иных ситуациях (та же самая модульность, многоуровневость и обслуживаемость).
Насколько сложна Windows в программном коде?
Конечно, чтобы прочитать и понять код, вам нужно было бы иметь представление об общей архитектуре Windows NT.
Вероятно, лучшим источником информации о внутренностях Windows сегодня являются книги Windows Internals 6th Edition (в двух томах).
Некоторые люди просто приравнивают сложность кода к размеру. У этого сравнения тоже есть метрика — строки кода (LOC).
Измерение LOC зависит от используемых инструментов и критериев. Их выбирают для точного определения строк кода на каждом языке программирования.
Кен Грегг (Ken Gregg)
«Существует много споров о методах, используемых для подсчета строк кода (LOC). Если использовать одни и те же критерии от одного выпуска к следующему, то получится относительное изменение размера базы кода.
Сравнивать эти числа с цифрами другой ОС, которая использовала другой метод подсчета строк кода, всё равно что сравнивать яблоки с апельсинами. То есть это некорректный подход».
Как менялся программный код Windows?
Здесь приводятся некоторые лакомые кусочки, дающие представление о размерах современной кодовой базы Windows. Строки кода здесь являются приблизительными и неофициальными, но основаны на достаточно надёжных источниках, о которых говорит Кен Грегг .
Как база кода Windows NT развивалась с 1993 года
MLOC — это количество миллионов строк исходного кода. По ним можно определить относительную сложность операционной системы, если опираться на размеры кода (LOC-методика).
- Windows NT 3.1 (1993) — 5,6 MLOC
- Windows NT 3.5 (1994) — 8,4 MLOC
- Windows NT 3.51 (1995) — 10,2 MLOC
- Windows NT 4.0 (1996) — 16 MLOC
- Windows 2000 (2000) — 29 MLOC
- Windows XP (2001) — 35 MLOC
- Windows Vista (2007) — 45 MLOC
- Windows 7 (2009) — 42 MLOC
- Windows 8 (2012) — 50 MLOC
- Windows 10 (2015) — 55 MLOC
Исходный код Windows состоит в основном из C и C++, а также небольшого количества кода на ассемблере.
Некоторые из утилит пользовательского режима и другие подобные службы пишутся на Си Шарп, но это относительно небольшой процент от общей базы кода.
Кен Грегг (Ken Gregg)
«Я намеренно не включил в список 16-битные версии ОС, выпущенные с 1985 по 2000 годы. Windows NT была основой для всех современных 32-бит и 64-бит версий Windows. Количество строк кода в серверных версиях было таким же, как и в несерверных версиях, выпущенных в том же году (то есть они имели одинаковую базу исходного кода)».
Несколько слов про ядро Windows NT
По словам Кена, работа над ядром NT началась в 1988 году. Ядро было создано с нуля в качестве 32-разрядной упреждающей многозадачной ОС.
Ядро NT впервые загрузилось в июле 1989 года на процессоре Intel i860 RISC. С самого начала был сильный толчок к тому, чтобы новая ОС была совместимой с различными архитектурами центральных процессоров и не была привязана только к архитектуре Intel x86 (IA-32).
NT в конечном итоге работал на MIPS, DEC Alpha, PowerPC, Itanium и, конечно, Intel x86 и x64.
Некоторая сложность была добавлена в базу кода на уровне абстрагирования оборудования (HAL). Это было нужно для поддержки неинтеловских архитектур.
А как вы оцениваете перспективы Windows в плане кода? Узнайте, какие версии Windows актуальны сейчас и какие ОС можно рассмотреть в качестве альтернативы.
Есть проблемы при использовании Windows и непонятен программный код для внедрения новых бизнес-инструментов в ОС от Microsoft? Проконсультируйтесь с экспертами по ИТ-аутсорсингу и получите поддержку по любым техническим вопросам и задачам.
Открытые коды Windows: сила закона
The monster must die
Я не отношу себя к специалистам IT-сферы, ортодоксальным пользователям
интернета или сумасшедшим геймерам, однако у меня есть компьютер, я работаю с
определённым программным обеспечением и слежу за компьютерно-информационной
ситуацией в мире. В первую очередь из-за того, что мы живём в post/информационном,
глобализированном мире, где компьютеры управляют атомными станциями, военными
объектами стратегического назначения, и, да простят меня закоренелые
славянофилы, мышлением большинства населения. Влияние на высокотехнологичную
сферу post/общества определяет влияние на человечество в целом. Особенно, если
это влияние оказывает монополист.
Монополия на операционные системы, а если выражаться без техномонокультурных
вульгарностей, монополия на удачные имитации искусственного интеллекта, приводит
к определённой политической нестабильности. Научные фантасты, прореки нашего
времени, неоднократно предсказывали будущее, в котором крупные корпорации
наделялись политическими полномочиями. Что ж, когда некоторая система
взаимодействует с большинством разумных пользователей, и при этом принадлежит
(подчиняется) узкому кругу лиц, мы можем прогнозировать различные варианты
развития событий. У нас даже имеется возможность опираться на реальный прототип,
если брать за основу корпорацию Microsoft. Небезызвестное детище Пола Алена и
Билла Гейтса отбивается от обвинений в монополизме с далёкого 1990-го года.
Тогда Федеральная комиссия по торговле США (Federal Trade Commission) устроила
проверку на предмет возможного сговора между Microsoft и IBM. Расследование
заглохло, однако в 1993 году маркетинговой политикой Microsoft, связанной с
распространением DOS, заинтересовалось Министерство юстиции США. В 1994 году
между Microsoft и Министерством юстиции заключается полюбовное соглашение, по
условиям которого Microsoft запрещается использовать своё уже тогда доминирующее
положение на рынке для подавления конкурентов. На следующий год Министерство
блокирует планы по слиянию Microsoft и компании Intuit – опять-таки из
антимонопольных соображений. В августе 1997 году Microsoft устраивает донорское
вливание своему конкуренту – Apple Computers — на сумму $150 миллионов. Эти и
некоторые другие действия Microsoft вызывают у Министерства юстиции самые
нехорошие подозрения. Через два месяца Министерство юстиции подаёт иск против
Microsoft с требованием назначить корпорации ежедневный штраф на сумму 1 миллион
долларов за нарушение договорённости от 1994 года. И так далее и так по многу
раз, с переменным успехом Microsoft двигалась к своей нынешней лидирующей
позиции. Последнее антимонопольное разбирательство прошло уже за территорией
США, в Евросоюзе. Специально сформированная комиссия пригрозила штрафом до $3,2
млрд, если Компания не откроет для исследований программный код, а также не
исключит Media Player из комплекта операционной системы Windows. Однако, по
словам представителя Еврокомиссии Тилмана Людера, «Microsoft вряд ли придется
открывать программный код Windows. Компания должна будет лишь предоставить
«протоколы», которые позволят конкурентам создавать совместимые с Windows
программные продукты».
Microsoft же, несколько неоднозначно истолковав решение комиссии ЕС,
предложила открыть исходные коды Windows Server 2003 и предоставить документации
с описанием протоколов под определенными лицензиями, которые, естественно, надо
будет купить. Пока неясно, удовлетворят ли европейских чиновников новые
предложения Microsoft. Представители ЕС уже заявили, что внимательно изучат её
заявления. Однако не исключено, что конфликт ЕС с Microsoft этим не исчерпается,
поскольку американская корпорация и европейские структуры также спорят о цене
лицензий на использование кода Windows. К тому же, авторы иска к Microsoft
считают, что последняя не имеет права брать деньги за лицензии на сетевые
протоколы, поскольку это стандартное программное обеспечение, зашифрованное для
противодействия конкурентам. В самой корпорации, однако, утверждают, что речь
идет об уникальных разработках.
Горшочек с мёдом
Чего, собственно, добиваются все эти «антимонопольные» процессы, помимо,
конечно же, ограничения роста компании? Во-первых, принудить Microsoft выпустить
ограниченную версию Windows, из которой поставщики могли полностью выкинуть
любую прикладную программу, так или иначе «ущемляющую» интересы конкурентов –
всякие мультимедийные утилиты, вроде Windows Media Player или Internet Explorer.
Во-вторых, приказать Microsoft предоставить конкурентам всю необходимую
техническую информацию, с тем, чтобы их софт мог безглючно работать с Windows.
В-третьих, открыть исходники всей операционной системы для тщательного изучения.
Теперь следует более подробно остановиться на открытии исходного кода Windows.
Заглянуть в него очень хотелось бы и конкурентам, и разработчикам из open source
community, и, вполне вероятно, хакерам ;). Вот последних в Microsoft, видимо,
убоялись больше всего. Не однократно представители Microsoft заявляли, что
открытость – это как раз не преимущество, что утверждают сторонники Linux, а
страшная опасность: дескать, любой желающий может найти нужную ему дыру, и
использовать её во зло – вирус написать, или взлом устроить. Поэтому лучше
скрывать исходные коды, вместе со всеми их дырами. Напомню, что в сообществе
открытых программ принято инспектировать коды, выявлять ошибки, заявлять о них и
пытаться залатать. Кто во что горазд. Неоднократно высказывались мысли и о том,
что в исходниках Windows наличествуют такие огрехи, что открывать их означает и
впрямь поставить под теоретическую угрозу всех тех, кто пользуется продукцией
Microsoft. Скорее всего Microsoft Windows во всех своих версиях содержит
уязвимость, которую исправить невозможно (по мнению некоторых сторонних
исследователей в разных версиях подобные Абсолютные Ошибки разные). Лечить её
примерно то же самое, как заделывать дыру в середине фундамента, на котором уже
стоит многоэтажный дом. Безусловно Microsoft прекрасно осведомлены насчёт
наличия Абсолютной ошибки, но не считают её уязвимостью. Конечно, ведь исходные
коды пока ещё скрыты от глаз общественности.
Чуть-чуть сбавим обороты и отдадим Компании должное. Она уже несколько лет
предоставляет исходный кода органам власти многих стран, в том числе и
Российской Федерации. Факт обеспечения доступа к исходным кодам Windows очень
важен, поскольку это программное обеспечение служит платформой, на основе
которой построены государственные информационные системы многих стран, а так же
и оборонные системы (а вы думали там повсюду сверхоси на базе Linux? :)).
Соглашения подразумевают не только предоставляет доступ к исходному коду Windows
и другой важной технической информации, но и совместные работы, а также
консультации с целью адаптации операционной системы к требованиям, которые
предъявляются государством к информационным системам, используемым в органах
государственной власти. Предоставление корпорацией Microsoft исходных кодов и
подробной технической документации в рамках инициативы GSP (Government Security
Program) потрясающе гениальный ход по утверждению монополии Microsoft.
Действительно, открытие кодов — исключительно сильный аргумент в споре с активно
наступающими клонами Linux. Причем заявленный переход на Linux ряда
правительственных учреждений в Европе не подкреплен экономическими расчетами.
Конечно, Linux можно настроить точно под нужды конкретного пользователя,
ограничив функциональность системы, но потребность в таком подходе пока низка,
при том, что требует высокой квалификации специалистов, обслуживающих систему. В
случае с Windows открытие кодов успокоит тех, кто убежден, что в операционную
систему встраиваются какие-либо дополнительные шпионские функции, а также
укрепит положение Microsoft на рынке. Кроме того, теоретически появляется
возможность точно такой же тонкой настройки операционной системы под нужды
определенной группы пользователей.
Даже лояльные к Microsoft чиновники понимают, что закрытость исходных кодов и
технической информации делает программы корпорации потенциально опасными для
национальных интересов страны. Кто может гарантировать, что те дыры, которые все
время находят хакеры, не оставлены Microsoft специально, чтобы заглядывать в
компьютеры пользователей? Пусть это не так. Менеджмент Microsoft состоит из
кристально честных людей. Но кто поручится, что под давлением правительственных
структур Соединенных Штатов случайно допущенные ошибки не будут использованы без
ведома других государств на их территории? Не стоит забывать, что идет
масштабная антитеррористическая кампания, а Microsoft обвиняется многими
американскими штатами и правительственными организациями в монополизме и
нечестной конкуренции. В таком положении вряд ли Билл Гейтс будет
последовательно отстаивать права граждан других стран.
Исходные коды разрешено просматривать, но изменять их можно только вместе со
специалистами Microsoft. Кроме этого компания предоставляет техническую
информацию о платформе Windows для создания более защищенных вычислительных
систем. Да, сразу и не поймешь где же тут защита, когда все интимные защитные
операции делаются при участии и под присмотром сотрудников Microsoft? Но сила
Microsoft, конечно, не в кодах, а в знании психологии.
Несколько лет назад много шума наделал история с кражей и распространением
через интернет исходников 2000 и NT 4.0. Часть кода, появившаяся в интернете,
являлась, по мнению экспертов, первым сервис-паком для Windows 2000 и
датировалась 25 июля 2000 года. Предполагалось, что источником утечки стал файл
разгрузки оперативной памяти, сгенерированный одним из компьютеров компании
Mainsoft, работающим под Linux. В ходе расследования утечки исходных кодов
операционных систем Windows 2000 и Windows NT стало известно, что в свободном
доступе оказалось порядке 15 процентов оригинального текста программ. Речь идет
о 30915 файлах исходного кода Windows 2000, содержащих 13,5 миллиона строк
текста, и 95103 файлах и 28 миллионах строк кода Windows NT. Исходный код был
написан на языках программирования ассемблер, С и С++.
Публикация исходного кода привела в восторг интернет-сообщество, но
насторожила экспертов. «В том, что исходный код попадет в случайные руки, нет
ничего хорошего, — говорил старший менеджер центра экстренного реагирования
антивирусной компании Symantec Оливер Фридрихс.- Его смогут изучать
злоумышленники, и у секьюрити-экспертов не будет возможности находить уязвимости
заранее».
Однако Microsoft отрицало и отрицает возможность любых проблем безопасности.
В заявлении компании говорится, что ее больше всего беспокоит возможность кражи
результатов ее труда, а не угроза безопасности, создаваемая этой утечкой. «Если
небольшой фрагмент исходного кода Windows становится общедоступным, то это
проблема защиты прав интеллектуальной собственности, а не безопасности» — заявил
представитель Компании. Как видите, Компанию в первую очередь волнуют вопросы
финансовых потерь. Впрочем, не удивительно: многие эксперты уверены, что
опасения по поводу того, что утечка кодов приводит к массовому выявлению
уязвимостей, безосновательны. Теоретически для хорошего инженера-аналитика весь
код является открытым. К тому же, даже гениальному хакеру на изучение кода
потребуется столько времени, что к моменту, когда он будет готов использовать
уязвимость, выйдет обновленная версия программного продукта. Спорное
предположение, не так ли? Но если оно вас не успокаивает, ставьте альтернативные
программные продукты на основе открытых кодов и радуйтесь жизни.
Quality on conscience of the buyer
А как же обстоят дела с открытием кода Windows 2003, спросит внимательный
читатель. Ну его нах, отвечают представители IT-сферы. Microsoft никто и не
просил открывать коды этой системы. Это вообще нужно только самой Microsoft.
Клонировать код можно и без Microsoft, а вот получить внятную документацию –
нет. Microsoft стремится лицензировать собственное ПО, чтобы иметь ещё больше
возможностей контроля доступа. Ещё в 2004 году решение Еврокомиссии говорило о
том, что Компании следует в 120-дневный срок предоставить точную документацию
интерфейса. Раскрытая информация должна была обновляться каждый раз после
выпуска новых версий. Речь об исходных кодах вообще не шла. Представители
Microsoft с умным видом заявили, что «исходный код – это и есть окончательная
документация, ДНК системы». Действительно, не отмажешься. От таких определений в
пору сходить с ума юристам и устраивать бесконечные судебные процессы. На чём,
собственно, и строится Компания вот уже столько лет.
В 2004 году Microsoft по решению ЕС предоставила 12.000 страничный (ага, это
не опечатка – 12 тысяч страниц) трактат с описанием исходного кода. Тогда
разобраться в нём евроспециалисты не смогли. В нынешнем году майкрасофтовцы
сжалились и пообещали всего 500 часов техподдержки с попыткой объяснения, чего
же они там на 12.000 страниц написали. Складывается впечатление, что Microsoft
как может, в рамках доступного законодательства, тормозит процесс, известный по
аксиоме «всё тайное рано или поздно становится явным» и при этом ещё пытается
проводить выгодную для себя политику запатентованных продуктов. Программа по
«разоблачению» Windows у Microsoft предполагает предоставление только справочных
лицензий на исходный код. Поэтому Microsoft позволит просматривать код,
обнаруживать в нем ошибки, но не разрешит вносить изменения. Так что если вы
создаете собственные приложения для Windows, то можете отлаживать код этих
приложений и код Windows с соответствующими API. По идеи это означает, что при
анализе функций защиты никто не станет проводить полную проверку защиты Windows,
но компоненты, связанные с вашим приложением, проверить будет возможно. Если же
вы обнаружите ошибку в Windows, то обязаны будете сообщить о ней в офис
Microsoft. И даже если вы предложите способ устранения ошибки, Компания
оставляет за собой правой выбирать, включать или нет его в следующий сервис-пак.
Даже при оптимальном варианте исследования кода Компания предоставит около
95% Windows. Еще три процента кода Microsoft вроде как не принадлежит, а
некоторые места – такие, как код активации продукта – имеют слишком большую
ценность, чтобы их открывать. К тому же распространение некоторых
криптографических элементов ограничено правительством США и не может быть
экспортированы в другие страны.
Пора уже понять, что исходные коды Windows — это миф. По информации
Microsoft, ОС Windows содержит несколько десятков (если не сотен) миллионов
строк кода, который постоянно дорабатывается и модернизируется. Даже в самой
Компании не совсем точно понимают, что же они разработали. Разбираться в коде
очень и очень сложно. Шумиха, время от время поднимаемая вокруг исходников,
выгодна в первую очередь самой Microsoft. Не откроют коды – сохранят
коммерческую тайну и скроют многочисленные ошибки. Откроют – ещё лучше.
Обеспечат более жёсткий контроль по лицензиям, ударят по Linux и практически
ничего не потеряют. В 2006 году обещан выпуск новой операционной системы Windows
Vista, исходники которой никто открывать не собирается. Хочется спросить у
Microsoft – какие конкретно выгоды получит пользователь от решения Комиссии ЕС?
Что именно поимеем мы вообще от решений Компании по собственному исходному коду?