Форум 3DNews
Вернуться   Форум 3DNews > Софт > Операционные системы Microsoft Windows

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 03.03.2010, 17:55   [включить плавающее окно]   #1
Theosoph
Мужской Заслуженный
Автор темы
 
Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
Пара вопросов об использовании памяти OC Windows

Собственно вопросы таковы :
1. Слышал,что обычный 32 битный процесс не может использовать больше 2 гб. физической памяти,причем независимо от разрядности самой Windows. Как это понимать ? Что если,скажем,игра выйдет за пределы 2 гб.,то просто тупо вылетит независимо от количества свободной системной памяти и файла подкачки или все же будет юзать своп,игнорируя память,но обходя таким образом ограничение процесса,пусть и ценой своппинга ?

2. Скачал простенькую программу,которая изменяет один какой-то бит в исполняемом файле 32 битной программы,вследствии чего та сможет адресовать аж до 4 гигов памяти под свой процесс в 64 битных Windows (и 32 битных,но с ключом /3gb). Насколько это соответствует реальности или обещания проги всего лишь простой фейк ?
Theosoph вне форума  
Ответить с цитированием
Непрочитано 03.03.2010, 19:47   [включить плавающее окно]   #2
alex555
Мужской Бывалый
 
Аватар для alex555
 
Регистрация: 30.12.2003
1. Нужно не так ставить вопрос не что будет если программе понадобиться больше 2 гиг, а может ли программа, написанная без ошибок, затребовать вдруг больше 2 гиг.
Ограничение на объем памяти выделяемого на процесс не может быть проблемой в принципе, никто же не мешает игрушке запустить 2 и более процессов.
2. В принципе раз уж подарили перфоратор то почему бы и не просверлить что-нибудь. Дырявые несущие стены только прочнее
__________________
"Bunnies don't do sale a bicycle but they can dance."
alex555 вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 04.03.2010, 09:53   [включить плавающее окно]   #3
Theosoph
Мужской Заслуженный
Автор темы
 
Регистрация: 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."
Theosoph вне форума  
Ответить с цитированием
Непрочитано 04.03.2010, 11:03   [включить плавающее окно]   #4
Keper
Мужской Модератор
 
Аватар для Keper
 
Регистрация: 30.07.2005
Адрес: Рязань
Цитата (Theosoph) »
Насколько это соответствует реальности или обещания проги всего лишь простой фейк ?
общеизвестная возможность такая есть. Насколько работоспособна эта программа - вопрос другой.

Добавлено через 29 секунд

Почитай лучше мелкомягких, что вот мусолить статейки.
__________________
Опытный шаман вылечит вашего электронного друга: танцы с бубном, снятие порчи и сглаза, заговор микросхем.
Keper вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 04.03.2010, 11:09   [включить плавающее окно]   #5
Theosoph
Мужской Заслуженный
Автор темы
 
Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
Ну со вторым вопросом все более менее ясно,а как быть с первым ?
ps. m$ на дух не переношу !
Theosoph вне форума  
Ответить с цитированием
Непрочитано 04.03.2010, 11:26   [включить плавающее окно]   #6
Keper
Мужской Модератор
 
Аватар для Keper
 
Регистрация: 30.07.2005
Адрес: Рязань
Цитата (Theosoph) »
2 гб. физической памяти
не физической, а виртуальной. Так что вылетит.
__________________
Опытный шаман вылечит вашего электронного друга: танцы с бубном, снятие порчи и сглаза, заговор микросхем.
Keper вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 04.03.2010, 11:58   [включить плавающее окно]   #7
Theosoph
Мужской Заслуженный
Автор темы
 
Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
И даже своп-файл тут бессилен ?! Теперь ясно,отчего в 32-битной 7-ке у меня постоянно вылетала Modern Warfare 2 в одном и том же месте с ошибкой нехватки памяти,которой было еще около 1 гига свободной и отчего проблема исчезла в 64 битной системе. Наверное,игру скомпилировали c /LARGEADDRESSAWARE
Theosoph вне форума  
Ответить с цитированием
Непрочитано 04.03.2010, 12:54   [включить плавающее окно]   #8
Smirnoff
Мужской Модератор
 
Аватар для Smirnoff
 
Регистрация: 30.12.2004
Адрес: Новосибирск
Цитата (Theosoph) »
обычный 32 битный процесс не может использовать больше 2 гб. физической памяти
В неправильных каких-то местах слухи вылавливаешь...
Цитата (Theosoph) »
изменяет один какой-то бит в исполняемом файле
Вообще бред: для возможности использования непрерывного адресного пространства до 3 гигабайт (под управлением винды x86) и/или 4 гигабайт (под управлением винды x64) программа должна быть скомпилирована с указанием специальных ключей, при этом все адресные ссылки в программе имеют несколько иной вид - и это ну никак не может быть не то, что "в одном бите", но даже и в одном месте программы...
__________________
С уважением,
Олег Р. Смирнов
Smirnoff вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 04.03.2010, 15:42   [включить плавающее окно]   #9
Theosoph
Мужской Заслуженный
Автор темы
 
Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
Цитата
В неправильных каких-то местах слухи вылавливаешь...
Да ты знаешь,такое писали далеко не в одном месте,только с одной поправочкой : имелась в виду не физическая,а виртуальная память. Правда в одном месте уточнили,что теоретически до 2 гб на процесс,а практически где-то 1,7-1.8.
А что может мне сообщить правильное место слухов ?
Цитата
Вообще бред: для возможности использования непрерывного адресного пространства до 3 гигабайт (под управлением винды x86) и/или 4 гигабайт (под управлением винды x64) программа должна быть скомпилирована с указанием специальных ключей, при этом все адресные ссылки в программе имеют несколько иной вид - и это ну никак не может быть не то, что "в одном бите", но даже и в одном месте программы...
Теоретически ты прав и на практике так скорее всего будет так,но раз умельцы пишут,что указанные ранее игры стабилизировались после правки данного флага,то имеет смысл как минимум проверить это дело на практике,правда как еще не решил.Играть до упаду в стратегии на 8 игроков совершенно в лом,да и не показатель это. На ум приходит какой-нить 32 битный фотошоп,специально запускаемый из 32 битной винды с ключом /3gb и без него,без правки и с ней. Правда в таких прогах изначально может быть применена компиляция с данным флагом,но это легко выяснить прогой CFF Explorer.
Кста,собственно бит тот изменяют командой EDITBIN.EXE /LARGEADDRESSAWARE program.exe из состава Visual Studio. Можно также манюсенькой прогой http://ntcore.com/4gb_patch.php ,которая патчит указанный exe файл и автоматически создает его копию на всяк.случай.
Theosoph вне форума  
Ответить с цитированием
Непрочитано 04.03.2010, 20:10   [включить плавающее окно]   #10
Smirnoff
Мужской Модератор
 
Аватар для Smirnoff
 
Регистрация: 30.12.2004
Адрес: Новосибирск
Цитата (Theosoph) »
теоретически до 2 гб на процесс
Это речь о непрерывном адресном пространстве (Flat Model, но даже и в этом случае - до 3..4 гигабайт в зависимости от разрядности ОСи), с использованием отображаемых страниц программа может иметь столько памяти, скока пожелает (независимо от разрядности ОСи и наличия физической памяти).
Вот только писать такие программы сложнее (но во времена MS-DOS их вовсю писали - уж больно мало было физической памяти, зато были himem.sys и Emm386.exe - а как-то же надо было работать? ).

Добавлено через 6 минут

Цитата (Theosoph) »
такое писали далеко не в одном месте,только с одной поправочкой : имелась в виду не физическая,а виртуальная память
Ну и что это за "места", коли в них люди не в курсе о максимальном объёме непрерывного адресного пространства в 4 гигабайта исходя из разрядности адреса памяти в 32 бита?
При этом, объём "виртуальной" памяти вообще ничем не ограничен - отображай страницы в разные адреса (пусть это не так просто, как работать с "плоской" моделью памяти - но все серверные приложения с этим же справляются? ) - и все дела...
__________________
С уважением,
Олег Р. Смирнов
Smirnoff вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 04.03.2010, 23:18   [включить плавающее окно]   #11
alex555
Мужской Бывалый
 
Аватар для alex555
 
Регистрация: 30.12.2003
Цитата (Theosoph) »
1. Каким образом объем используемых программой данных является несомненным мерилом правильности написания ее кода ? oO
Думаю тем образом, что если есть ограничение в 2 гига на пользовательские программы, то задача программиста в эти 2 гига уложиться. Ну и соответственно если прога вышла за лимит значит где-то недосмотр. С ключом /3gb у пользовательским программ будет до 3 гиг адресного пространства и никак не получиться у одной программы с патчем использование до 4 гиг, ключик может принести (или не принести) пользу когда на борту >3.5 гига оперативки.
__________________
"Bunnies don't do sale a bicycle but they can dance."
alex555 вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.03.2010, 07:58   [включить плавающее окно]   #12
Smirnoff
Мужской Модератор
 
Аватар для Smirnoff
 
Регистрация: 30.12.2004
Адрес: Новосибирск
Цитата (alex555) »
никак не получиться у одной программы с патчем использование до 4 гиг
Про "патч" вообще ничего не могу сказать (не верю я в него... ), а вот 4 гига предоставить программе x86 винда x64 вполне в состоянии.
А всякие-разные типа MS SQL Server etc и под Win2003 x86 EE прекрасно отжирают по 16-32 гигабайта...
__________________
С уважением,
Олег Р. Смирнов
Smirnoff вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.03.2010, 10:01   [включить плавающее окно]   #13
Keper
Мужской Модератор
 
Аватар для Keper
 
Регистрация: 30.07.2005
Адрес: Рязань
Smirnoff люди то с плоской моделью разобраться часто не могут, а ты их такими страстями пугаешь .
__________________
Опытный шаман вылечит вашего электронного друга: танцы с бубном, снятие порчи и сглаза, заговор микросхем.
Keper вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.03.2010, 12:47   [включить плавающее окно]   #14
Smirnoff
Мужской Модератор
 
Аватар для Smirnoff
 
Регистрация: 30.12.2004
Адрес: Новосибирск
Цитата (Keper) »
с плоской моделью разобраться часто не могут
Дык они-ж так и так не программисты?
А на уровне пользователя вполне можно понять: что к чему.
__________________
С уважением,
Олег Р. Смирнов
Smirnoff вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.03.2010, 13:57   [включить плавающее окно]   #15
Keper
Мужской Модератор
 
Аватар для Keper
 
Регистрация: 30.07.2005
Адрес: Рязань
Smirnoff
многим программистам и такое знать шибко не надо. Если проекты крупные, тогда другое дело, но и то это больше касается разработки "платформ" вроде MS SQL Server.
__________________
Опытный шаман вылечит вашего электронного друга: танцы с бубном, снятие порчи и сглаза, заговор микросхем.
Keper вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.03.2010, 15:08   [включить плавающее окно]   #16
Theosoph
Мужской Заслуженный
Автор темы
 
Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
Цитата (Keper) »
Smirnoff люди то с плоской моделью разобраться часто не могут, а ты их такими страстями пугаешь .
и не только с плоской - c сегментированной дела и того хуже
Цитата (Smirnoff) »
а вот 4 гига предоставить программе x86 винда x64 вполне в состоянии.
А всякие-разные типа MS SQL Server etc и под Win2003 x86 EE прекрасно отжирают по 16-32 гигабайта...
MSSQL может использовать 16-32 гигабайта за счет 36-битной адресации (PAE),под использование которой он специально был заточен. Разработчикам пришлось пойти на немало ухищрений для обхода традиционных ограничений 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 проблем не вызывали.
Theosoph вне форума  
Ответить с цитированием
Непрочитано 05.03.2010, 15:31   [включить плавающее окно]   #17
Smirnoff
Мужской Модератор
 
Аватар для Smirnoff
 
Регистрация: 30.12.2004
Адрес: Новосибирск
Цитата (Keper) »
многим программистам и такое знать шибко не надо
Не, ну люди же интересуются? Вот тебе пост Theosoph-а к примеру...

Добавлено через 49 секунд

Цитата (Theosoph) »
c сегментированной дела и того хуже
Дык она и объективно сложнее...
__________________
С уважением,
Олег Р. Смирнов
Smirnoff вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.03.2010, 16:04   [включить плавающее окно]   #18
Theosoph
Мужской Заслуженный
Автор темы
 
Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
Smirnoff,когда проходишь игрушку на 7 поту и она вываливается с ошибкой нехватки памяти,при том,что памяти еще 1 гиг свободной и плюс своп,вопросы начинают возникать) Однако интерес к нему потом перешел в общую плоскость.
Theosoph вне форума  
Ответить с цитированием
Непрочитано 05.03.2010, 16:09   [включить плавающее окно]   #19
Smirnoff
Мужской Модератор
 
Аватар для Smirnoff
 
Регистрация: 30.12.2004
Адрес: Новосибирск
Цитата (Theosoph) »
когда проходишь игрушку <Skip>вопросы начинают возникать)
А толку-то? Ты же всё-равно не сможешь игрушку перекомпилировать (я уже не говорю - "переписать заново" )?..
__________________
С уважением,
Олег Р. Смирнов
Smirnoff вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.03.2010, 16:27   [включить плавающее окно]   #20
Theosoph
Мужской Заслуженный
Автор темы
 
Регистрация: 23.08.2003
Адрес: г. Каменское (бывш. Днепродзержинск)
Цитата (alex555) »
Думаю тем образом, что если есть ограничение в 2 гига на пользовательские программы, то задача программиста в эти 2 гига уложиться. Ну и соответственно если прога вышла за лимит значит где-то недосмотр.
Во времена 16 битных процессоров многим прогам хватало тех нескольких мегабайт и некоторые известные люди даже считали,что в будущем большего объема памяти и не понадобится. Стало быть выпуск 32 битных процов и систем - это всего лишь подпорка для ленивых или бесталанных программеров ? ) Прогресс не стоит на месте,дружище.
Цитата
С ключом /3gb у пользовательским программ будет до 3 гиг адресного пространства и никак не получиться у одной программы с патчем использование до 4 гиг, ключик может принести (или не принести) пользу когда на борту >3.5 гига оперативки.
Конечно не будет,потому что ключ /3gb предназначен только для 32 битных систем. 64 битные системы выделяют 32 битным прогам больше 2 гигов (если им нужно) автоматически без всяких ключей,но только если эта прога была скомпилирована с LARGEADDRESSAWARE ключом. К тому же речь идет о виртуальной памяти,т.е. если в системе больше 2,но меньше 3 гигов памяти,а игра требует именно 3,то вместо вылета она просто будет свопиться,что тоже плохо,но все же не настолько)
64 битные проги вообще не требуют никаких телодвижений и не имеют ограничений при работе с памятью (кроме теоретических).

Цитата (Smirnoff) »
А толку-то? Ты же всё-равно не сможешь игрушку перекомпилировать (я уже не говорю - "переписать заново" )?..
Вот меня и заинтересовала возможность изменения пресловутого бита для решения проблемы. Ведь совет исходил от какого-то левого чайника,а от Чака Валборна,одного из разработчиков Windows.

Что касается игровых разработчиков, то они уже упёрлись в ограничения 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 битной оси вызывает подозрение,что разработчики скомпилировали ее с флажком изначально.
Theosoph вне форума  
Ответить с цитированием
Ответ Создать новую тему

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 09:20. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey