На днях я работал на 32-битном ПК с Windows 7, на котором работало несколько приложений, включая Firefox.

Со временем я продолжал открывать новые вкладки в Firefox, пока внезапно окно Firefox не начало мерцать. С этого момента большая часть графического интерфейса Firefox стала черной и отказалась перекрашивать. После попытки закрыть некоторые вкладки вслепую процесс Firefox полностью потерпел крах. Все остальные приложения, похоже, продолжают работать просто отлично.

Я предполагаю (поправьте меня, если я ошибаюсь), что процесс Firefox исчерпал свои права на 2 ГБ виртуальной памяти или какой-либо другой ресурс. Что подводит меня к ключевым вопросам:

  1. Может ли истощение памяти / ресурсов в одном процессе дестабилизировать другие процессы или даже само ядро?

  2. Как современные Windows справляются с этим сценарием? Насколько он устойчив в условиях высокого давления?

Меня беспокоит то, что, если другие процессы или службы ядра будут скомпрометированы, это может привести к поломке системы (например, повреждению файла / диска / реестра).

1 ответ1

1

Как Windows справляется с процессной памятью или исчерпанием ресурсов?

То, как программа ведет себя в "стрессовых условиях", зависит от того, как была написана конкретная программа (какие у нее есть привилегии, есть ли в ней ошибки и т.д.), И это поведение будет определять влияние на остальную систему, когда что-то "пойдет не так" ,

Вполне возможно, что данные могут быть потеряны. Возможно, что система выйдет из строя с помощью BSOD или просто не сможет записать данные из-за ошибки delayed write failed .


Раздвигая границы Windows

Серия постов в блоге Марка Руссиновича (начиная с « Раздвигая границы Windows: физическая память») подробно раскрывает эту тему.

В частности, в статье «Расширение границ Windows: выгружаемый и невыгружаемый пул» он иллюстрирует эффект запуска тестовой программы:

Если вы хотите воочию убедиться в том, как система ведет себя при низком уровне пула, используйте инструмент Notmyfault. У него есть параметры, которые вызывают утечку либо невыгружаемого, либо выгружаемого пула с указанным вами шагом. Вы можете изменить размер утечки во время утечки, если хотите изменить скорость утечки, а Notmyfault освобождает всю утечку памяти при выходе из нее

На одной тестовой системе он сказал о результатах:

В одной тестовой системе я в конечном итоге увидел это сообщение об ошибке, указывающее, что данные потенциально были потеряны. Я надеюсь, что вы никогда не увидите этот диалог в реальной системе!


Дальнейшее чтение

Windows Internals, 6-е издание Марка Руссиновича содержит гораздо больше информации о том, как Windows работает под капотом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .