Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
GBP
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
Введение в 64 бита для начинающих, или …

Введение в 64 бита для начинающих, или где же 64-битный мир?

15 Янв 2009

Довольно давно появились 64-битные процессоры, операционные системы, отдельные программы. Однако полностью на 64 бита перешли еще далеко не все пользователи. В статье рассматриваются причины этого.

Инструменты Viva64 и VivaMP более не развиваются как отдельные программы. Все возможности поиска специфических ошибок, связанных с разработкой 64-битных приложений, а также переносом кода с 32-битной на 64-битную платформу теперь доступны в рамках анализатора PVS-Studio.

История 64-битного мира

В 2003-2004 годах в мире персональных компьютеров началась очередная революция. Она захватила все без исключения компьютеры, операционные системы, прикладные программы. Стремительно начавшись, она должна была поднять вычислительную технику на очередной уровень уже к 2005-2006 годам. Однако на момент написания этих строк (заканчивается 2008 год) революция так и не достигла своего пика. Речь идет о переходе на 64-битные технологии. Давайте посмотрим, с чего начался этот переход, как продолжался и каково состояние дел сейчас.

Вообще 64-битные технологии в мире не являлись новинкой даже в 2003 году. На платформах альтернативных современным персональным компьютерам 64-битные решения существуют достаточно давно. Однако только в 2003 появились первые 64-битные процессоры для персональных компьютеров. Эти процессоры представляли собой реализацию технологий AMD64 компании AMD и EM64T компании Intel. Причина появления новых 64-битных процессоров банальна. У старых 32-битных процессоров существует принципиальное ограничение - они могут работать только с четырьмя гигабайтами оперативной памяти, при этом каждому отдельному пользовательскому приложению доступно не более двух гигабайт. Пока подобные ограничения мешали лишь в профессиональной среде (дизайнерам, инженерам и т.п.), то вопрос решался просто. Специалисты обычно использовали нестандартную вычислительную технику, и это снимало проблемы. Однако когда обыкновенные игры для персональных компьютеров подобрались к пределу в два гигабайта оперативной памяти, уже и "домашним" пользователям понадобились новые процессоры.

Естественно, рынок прекрасно подготовился к новым потребностям пользователей. В 2003 году только появились первые образцы 64-битных процессоров, а в 2005 году уже нельзя было купить в магазине не 64-битный процессор. Казалось бы, проблема решена? К сожалению, для того чтобы преимущества 64-битных систем стали доступны пользователям, надо иметь в компьютере четыре гигабайта оперативной памяти (или более). А на 2005 год наиболее распространенной конфигурацией были машины с одним, максимум двумя гигабайтами.

К концу 2006 года оперативная память в обыкновенных персональных компьютерах уже стала приближаться к трем-четырем гигабайтам. Казалось бы, уж теперь самое время оценить преимущества 64-битных компьютеров. Но для того, чтобы это сделать, нужно иметь еще и 64-битную операционную систему. К счастью, Microsoft выпустила 64-битные версии Windows XP и Windows Server 2003 задолго до этого. Но на компьютерах пользователей эти операционные системы не спешили появляться. И эта ситуация сохраняется в настоящем времени. Практически на всех пользовательских компьютерах установлены 32-битные операционные системы семейства Windows XP и Windows Vista. Это объясняется отсутствием (как тогда, так и сейчас) 64-битных драйверов и что более важно недостаточным количеством 64-битных программ. Ведь хотя 32-битные программы и работают на 64-битных операционных системах почти без проблем, но больший объем оперативной памяти могут использовать только 64-битные программы.

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

Для того чтобы выпустить 64-битную версию программы ее нужно перекомпилировать специальным компилятором, который сгенерирует 64-битный код. Какие-то компании (как например Microsoft, Intel) выпустили 64-битные компиляторы довольно оперативно. Это значит, что уже в 2005 году эти компиляторы были доступны разработчикам. Другие же (как например Borland) до сих пор не выпустили 64-битных версий своих средств разработки. Это приводит к тому, что программы, разработанные в среде Borland C++, никак не могут быть скомпилированы для работы в 64-битном окружении.

Но поскольку многие программы разрабатываются с использованием средств от Microsoft и Intel, то, казалось бы, 64-битных программ должно быть все-таки довольно много? Увы, опыт многих компаний, занимающихся разработкой программного обеспечения, показал, что недостаточно просто перекомпилировать программу новым 64-битным компилятором.

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

Будучи перекомпилированной под 64 бита обычная пользовательская программа делала вид, что прекрасно работает. До тех пор, пока пользователь не нажал клавишу F1. Вместо ожидаемого открытия справочной системы на экране появилось окошко с короткой фразой про невозможность загрузить справку. Казалось бы, какое отношение имеет справочная система к разрядности процессора? Но дело оказалось действительно в некорректной работе программы на новой системе. Поведение функций, отвечающих за справочную систему, изменилось и справка просто "сломалась".

Другой пример. Приложение для визуализации данных, в котором используемый объем оперативной памяти приближался к двум гигабайтам, было естественным кандидатом на 64-битную версию. Новая 64-битная версия работала прекрасно, пользователи не видели никаких проблем. До тех пор, пока кто-то не захотел построить изображение по данным, превышающим несколько гигабайт. Картинка была построена, но на экране показалось... только половина изображения. Почему? Некорректная работа в программе с большими объемами данных.

Незнакомый с индустрией разработки программных систем человек может задаться вопросом: "Почему подобные ошибки в программах не выявляются на этапе тестирования?" Ответ на этот вопрос не совсем очевиден. Дело в том, что существующие системы внутренних и внешних тестов программного обеспечения не позволяют выявить ошибки, характерные именно для 64-битных систем. Ведь по своей сути часто тесты должны выполняться очень быстро, поэтому, скажем, тестировать обработку нескольких гигабайт данных в таких тестах не будут. Инструменты для разработчиков долгое время также оставались в стороне от проблемы 64-битного программного обеспечения. Специализированные инструменты начали появляться относительно недавно, в 2007 году. В разработке одного из таких инструментов и принимает участие автор данной статьи.

О каких инструментах идет речь? Есть специальный класс программ, называемый статические анализаторы кода. Этот анализатор кода "разбирает" исходный код программы и выдает программисту список потенциальных проблем в коде. После чего программист их исправляет, и программа уже получается готовой к выходу в 64-битный мир.

Выводы

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

Об авторе

Евгений Рыжков работает в компании ООО "СиПроВер" (www.viva64.com), где занимается разработкой программных продуктов Viva64 и VivaMP. Это инструменты для программистов, предназначенные для тестирования 64-битных и параллельных программ, путем анализа их исходного кода. Является автором публикаций по проблеме тестирования и создания сложных программных комплексов.

Популярные статьи по теме
Эффект последней строки

Дата: 31 Май 2014

Автор: Андрей Карпов

Я изучил множество ошибок, возникающих в результате копирования кода. И утверждаю, что чаще всего ошибки допускают в последнем фрагменте однотипного кода. Ранее я не встречал в книгах описания этого …
Зло живёт в функциях сравнения

Дата: 19 Май 2017

Автор: Андрей Карпов

Возможно, читатели помнят мою статью под названием "Эффект последней строки". В ней идёт речь о замеченной мной закономерности: ошибка чаще всего допускается в последней строке однотипных блоков текс…
Как PVS-Studio оказался внимательнее, чем три с половиной программиста

Дата: 22 Окт 2018

Автор: Андрей Карпов

PVS-Studio, как и другие статические анализаторы кода, часто выдаёт ложные срабатывания. Но не стоит спешить считать странные срабатывания ложными. Это короткая история о том, как PVS-Studio вновь ок…
PVS-Studio для Java

Дата: 17 Янв 2019

Автор: Андрей Карпов

В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальн…
PVS-Studio ROI

Дата: 30 Янв 2019

Автор: Андрей Карпов

Время от времени нам задают вопрос, какую пользу в денежном эквиваленте получит компания от использования анализатора PVS-Studio. Мы решили оформить ответ в виде статьи и привести таблицы, которые по…
Статический анализ как часть процесса разработки Unreal Engine

Дата: 27 Июн 2017

Автор: Андрей Карпов

Проект Unreal Engine развивается - добавляется новый код и изменятся уже написанный. Неизбежное следствие развития проекта - появление в коде новых ошибок, которые желательно выявлять как можно раньш…
Технологии, используемые в анализаторе кода PVS-Studio для поиска ошибок и потенциальных уязвимостей

Дата: 21 Ноя 2018

Автор: Андрей Карпов

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

Дата: 16 Окт 2017

Автор: Андрей Карпов

Я в шоке от возможностей статического анализа кода, хотя сам участвую в разработке инструмента PVS-Studio. На днях я был искренне удивлён тому, что анализатор оказался умнее и внимательнее меня.
Как и почему статические анализаторы борются с ложными срабатываниями

Дата: 20 Мар 2017

Автор: Андрей Карпов

В своей предыдущей статье я писал, что мне не нравится подход, при котором статические анализаторы кода оцениваются с помощью синтетических тестов. В статье приводился пример, воспринимаемый анализат…
Бесплатный PVS-Studio для тех, кто развивает открытые проекты

Дата: 22 Дек 2018

Автор: Андрей Карпов

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub, GitLab или Bitbucket. Им предоставляется возмо…

Комментарии (0)

Следующие комментарии

На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять