-1

Утилита Process Explorer показывает, что мой процессор работает примерно на 5% мощности. Почему загрузка ЦП внезапно увеличивается, когда я запускаю приложение, а затем возвращаюсь к нормальному использованию (5-8%) через несколько секунд после открытия приложения.

1 ответ1

2

  • Операционная система должна найти программу на диске
  • Операционная система должна создать процесс
    • Вы упоминаете "Process Explorer", поэтому я предполагаю, что Microsoft Windows. Если вы когда-нибудь почитаете SVCHost.EXE, этот "сервис" - это технический обходной путь, позволяющий нескольким программам использовать один и тот же процесс. Это может сделать вещи менее понятными при устранении неполадок. С положительной стороны, это может иметь некоторые преимущества в скорости, потому что есть некоторые накладные расходы для создания процесса.
    • Создание процесса заключается в резервировании ранее доступной памяти. Поиск некоторой доступной памяти может потребовать внесения некоторых изменений, например, изменения памяти, которая хранится в файле Page.
    • PID (уникальный номер "Идентификатор процесса") должен быть присвоен процессу
  • Операционная система должна иметь инструкции программы, загруженные в память
  • Планировщик должен назначить некоторое время процессора программе
    • В многозадачных операционных системах, в которых работают несколько программ, ресурсы должны быть общими. Таким образом, чтобы программа использовала ресурс, такой как время, когда процессор делает что-то, что программа хочет, должен быть какой-то механизм совместного использования.
  • Если программа показывает что-то на экране, то окно необходимо нарисовать. Это означает, что программе нужно сообщить "оконному менеджеру", что ей нужно окно. Программа должна сообщить "оконному менеджеру", как должно выглядеть окно.
    • Например, показывает ли программа строку заголовка? Если да, то как называется программа? В современных версиях Microsoft Windows в левом верхнем углу обычно отображается значок программы. Как выглядит значок программы? Есть ли в программе кнопка свертывания? Нужно ли показывать полосы прокрутки? Что еще нужно нарисовать на окне?
  • Это окно обычно выходит на передний план. Если другая программа была на переднем плане, эта программа должна была быть помещена на задний план. Программа, которая будет размещена в фоновом режиме, будет проинформирована об этом факте.
  • Затем "оконному менеджеру" нужно будет нарисовать это вновь забытое окно поверх всего, что должно быть закрыто новым окном.
    • Термин "оконный менеджер" может использоваться чаще всего на платформах типа Unix, которые могут иметь несколько вариантов "оконного менеджера" на выбор. Это может быть не самый идеальный термин для Microsoft Windows, но я уверен, что происходит та же самая базовая концепция.
  • Помимо только окна, видимые программы обычно также отображаются на значке на панели задач, поэтому их также нужно рисовать.
  • Что бы на самом деле не делала программа, это займет некоторое время. Многие программы будут запрашивать ввод данных пользователем, но будут заняты чем-то, прежде чем вводить данные.
  • Почему программа запустилась? Некоторая вещь, должно быть, потребовала, чтобы программа запустилась. Эта вещь, называемая "родительским процессом", получает информацию. Например, если вы ввели команду в приглашении "Выполнить" из меню "Пуск", то это приглашение должно быть проинформировано о том, что программа запущена, чтобы приглашение могло знать, что оно может быть закрыто.
  • На самом деле, есть куча других вещей, которые нужно сделать
    • Чтобы получить представление, перейдите в командную строку и введите:
      WMIC PROCESS LIST /FORMAT:LIST >> output.txt
      Затем откройте этот файл output.txt. Между пустыми строками находятся некоторые данные, которые операционная система будет отслеживать для каждой новой программы, которая запускается. На моем компьютере с Windows 10 эта команда показывает 40 различных значений для каждого процесса (каждый экземпляр каждой программы, которая активно работает).

Опять же (аналогично другому недавнему вопросу о закрытии программ), точные детали могут различаться в зависимости от используемой операционной системы (или даже более конкретно, например, от уровня исправления, установленного операционной системой). Полный список будет включать в себя описание многих внутренних деталей операционной системы. Чтение целых книг (таких как Windows Internals, Часть 1: Архитектура системы, процессы, потоки, управление памятью и т.д. / Седьмое издание, книга с четырьмя перечисленными авторами) будет обсуждать только некоторые аспекты того, что происходит. И конкретные детали могут быть изменены при обновлении Windows. Таким образом, этот ответ предназначен только для очень широкого описания некоторых задач, просто чтобы показать, что при запуске программы происходит довольно много вещей.

а затем вернитесь к нормальному использованию (5-8%) через несколько секунд после открытия приложения

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

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