Нужна ли виртуалка при 4 gb оперативки и что показывает диспетчер задач?

  • Автор темы Автор темы Vadim_PDF
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
Интересует нужна ли виртуалка вообще (даже для совместимостью со старыми программами) при 4 gb оперативки (речь о 32 bit системе WinXP) и что показывает диспетчер задач (swap отключен на всех дисках, проверил)?
P.S. Меня давно мучал вопрос - уж не лоханулись ли они с диспетчером задач :)
 

Вложения

  • Untitled-2.gif
    Untitled-2.gif
    41.5 КБ · Просм.: 1 075
Ответ: Нужна ли виртуалка при 4 gb оперативки и что показывает диспетчер задач?

А что говорят правильные менеджеры, типа Taskinfo?
Файловый кэш (в памяти) какой?
 
Ответ: Нужна ли виртуалка при 4 gb оперативки и что показывает диспетчер задач?

Правильными менеджерами не пользуюсь по причине жабы $35 и отсутствия свежего ключа на варезных сайтах. Но то, что swap-файла нет ни на одном винте — это точно.
 
Ответ: Нужна ли виртуалка при 4 gb оперативки и что показывает диспетчер задач?

Vadim_PDF сказал(а):
Интересует нужна ли виртуалка вообще (даже для совместимостью со старыми программами) при 4 gb оперативки …
Каждому процессу отводится 4G (2G + 2G) памяти, т.е. если бы запущен один процесс, то 4G физической памяти хватило бы и подкачка была бы не нужна, но процессов много (смотри значение PID в Тaskmanager'е) и каждому отводится по 4G адресного пространства.
«Адресное пространство» — это абстракция наподобие «закромов Родины», т.е. диапазон значений адреса ячейки памяти в выполняемой CPU команде, не вызывающих «ступора» исполнителя, т.е. процессора. Где исполнитель (CPU) при этом будет хранить значение, соответствующее адресу в этом диапазоне — в физическом ли ОЗУ, записывать/читать с диска (при этом на деле выполняется программа-обработчик прерывания «Исключительная ситуация — данные не в ОЗУ») или еще на какой не известной науке субстанции — сей факт приложение не волнует ни на йоту: для этого есть «система».​
Естественно, на все процессы по стольку физической памяти не хватает и приходится реально используемые (см. картинку) «лоскуты» памяти отображать в файл подкачки с помощью того самого обработчика aka Virtual Memory Manager (VMM).

Исторически сложилось так, что все доступное виртуальное (см. ниже) адресное пространство было волюнтаристстки поделено программистами из Redmond'а (город-Microsoft) пополам: нижние 2G были отведены собственно приложению, а верхние 2G пространства отведены для «хранения» dll'ек (опять см. рисунок и адреса выше 0x3FFFFFFF). Сделано это было тогда, когда и 64M на борту PC были пределом мечтаний:
— Абг'ам, Вы слыхали, что теперь «Волга» стоит двадцать четыре тысячи г'ублей! А ведь еще вче'га она стоила всего 15.000!!!
— Изя, но ведь у Вас нет и пятнадцати тысяч…
— Нет! Но вы только п'гедставьте: вчера я не мог купить машину за пятнадцать тысяч, а сег'одня не могу за двадцать четыре!!!​

Сколько реально доступно ОЗУ системе в конкретной аппаратной конфигурации можно увидеть, если в boot.ini прописать ключ /SOS, например
Код:
multi(0)disk(0)rdisk(0)partition(3)\WINNT="Microsoft Windows 2000 Professional" /fastdetect /sos
В зависимости от установленной видеокарты (?) это может быть от 3,3G до 3,7G; использование ключа /3G в том же boot.ini может увеличить объем выделяемой приложениям памяти (не факт, что физической), но при этом некоторые приложения — например, setup'ы, могут вести себя «чудным» образом.
 

Вложения

  • Memrymap.png
    Memrymap.png
    135.6 КБ · Просм.: 1 120
Ответ: Нужна ли виртуалка при 4 gb оперативки и что показывает диспетчер задач?

Как то все запутано... Вы хотите сказать, что 32 bit Windows без ключика /PAE способна выгрузить что-то в виртуалку свыше 4G (при оперативке 4G естественно)?
Чет я сомневаюсь. Сказано - 4 Гига прямая адресация - все остальные программы— свободны.
Ключик /3G используем. (Кстати — кто реально сталкивался с проблемами из-за него?) Но я сомневаюсь, что если я смогу загрузить 3 приложения и каждое сможет использовать хотя бы по 2G, пусть и храня их в swap, и подгружая при переключении.
 
Ответ: Нужна ли виртуалка при 4 gb оперативки и что показывает диспетчер задач?

Vadim_PDF сказал(а):
Как то все запутано... Вы хотите сказать, что 32 bit Windows без ключика /PAE способна выгрузить что-то в виртуалку свыше 4G (при оперативке 4G естественно)?
Чет я сомневаюсь. Сказано - 4 Гига прямая адресация - все остальные программы— свободны.
Ключик /3G используем. (Кстати — кто реально сталкивался с проблемами из-за него?) Но я сомневаюсь, что если я смогу загрузить 3 приложения и каждое сможет использовать хотя бы по 2G, пусть и храня их в swap, и подгружая при переключении.
На самом деле ничего не запутано, а очень даже просто: каждому процессу создается отдельная изолированная виртуальная x86 машина, в которой процесс может адресовать 4G памяти по своему усмотрению используя 32-х разрядную адресацию (при переходе в защищенный режим 16-разрядные регистры процессора автоматически объединяются попарно в 32 разрядные).
Т.е. сам процесс видит, что работает на отдельной машине с 4G ОЗУ, сколько бы ее ни было на самом деле. Все обращения процесса к памяти осуществляются через «висящий» над ним опять же аппаратный механизм управления памятью, который с помощью инициализируемых системой перед стартом процесса дескрипторов определяет права процесса на тот или иной участок виртуального адресного пространства (колонка Access на приведенном выше рисунке) — ошибки типа FATAL: Memоry cannot be read (write) at <адрес:адрес> генерируются именно при нарушенни процессом прав, которые он имеет на тот или иной участок отведенной ему памяти. Процессор также аппаратно отслеживает, чтобы виртуальная память, выделенная процессу, отображалась на реальную физическую. Если запрошенный процессом виртуальный адрес в данный момент не «подключен» к ОЗУ, то генерируется прерывание «Запрошенная страница отсутствует в памяти» — для ускорения работы все адресное пространство разбито блоки по 4K (или 4M) (см. здесь,здесь и здесь), и система «ищет» соответствующую страницу в файле подкачки либо еще где-нибудь :)
Для приложения этот процесс прозрачен и оно всегда «прямо адресует 4G»; разумеется настолько прямо, насколько это позволяет сегментная модель памяти, принятая в x86 архитектуре.
Макс. размер файла подкачки ограничен только возможностями системы и заложенными туда ограничениями маркетингового плана — мы же можем писать на 32-разрядной системе файлы по 20G.
Если же вы хотите в идеале обойтись без подкачки, то для каждого запущенного процесса будете должны поставить по 4G RAM (реально достаточно в несколько раз меньше) — но все равно, IMHO, этого многовато даже по нонешним меркам, зато куда бы приложение не обратилось — страничка-то вот она! в памяти сидит! :) Однако и в этом случае, страницы, к которым долго не было обращения системой будут потихоньку удаляться в файл подкачки — так устроены Windows.
Есть некие обходные пути, позволяющие обычному 32-разрядному приложению работать с памятью более 4G на 32-разрядной системе — это, например, используется в программах обработки спутниковых фотографий и оцифровки карт.

64-разрядная архитектура CPU для виртуальных машин, на которых выполняются приложения, использует (4G)^2 памяти, т.е. о-о-о-очень много (вспомним легенду об изобретении шахмат и награде изобретателю — как раз тот случай) и тут уж без подкачки никак :)
С ключиком /3G не далее как месяц назад у меня отказывались работать несколько инсталляторов.
 

Вложения

  • VM.gif
    VM.gif
    5.9 КБ · Просм.: 684
  • HugeFiles.gif
    HugeFiles.gif
    5.2 КБ · Просм.: 618
Ответ: Нужна ли виртуалка при 4 gb оперативки и что показывает диспетчер задач?

Хм.. Вы уж простите Фому неверующего - но пожалуйста приведите скриншот диспетчера программ (или чего бы то ни было) где видно, что на WinXP без /PAE (его помоему вообще не включить в WinXP без ручной правки dll-ок заставляющей XP чувствовать себя серверной системой) загружено Illustrator - 2 Gb, Indesign-2Gb, и Photoshop - 2Gb.
 
Ответ: Нужна ли виртуалка при 4 gb оперативки и что показывает диспетчер задач?

Vadim_PDF сказал(а):
Хм.. Вы уж простите Фому неверующего - но пожалуйста приведите скриншот диспетчера программ (или чего бы то ни было) где видно, что на WinXP без /PAE (его помоему вообще не включить в WinXP без ручной правки dll-ок заставляющей XP чувствовать себя серверной системой) загружено Illustrator - 2 Gb, Indesign-2Gb, и Photoshop - 2Gb.
Не путайте «загружено» и «используется». Приложению всегда выделяется 4G памяти из них верхних два 2G — системные dll, а уж сколько приложение будет использовать из оставшихся 2G — это от системы мало зависит. VCue, например, больше 900 с чем-то Мб никогда не может использовать.

P.S. Выделяется в данном случае означает «можно адресовать без приключений». Сама память «подключается» по требованию процесса и «с разрешения» Memory manager'а. Верхние 2G (область системных dll) всегда ReadOnly и выделяется немного хитро, в связи с чем физическая память экономится.
 
Статус
Закрыто для дальнейших ответов.