Что приводит к внезапному увеличению использования процессора при закрытии программы.

1172
bharat1097

Я использую утилиту Process Explorer, чтобы посмотреть на использование процессора. Мой процессор работает на <5% по большей части. Но когда я запускаю программу (например, Word, Excel и т. Д.), Загрузка ЦП возрастает (по понятным причинам), а затем загрузка ЦП снова снижается до 5-6%. Но когда я закрываю программу, почему загрузка процессора снова увеличивается? (Это возвращается через некоторое время.)

-1
Многие программы выполняют некоторую очистку, когда вы закрываете их, например, удаляете все временные файлы, сохраняете настройки и т. Д. DavidPostill 6 лет назад 1
* «Но когда я запускаю программу ... загрузка ЦП увеличивается (по очевидным причинам)» * - Хотите перечислить, что вы думаете об этих «очевидных причинах» *? Я подозреваю, что ваш список слишком короткий. sawdust 6 лет назад 0

1 ответ на вопрос

2
TOOGAM

Выбор ответа программы:

Прежде всего, существуют разные способы закрытия программы. Например, рассмотрим Блокнот.

  • Если вы запустите Блокнот и сразу же скажете ему закрыть, то он закроется.
  • Если вы запустите Блокнот, наберите что-нибудь, сохраните, а затем скажите, что он закроется, он закроется.
  • Если вы запустите Блокнот, наберете что-нибудь и скажете, чтобы он закрылся, появится диалоговое окно с вопросом, хотите ли вы сохранить сначала.
    • Если вы выберете «Да», Блокнот сохранит файл, а затем закроет.
    • Если вы выберете «Нет», «Блокнот» не сохранит файл, а затем «Блокнот» закроется. Если вы не ответите, Блокнот будет ждать ответа.
    • Если вы выберете «Отмена», «Блокнот» закроет диалоговое окно, а «Блокнот» останется открытым. Таким образом, Блокнот может отказаться от закрытия, даже если ему сказано закрыть.

Калькулятор (встроенный в Microsoft Windows), однако, просто закроется. Сначала он не будет задавать вопросы.

Таким образом, когда вы говорите программе закрыть или говорите операционной системе закрыть программу, программа может решить ответить на запрос различными способами. Это зависит от программы.

Тем не менее, вы можете принудительно завершить программу. По сути, это просто не дает возможности для закрытия программы. В качестве примера:

  • Запуск taskkill /fi "imagename eq notepad.exe"из CMD.EXE (командная строка) вежливо запросит, чтобы все копии Notepad закрылись
  • Запуск taskkill /f /fi "imagename eq notepad.exe"из CMD.EXE (командная строка) принудительно прервет все копии Блокнота

объем памяти

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

Когда программа заканчивается, диспетчер памяти должен зарезервировать эту память. Другими словами, диспетчер памяти должен найти маркеры, которые указывают на различные части памяти, и изменить эти маркеры так, чтобы память была помечена как доступная, а не использованная.

Имейте в виду, что часть «памяти» может храниться как «виртуальная память» на диске, а не в ОЗУ. В современных операционных системах компьютер может решить сделать это, даже если программе не хватило доступной оперативной памяти, если компьютер считает, что память, записанная на диск, будет некоторое время неактивна, а доступная оперативная память может быть лучше использована. для какой-то другой цели, например, чтобы помочь кешу диска заставить компьютер работать быстрее.

Как только память этой программы будет освобождена, компьютер может внести дополнительные изменения, чтобы эффективно использовать эту память, помогая программам, которые продолжают работать.

Пример:

Это немного затрагивает тему вежливого закрытия программы. У меня часто бывают десятки и десятки вкладок, открытых в Firefox (часто чуть больше 100 вкладок). Если я вежливо скажу Firefox закрыть себя, то после того, как окно станет невидимым, программа может еще какое-то время работать. Затем, если я попытаюсь запустить Firefox снова, он может сказать, что мне нужно сначала закрыть все другие экземпляры. Я могу зайти в диспетчер задач и посмотреть объем памяти, который использует Firefox, который обычно может превышать гигабайт (для «640 Кбайт должно быть достаточно для всех»), и я могу просто наблюдать за количеством используемой памяти Firefox снижается в довольно устойчивом темпе. Почему-то кажется, что Firefox что-то делает с каждой открывшейся вкладкой и освобождает необходимую память по частям. Затем, после того, как число приближается к нулю, внезапно Firefox просто полностью исчезает из моего списка запущенных программ. В этот момент я могу снова открыть Firefox. В качестве альтернативы, если я принудительно завершаю Firefox вместо того, чтобы вежливо попросить его закрыть себя, то мне не нужно ждать так долго, прежде чем я смогу с пользой запустить Firefox довольно быстро. Итак, каким-то образом Firefox пытается выполнить некоторую очистку самостоятельно, если ему предоставляется такая возможность.

Другие задачи

Если вы используете Alt- Tabдля переключения задач, вы можете увидеть программы, которые работают. Вы также можете увидеть список процессов (включая «приложения», которые не отображают окна на экране, например «службы»), посмотрев в диспетчере задач или запустив « tasklist» из командной строки. Очевидно, что операционная система отслеживает программы. Каждая программа имеет PID (номер «идентификатора процесса»).

Операционная система должна быть очищена после программы, гарантируя, что после закрытия программы она не появится в списке программ, которые на самом деле запущены.

Если в программе были какие-либо файлы, которые были открыты, дескрипторы файлов должны быть освобождены, чтобы операционная система не думала, что программа все еще использует файл.

Некоторые из этих деталей описывают функции, реализованные в современных версиях Microsoft Windows. Может быть больше задач, которые могут зависеть от операционной системы. (Старые операционные системы, такие как MS-DOS, которые, как правило, не выполняли многозадачный пакет программ (но могли иметь ограниченную многозадачность, позволяющую работать драйверам), могут даже не реализовывать все функции, описанные выше.)

Резюме:

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

* «память» может быть сохранена как «виртуальная память» на диске »* - Вы путаете виртуальную память и область / файл / раздел подкачки или раздела подкачки. Это, наверное, вина Microsoft. См. Https://superuser.com/questions/748743/what-is-the-difference-between-virtual-memory-and-built-in-memory-ram/748776#748776 sawdust 6 лет назад 0
@sawdust Мое первое использование термина «виртуальная память» происходит от файлов подкачки, используемых программным обеспечением MS-DOS, до того, как я перебрал настройки любой реализации Windows, поэтому я не склонен думать о конкретных более новых переопределениях Microsoft при использовании этого концептуального термина. Тем не менее, я ценю ваши усилия. Но если приложение хранит данные в памяти, используя «виртуальные» адреса, предоставленные компонентом диспетчера памяти операционной системы, и тогда Windows решает отобразить эту виртуально адресуемую память в файл подкачки вместо физической памяти, то как это не так? виртуальная память хранится «на диске»? TOOGAM 6 лет назад 0
* «Как это не относится к тому, что виртуальная память хранится« на диске »?» * - Хранится содержимое виртуальной памяти, а не сама виртуальная память. Это тонкое различие, но необходимое различие, которое сохраняет концепции реализации. Когда вы упростите формулировку объяснения, вы сможете придумать глупые идеи, такие как https://superuser.com/questions/1252621/is-there-a-hypervisor-that-allows-using-part-of-the- диска, как-RAM sawdust 6 лет назад 0

Похожие вопросы