![]() |
|
Сайт 3DNews | Регистрация | Правила | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
![]() ![]() |
Опции темы | Опции просмотра |
![]() |
[включить плавающее окно] #1 | |
![]() Автор темы Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
|
Пара вопросов об использовании памяти OC Windows
1. Слышал,что обычный 32 битный процесс не может использовать больше 2 гб. физической памяти,причем независимо от разрядности самой Windows. Как это понимать ? Что если,скажем,игра выйдет за пределы 2 гб.,то просто тупо вылетит независимо от количества свободной системной памяти и файла подкачки или все же будет юзать своп,игнорируя память,но обходя таким образом ограничение процесса,пусть и ценой своппинга ? 2. Скачал простенькую программу,которая изменяет один какой-то бит в исполняемом файле 32 битной программы,вследствии чего та сможет адресовать аж до 4 гигов памяти под свой процесс в 64 битных Windows (и 32 битных,но с ключом /3gb). Насколько это соответствует реальности или обещания проги всего лишь простой фейк ? |
|
![]() |
![]() |
![]() |
[включить плавающее окно] #2 |
![]() Регистрация: 30.12.2003
|
1. Нужно не так ставить вопрос не что будет если программе понадобиться больше 2 гиг, а может ли программа, написанная без ошибок, затребовать вдруг больше 2 гиг.
Ограничение на объем памяти выделяемого на процесс не может быть проблемой в принципе, никто же не мешает игрушке запустить 2 и более процессов. 2. В принципе раз уж подарили перфоратор то почему бы и не просверлить что-нибудь. Дырявые несущие стены только прочнее
__________________
"Bunnies don't do sale a bicycle but they can dance." |
![]() |
![]() |
![]() |
[включить плавающее окно] #3 |
![]() Автор темы Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
|
1. Каким образом объем используемых программой данных является несомненным мерилом правильности написания ее кода ? oO
2. Вычитал в инете из одной статьи : "Проблемы с адресным пространством существовали ещё до того, как 64-битное окружение стало распространяться повсеместно. Мы помним, как во время интенсивной игры на карте Command and Conquer: Generals с восемью пользователями приложение выдало ошибку о нехватке адресного пространства и свернулось. Это было ещё где-то в 2004 году. Наши коллеги в AnandTech описали схожую ситуацию, которую они испытали с игрой Supreme Commander в 2007 году...он упомянул существование энтузиастов, модифицирующих исполняемые файлы игры, добавляя флаг /LARGEADDRESSAWARE. Последний позволяет повысить стабильность 32-битного приложения, которое в стандартном виде часто "вылетало". Именно такой подход мы встречали несколько раз в форумах поддержки, где он даётся в качестве возможного решения для запуска 32-битных игр без стандартной поддержки LAA под 64-битной версией Windows. Среди игр, которые выигрывают от такого шага, можно упомянуть Stalker, Battlefield 2, Battlefield 2142, Supreme Commander, Company of Heroes и Gothic 3. Если у вас используется 32-битная операционная система, вы будете сталкиваться с ошибками выделения виртуального адресного пространства другого рода, поэтому здесь мы приведём решения для 64-битных окружений. В любом случае, и для 32-битных систем тоже есть выход, если запускать их с ключом /3GB." |
![]() |
![]() |
![]() |
[включить плавающее окно] #4 |
![]() Регистрация: 30.07.2005
Адрес: Рязань
|
Цитата
(Theosoph) »
Насколько это соответствует реальности или обещания проги всего лишь простой фейк ?
Добавлено через 29 секунд Почитай лучше мелкомягких, что вот мусолить статейки.
__________________
Опытный шаман вылечит вашего электронного друга: танцы с бубном, снятие порчи и сглаза, заговор микросхем. |
![]() |
![]() |
![]() |
[включить плавающее окно] #5 |
![]() Автор темы Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
|
Ну со вторым вопросом все более менее ясно,а как быть с первым ?
ps. m$ на дух не переношу ! |
![]() |
![]() |
![]() |
[включить плавающее окно] #6 |
![]() Регистрация: 30.07.2005
Адрес: Рязань
|
Цитата
(Theosoph) »
2 гб. физической памяти
__________________
Опытный шаман вылечит вашего электронного друга: танцы с бубном, снятие порчи и сглаза, заговор микросхем. |
![]() |
![]() |
![]() |
[включить плавающее окно] #7 |
![]() Автор темы Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
|
И даже своп-файл тут бессилен ?! Теперь ясно,отчего в 32-битной 7-ке у меня постоянно вылетала Modern Warfare 2 в одном и том же месте с ошибкой нехватки памяти,которой было еще около 1 гига свободной и отчего проблема исчезла в 64 битной системе. Наверное,игру скомпилировали c /LARGEADDRESSAWARE
|
![]() |
![]() |
![]() |
[включить плавающее окно] #8 |
![]() Регистрация: 30.12.2004
Адрес: Новосибирск
|
Цитата
(Theosoph) »
обычный 32 битный процесс не может использовать больше 2 гб. физической памяти
![]() Цитата
(Theosoph) »
изменяет один какой-то бит в исполняемом файле
![]()
__________________
С уважением, Олег Р. Смирнов |
![]() |
![]() |
![]() |
[включить плавающее окно] #9 |
![]() Автор темы Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
|
Цитата
В неправильных каких-то местах слухи вылавливаешь...
А что может мне сообщить правильное место слухов ? ![]() ![]() Цитата
Вообще бред: для возможности использования непрерывного адресного пространства до 3 гигабайт (под управлением винды x86) и/или 4 гигабайт (под управлением винды x64) программа должна быть скомпилирована с указанием специальных ключей, при этом все адресные ссылки в программе имеют несколько иной вид - и это ну никак не может быть не то, что "в одном бите", но даже и в одном месте программы...
Кста,собственно бит тот изменяют командой EDITBIN.EXE /LARGEADDRESSAWARE program.exe из состава Visual Studio. Можно также манюсенькой прогой http://ntcore.com/4gb_patch.php ,которая патчит указанный exe файл и автоматически создает его копию на всяк.случай. |
![]() |
![]() |
![]() |
[включить плавающее окно] #10 |
![]() Регистрация: 30.12.2004
Адрес: Новосибирск
|
Цитата
(Theosoph) »
теоретически до 2 гб на процесс
Вот только писать такие программы сложнее (но во времена MS-DOS их вовсю писали - уж больно мало было физической памяти, зато были himem.sys и Emm386.exe - а как-то же надо было работать? ![]() Добавлено через 6 минут Цитата
(Theosoph) »
такое писали далеко не в одном месте,только с одной поправочкой : имелась в виду не физическая,а виртуальная память
![]() При этом, объём "виртуальной" памяти вообще ничем не ограничен - отображай страницы в разные адреса (пусть это не так просто, как работать с "плоской" моделью памяти - но все серверные приложения с этим же справляются? ![]()
__________________
С уважением, Олег Р. Смирнов |
![]() |
![]() |
![]() |
[включить плавающее окно] #11 |
![]() Регистрация: 30.12.2003
|
Цитата
(Theosoph) »
1. Каким образом объем используемых программой данных является несомненным мерилом правильности написания ее кода ? oO
__________________
"Bunnies don't do sale a bicycle but they can dance." |
![]() |
![]() |
![]() |
[включить плавающее окно] #12 |
![]() Регистрация: 30.12.2004
Адрес: Новосибирск
|
Цитата
(alex555) »
никак не получиться у одной программы с патчем использование до 4 гиг
![]() А всякие-разные типа MS SQL Server etc и под Win2003 x86 EE прекрасно отжирают по 16-32 гигабайта... ![]()
__________________
С уважением, Олег Р. Смирнов |
![]() |
![]() |
![]() |
[включить плавающее окно] #13 |
![]() Регистрация: 30.07.2005
Адрес: Рязань
|
Smirnoff люди то с плоской моделью разобраться часто не могут, а ты их такими страстями пугаешь
![]()
__________________
Опытный шаман вылечит вашего электронного друга: танцы с бубном, снятие порчи и сглаза, заговор микросхем. |
![]() |
![]() |
![]() |
[включить плавающее окно] #14 |
![]() Регистрация: 30.12.2004
Адрес: Новосибирск
|
Цитата
(Keper) »
с плоской моделью разобраться часто не могут
А на уровне пользователя вполне можно понять: что к чему. ![]()
__________________
С уважением, Олег Р. Смирнов |
![]() |
![]() |
![]() |
[включить плавающее окно] #15 |
![]() Регистрация: 30.07.2005
Адрес: Рязань
|
Smirnoff
многим программистам и такое знать шибко не надо. Если проекты крупные, тогда другое дело, но и то это больше касается разработки "платформ" вроде MS SQL Server.
__________________
Опытный шаман вылечит вашего электронного друга: танцы с бубном, снятие порчи и сглаза, заговор микросхем. |
![]() |
![]() |
![]() |
[включить плавающее окно] #16 |
![]() Автор темы Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
|
Цитата
(Keper) »
Smirnoff люди то с плоской моделью разобраться часто не могут, а ты их такими страстями пугаешь
![]() ![]() Цитата
(Smirnoff) »
а вот 4 гига предоставить программе x86 винда x64 вполне в состоянии.
А всякие-разные типа MS SQL Server etc и под Win2003 x86 EE прекрасно отжирают по 16-32 гигабайта... ======================================== Про 2 гб ограничение на сайте для программистов : http://www.viva64.com/content/articl...it-development Фраза : "Традиционные 32-битные приложения уже начинают достигать предела своих возможностей по использованию оперативной памяти. В Windows-системах для пользовательского приложения доступно два гигабайта памяти (в некоторых случаях три), в то время как для повышения производительности программ в оперативной памяти уже необходимо хранить больше данных" Добавлено через 4 минуты Вот еще сайт Интел для инженеров : http://software.intel.com/ru-ru/arti..._applications/ Там есть цитата : "Из-за наличия прослойки WoW64 32-битные программы работают менее эффективно в 64-битной среде, чем в 32-битной. Но все-таки, простые 32-битные приложения могут получить одно преимущество от их запуска в 64-битной среде. Вы, наверное, знаете, что программа, собранная с ключом /LARGEADDRESSAWARE:YES может выделять до 3-х гигабайт памяти, если 32-битная операционная система Windows запущена с ключом /3gb. Так вот, эта же 32-битная программа, запущенная на 64-битной системе, может выделить почти 4 GB памяти (на практике около 3.5 GB). Тот самый пресловутый бит и есть LARGEADDRESSAWARE. Добавлено через 13 минут ========По ключу /3gb========== Некоторые драйвера не любят этот ключ. Вчера на работе комп грузился с явными неполадками : видео загружалось в 4 битном цвете,система висла на этапе входа в аккаунт,вылетали ошибки "конфликт *.dll" и т.п. В безопасном режиме это все исчезало. Я долго пытался прояснить что к чему,пока путем метода исключения не пришел к выводу,что во всем виновна парочка драйвер Intel для видео ig35 и ключ /3gb. Наверное от того,что последний ограничивал адресное пространство самой ОСи до 1 гб,а драйвер явно "не был готов" к такой ситуации. После удаления ключа все проблемы исчезли,словно и не было. Драйвера ATI/Nvidia проблем не вызывали. |
![]() |
![]() |
![]() |
[включить плавающее окно] #17 |
![]() Регистрация: 30.12.2004
Адрес: Новосибирск
|
Цитата
(Keper) »
многим программистам и такое знать шибко не надо
![]() Добавлено через 49 секунд Цитата
(Theosoph) »
c сегментированной дела и того хуже
![]()
__________________
С уважением, Олег Р. Смирнов |
![]() |
![]() |
![]() |
[включить плавающее окно] #18 |
![]() Автор темы Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
|
Smirnoff,когда проходишь игрушку на 7 поту и она вываливается с ошибкой нехватки памяти,при том,что памяти еще 1 гиг свободной и плюс своп,вопросы начинают возникать) Однако интерес к нему потом перешел в общую плоскость.
|
![]() |
![]() |
![]() |
[включить плавающее окно] #19 |
![]() Регистрация: 30.12.2004
Адрес: Новосибирск
|
Цитата
(Theosoph) »
когда проходишь игрушку <Skip>вопросы начинают возникать)
![]() ![]()
__________________
С уважением, Олег Р. Смирнов |
![]() |
![]() |
![]() |
[включить плавающее окно] #20 |
![]() Автор темы Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
|
Цитата
(alex555) »
Думаю тем образом, что если есть ограничение в 2 гига на пользовательские программы, то задача программиста в эти 2 гига уложиться. Ну и соответственно если прога вышла за лимит значит где-то недосмотр.
Цитата
С ключом /3gb у пользовательским программ будет до 3 гиг адресного пространства и никак не получиться у одной программы с патчем использование до 4 гиг, ключик может принести (или не принести) пользу когда на борту >3.5 гига оперативки.
64 битные проги вообще не требуют никаких телодвижений и не имеют ограничений при работе с памятью (кроме теоретических). Цитата
(Smirnoff) »
А толку-то? Ты же всё-равно не сможешь игрушку перекомпилировать (я уже не говорю - "переписать заново"
![]() ![]() Что касается игровых разработчиков, то они уже упёрлись в ограничения 2 Гбайт при создании контента. Для игры Crysis разработчику Crytek пришлось писать "родной" 64-битный редактор, чтобы создавать уровни, которые смогли бы полностью заполнить 2 Гбайт доступной памяти для стандартных приложений с полной оптимизацией, но которые попросту не умещались в редакторе, запущенном как стандартное 32-битное приложений... Во время разговора с Чаком, он упомянул существование энтузиастов, модифицирующих исполняемые файлы игры, добавляя флаг /LARGEADDRESSAWARE. Последний позволяет повысить стабильность 32-битного приложения, которое в стандартном виде часто "вылетало". Именно такой подход мы встречали несколько раз в форумах поддержки, где он даётся в качестве возможного решения для запуска 32-битных игр без стандартной поддержки LAA под 64-битной версией Windows. Среди игр, которые выигрывают от такого шага, можно упомянуть Stalker, Battlefield 2, Battlefield 2142, Supreme Commander, Company of Heroes и Gothic 3. Если у вас используется 32-битная операционная система, вы будете сталкиваться с ошибками выделения виртуального адресного пространства другого рода, поэтому здесь мы приведём решения для 64-битных окружений. В любом случае, и для 32-битных систем тоже есть выход, если запускать их с ключом /3GB. Нет никакой гарантии, что подобные решения исправят проблемы со стабильностью, с которыми вы можете сталкиваться, поэтому мы рекомендуем их только продвинутым пользователям. С учётом всего сказанного, мы также встречали немало сообщений об успешном устранении ошибок. Поэтому мы всё же советуем попробовать решение, которое Чак подразумевал под изменением текущих игр для добавления LAA, особенно если вы подключаете большие моды. Добавлено через 10 минут Вопрос как ни крути актуален,потому что 32 битные проги и игры будут еще на рынке очень долго,несмотря на повальное увлечение 64-х битием. Тому виной,имхо,такой комплекс причин : 1. Бизнес : по недавно виденной мной статистике до сих пор пальму первенства по юзанию держит 32 битная XP SP3,причем отрыв от других осей своего семейства весьма значителен. Отказ от 32 битной версии=отказ от прибыли. Поддержка обоих версий тоже требует доп.усилий. 2. На 32 битах банально проще и привычнее писать. Не все проги получают преимущества от 64 битной версии,а 32 код более компактен и меньше грузит шину памяти/дисковое пространство. Сравните 32 и 64 битные версии IEXPLORE,к примеру, и увидите все сами. === Лана,с теорией все ясно,теперь нужно будет попробовать что нить на практике. Нужна какая-нибудь 32 битная прога,которая жрет очень много памяти,но при этом не скомпилирована с лонгадваре флагом. Сегодня вечером дома я проверю exe-шник Modern Warfare 2 ,потому что поведение этой игры на 64 битной оси вызывает подозрение,что разработчики скомпилировали ее с флажком изначально. |
![]() |
![]() |