Показать полную графическую версию : [решено] Работа драйверов 32bit в системе MS Windows 64bit
Dinisius
28-12-2012, 13:47
Добрый день, уважаемые форумчане.
У меня к Вам следующий вопрос, как известно 32-х разрядные приложения запускаются и работаю в 64-х разрядной версии WIndows.
А как известно драйвера 32-х битные не хотят устанавливаться в 64-х разрядные системы. Как Вы, уважаемые форумчане, можете пояснить такую ситуацию?
Ведь драйвер - это тоже приложение?
Заранее спасибо за ответы.
С уважением Dinisius.
LehaMechanic
28-12-2012, 16:32
Ведь драйвер - это тоже приложение? »
Нет. Драйвер - это модуль в составе процесса System. Работает на уровне ядра между ОС и железом. Приложения работают между ОС и юзером.
Как Вы, уважаемые форумчане, можете пояснить такую ситуацию?
Особенности работы с памятью
Преодолевая ограничения Windows: физическая память (http://blogs.technet.com/b/mark_russinovich/archive/2008/07/21/3151288.aspx)
Все 32-разрядные клиентские версии ОС Windows, в том числе Windows Vista, Windows XP и Windows 2000 Professional, поддерживают физическую память в объеме до 4 ГБ. 4 ГБ – это максимальный физический адрес, доступный в стандартном режиме управления памятью x86...
В пакете обновления 2 (SP2) для ОС Windows XP была реализована поддержка расширений физических адресов (PAE) по умолчанию для устройств, поддерживающих технологию No Execute, что, во-первых, необходимо для предотвращения исполнения данных (DEP), а во-вторых, обеспечивает возможность поддержки памяти в объеме более 4 ГБ.
В ходе тестирования выяснилось, что многие системы аварийно завершают работу, зависают и отказываются загружаться. Происходит это из-за того, что некоторые драйверы устройств, в особенности аудио- и видеоустройств, которые, в основном, встречаются в клиентских системах, а не в серверах, запрограммированы на работу с физическими адресами в пределах 4 ГБ. Эти драйверы, оказываются, обрубают адреса свыше 4 ГБ, что приводит к повреждению содержимого памяти со всеми вытекающими последствиями.
По-этому, видимо, и нужны специальные x64 драйвера, а не x32
Dinisius, Microsoft отвечает четко (http://windows.microsoft.com/ru-RU/Windows7/32-bit-and-64-bit-Windows-frequently-asked-questions):
Нужны ли 64-разрядные драйверы для устройств при работе в 64-разрядной версии Windows?
Да. Для работы в 64-разрядной версии Windows всем устройствам нужны 64-разрядные драйверы. Драйверы, разработанные для 32-разрядных версий Windows, не работают на компьютерах под управлением 64-разрядной версии Windows.
Dinisius
28-12-2012, 17:58
Все 32-разрядные клиентские версии ОС Windows, в том числе Windows Vista, Windows XP и Windows 2000 Professional, поддерживают физическую память в объеме до 4 ГБ. 4 ГБ – это максимальный физический адрес, доступный в стандартном режиме управления памятью x86...
В пакете обновления 2 (SP2) для ОС Windows XP была реализована поддержка расширений физических адресов (PAE) по умолчанию для устройств, поддерживающих технологию No Execute, что, во-первых, необходимо для предотвращения исполнения данных (DEP), а во-вторых, обеспечивает возможность поддержки памяти в объеме более 4 ГБ.
В ходе тестирования выяснилось, что многие системы аварийно завершают работу, зависают и отказываются загружаться. Происходит это из-за того, что некоторые драйверы устройств, в особенности аудио- и видеоустройств, которые, в основном, встречаются в клиентских системах, а не в серверах, запрограммированы на работу с физическими адресами в пределах 4 ГБ. Эти драйверы, оказываются, обрубают адреса свыше 4 ГБ, что приводит к повреждению содержимого памяти со всеми вытекающими последствиями. »
Спасибо.
Встречный вопрос, каким образом драйвер может "полезть" не в своё адресное пространство?
Dinisius, То есть слова Драйвер - это модуль в составе процесса System. Работает на уровне ядра между ОС и железом. » вы пропустили мимо ушей?
Dinisius
28-12-2012, 21:19
Драйвер - это модуль в составе процесса System. Работает на уровне ядра между ОС и железом. » »
Нет,Ment69, не пропустил мимо ушей.
Давайте разбиратся.
Процессу "System" Windows выделил некое адресное пространство в оперативной памяти где этот процесс хранит данные.
Так вот, мне не понятно, как драйвер аудио\видео, который работает в адресном пространстве процесса System может влиять и очищать адресное пространство не своих процессов?
Вы ведь читали статью, ссылку на которую выложил Leha Ares, ?
Возможно, статью не совсем точно перевели с английского.
LehaMechanic
28-12-2012, 21:51
Давайте разбиратся. »
- Разберемся!
- Давай, разбирайся... (с) к/ф Место встречи изменить нельзя.
Еще раз про Windows и четыре гигабайта (http://www.ixbt.com/soft/windows-4gb-2.shtml)
В Windows используется так называемая плоская модель памяти. Тридцать два разряда адреса обеспечивают обращение к пространству размером четыре гигабайта. Таким образом, каждой ячейке ОЗУ или ячейке памяти другого устройства соответствует определенный адрес, и никаких двусмысленностей тут быть не может. Включенный режим PAE дает возможность использовать 36 разрядов адреса и увеличить количество ячеек памяти в 16 раз. Но ведь система команд процессора остается той же самой и может адресовать только 4 миллиарда (двоичных) байтов! И вот, чтобы обеспечить возможность доступа к любому из 64 миллиардов байтов, указав только 32 разряда адреса, в процессоре включается дополнительный этап трансляции адресов (те, кого интересуют подробности, могут обратиться к специальной литературе — например, книге Руссиновича и Соломона «Внутреннее устройство Windows»). В результате 32-разрядный адрес в программе может указывать на любой из байтов в 36-разрядном пространстве.
Прикладных программ эта особенность никак не касается, они работают в своих собственных виртуальных адресах. А вот драйверам, которые должны обращаться к реальным адресам конкретных устройств, приходится решать дополнительные задачи. Ведь сформированный этим драйвером 32-разрядный адрес может после дополнительного этапа трансляции оказаться совсем другим, и выданная драйвером команда может, например, вместо вывода значка на экран изменить значение в одной из ячеек таблицы Excel. А если окажутся запорченными какие-либо системные данные, то тут и до аварийного завершения работы с выводом синего экрана рукой подать. Поэтому для успешной работы в режиме PAE драйверы должны быть написаны с учетом особенностей этого режима.
Однако поскольку исторически сложилось так, что до того времени в клиентских компьютерах PAE не использовался, некоторые компании не считали нужным поддерживать этот режим в написанных ими драйверах.
Dinisius
29-12-2012, 22:29
Вот теперь всё понятно.
Спасибо всем учасникам дискусии, а особенноLeha Ares, за очень полезную ссылку.
Всех поздравляю с наступающим Новым Годом.
Тему можно закрыть.
Ещё раз спасибо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC