Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   [решено] Работа драйверов 32bit в системе MS Windows 64bit (http://forum.oszone.net/showthread.php?t=250167)

Dinisius 28-12-2012 13:47 2055073

Работа драйверов 32bit в системе MS Windows 64bit
 
Добрый день, уважаемые форумчане.
У меня к Вам следующий вопрос, как известно 32-х разрядные приложения запускаются и работаю в 64-х разрядной версии WIndows.
А как известно драйвера 32-х битные не хотят устанавливаться в 64-х разрядные системы. Как Вы, уважаемые форумчане, можете пояснить такую ситуацию?
Ведь драйвер - это тоже приложение?
Заранее спасибо за ответы.

С уважением Dinisius.

LehaMechanic 28-12-2012 16:32 2055150

Цитата:

Цитата Dinisius
Ведь драйвер - это тоже приложение? »

Нет. Драйвер - это модуль в составе процесса System. Работает на уровне ядра между ОС и железом. Приложения работают между ОС и юзером.

Цитата:

Как Вы, уважаемые форумчане, можете пояснить такую ситуацию?
Особенности работы с памятью
Преодолевая ограничения Windows: физическая память

Цитата:

Все 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

Ment69 28-12-2012 16:46 2055159

Dinisius, Microsoft отвечает четко:
Цитата:

Нужны ли 64-разрядные драйверы для устройств при работе в 64-разрядной версии Windows?
Да. Для работы в 64-разрядной версии Windows всем устройствам нужны 64-разрядные драйверы. Драйверы, разработанные для 32-разрядных версий Windows, не работают на компьютерах под управлением 64-разрядной версии Windows.

Dinisius 28-12-2012 17:58 2055210

Цитата:

Цитата Leha Ares
Все 32-разрядные клиентские версии ОС Windows, в том числе Windows Vista, Windows XP и Windows 2000 Professional, поддерживают физическую память в объеме до 4 ГБ. 4 ГБ – это максимальный физический адрес, доступный в стандартном режиме управления памятью x86...
В пакете обновления 2 (SP2) для ОС Windows XP была реализована поддержка расширений физических адресов (PAE) по умолчанию для устройств, поддерживающих технологию No Execute, что, во-первых, необходимо для предотвращения исполнения данных (DEP), а во-вторых, обеспечивает возможность поддержки памяти в объеме более 4 ГБ.
В ходе тестирования выяснилось, что многие системы аварийно завершают работу, зависают и отказываются загружаться. Происходит это из-за того, что некоторые драйверы устройств, в особенности аудио- и видеоустройств, которые, в основном, встречаются в клиентских системах, а не в серверах, запрограммированы на работу с физическими адресами в пределах 4 ГБ. Эти драйверы, оказываются, обрубают адреса свыше 4 ГБ, что приводит к повреждению содержимого памяти со всеми вытекающими последствиями. »

Спасибо.
Встречный вопрос, каким образом драйвер может "полезть" не в своё адресное пространство?

Ment69 28-12-2012 19:00 2055256

Dinisius, То есть слова
Цитата:

Цитата Leha Ares
Драйвер - это модуль в составе процесса System. Работает на уровне ядра между ОС и железом. »

вы пропустили мимо ушей?

Dinisius 28-12-2012 21:19 2055312

Цитата:

Цитата Ment69
Драйвер - это модуль в составе процесса System. Работает на уровне ядра между ОС и железом. » »

Нет,Ment69, не пропустил мимо ушей.
Давайте разбиратся.
Процессу "System" Windows выделил некое адресное пространство в оперативной памяти где этот процесс хранит данные.
Так вот, мне не понятно, как драйвер аудио\видео, который работает в адресном пространстве процесса System может влиять и очищать адресное пространство не своих процессов?
Вы ведь читали статью, ссылку на которую выложил Leha Ares, ?

Возможно, статью не совсем точно перевели с английского.

LehaMechanic 28-12-2012 21:51 2055324

Цитата:

Цитата Dinisius
Давайте разбиратся. »

- Разберемся!
- Давай, разбирайся... (с) к/ф Место встречи изменить нельзя.


Еще раз про Windows и четыре гигабайта

Цитата:

В Windows используется так называемая плоская модель памяти. Тридцать два разряда адреса обеспечивают обращение к пространству размером четыре гигабайта. Таким образом, каждой ячейке ОЗУ или ячейке памяти другого устройства соответствует определенный адрес, и никаких двусмысленностей тут быть не может. Включенный режим PAE дает возможность использовать 36 разрядов адреса и увеличить количество ячеек памяти в 16 раз. Но ведь система команд процессора остается той же самой и может адресовать только 4 миллиарда (двоичных) байтов! И вот, чтобы обеспечить возможность доступа к любому из 64 миллиардов байтов, указав только 32 разряда адреса, в процессоре включается дополнительный этап трансляции адресов (те, кого интересуют подробности, могут обратиться к специальной литературе — например, книге Руссиновича и Соломона «Внутреннее устройство Windows»). В результате 32-разрядный адрес в программе может указывать на любой из байтов в 36-разрядном пространстве.
Прикладных программ эта особенность никак не касается, они работают в своих собственных виртуальных адресах. А вот драйверам, которые должны обращаться к реальным адресам конкретных устройств, приходится решать дополнительные задачи. Ведь сформированный этим драйвером 32-разрядный адрес может после дополнительного этапа трансляции оказаться совсем другим, и выданная драйвером команда может, например, вместо вывода значка на экран изменить значение в одной из ячеек таблицы Excel. А если окажутся запорченными какие-либо системные данные, то тут и до аварийного завершения работы с выводом синего экрана рукой подать. Поэтому для успешной работы в режиме PAE драйверы должны быть написаны с учетом особенностей этого режима.
Однако поскольку исторически сложилось так, что до того времени в клиентских компьютерах PAE не использовался, некоторые компании не считали нужным поддерживать этот режим в написанных ими драйверах.

Dinisius 29-12-2012 22:29 2055963

Вот теперь всё понятно.
Спасибо всем учасникам дискусии, а особенноLeha Ares, за очень полезную ссылку.
Всех поздравляю с наступающим Новым Годом.
Тему можно закрыть.
Ещё раз спасибо.


Время: 13:00.

Время: 13:00.
© OSzone.net 2001-