Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по МПиМК / Лекция 10.doc
Скачиваний:
273
Добавлен:
15.06.2014
Размер:
272.9 Кб
Скачать

4.4. Совместимость

Главный фактор, объясняющий удивительный успех архитектуры x86 - все поколения аппаратных средств сохраняли обратную совместимость с предыдущими. Это позволяло не спешить с "апгрейдом" и переходить к новым программам постепенно. Когда-то 386-й (1985) стал первым 32-битным x86-процессором. Но полной поддержки со стороны операционных систем не было в течение восьми лет, пока в 1993 не вышла Windows NT 3.1. По настоящему же массовой 32-битная архитектура стала после выхода Windows 95, т. е. спустя десять (!) лет. Поэтому поддержка 16-битного режима была очень важна для 386-го, иначе бы он не прижился на рынке. Кстати, главным козырем Windows 95 на тот момент была именно аппаратная поддержка программ MS-DOS и 16-битных Windows-программ, позволяя им работать на полной скорости вместе с 32-битными программами. AMD64 исповедует тот же принцип перехода к новым системам и приложениям.

AMD64 поддерживает работу как старых, 32-битных, так и новых, 64-битных, приложений, сосуществующих под 64-битной операционной системой. Причем, 32-битные приложения работают на полной скорости исполняясь аппаратными средствами, без эмуляции (в отличии от IA-64 архитектуры). Кроме того, процессор полностью совместим со старыми системами. Можно купить 64-битный компьютер и поставить на него 32-битную Windows 98/XP или даже Windows 3.1, используя его как быстрый Pentium, сохранив все старые приложениях и операционные системы. Позднее можно мигрировать на новую ОС с поддержкой 64-битных приложений и воспользоваться всеми преимуществами архитектуры.

Для реализации совместимости старых приложений с новыми AMD64 предлагает 2 режима: Long Mode ("длинный" режим) и Legacy Mode (унаследованный режим). В свою очередь, Long Mode состоит из 2 подрежимов: 64-bit Mode и Compatibility Mode. В 64-bit Mode раскрывается весь потенциал архитектуры: доступны новые регистры и 64-битное адресное пространство. Но приложение и сопутствующие dll-ки должны быть откомпилированы заново. Режим Compatibility Mode существуют для запуска старых 32-битных приложений из под новой 64-битной операционной системы. Для этих приложений все выглядит так, как если бы они работали на обычном x86-процессоре. Ну и Legacy Mode это не что иное, как старые-добрые режимы работы x86 (Protected Mode, Virtual 8086 Mode, Real Mode). Именно в Legacy Mode работают 32-битные Windows 9X/ME/NT/2K/XP.

Рисунок 4.4

Большинство 64-битных операционных систем будут поддерживать Compatibility Mode. Но вызов системной функции, сделанный в 64-битной среде 32-битным приложением, нуждается в преобразовании некоторых аргументов, в основном, указателей адреса. "Прослойка", выполняющая на лету подобные преобразования, является важной частью системы. Windows реализует ее через подсистему "Windows on Windows". Специальная библиотека, wow.dll, динамически подключается ко всем 32-битным приложениям и выполняет следующие функции:

  • Приводит аргументы к 64-битному виду

  • Передает управление (вызов) 64-битному ядру

  • Приводит результаты вызова обратно к 32-битному виду

  • Возвращает их приложению

Рисунок 4.5

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

Способность выполнять одновременно 32-битные и 64-битные приложения особенно ценна для программистов. При разработке 64-битных приложений, они могут пользоваться 32-битным инструментарием на той же машине, на которой отлаживают 64-битный код. Можно оставить любимые 32-битные редакторы/утилиты, которые, возможно, никогда не будут перенесены на новую ОС. 32-разрядная совместимость позволит разрабатывать и проверять код на той же машине, без перезагрузки.

Соседние файлы в папке Конспект по МПиМК