Я знаю, что этот вопрос задавали много раз по-разному, но мне все еще не ясно, что означает процент загрузки процессора.
Я начну объяснять, как я воспринимаю эти концепции сейчас (конечно, я могу и наверняка ошибаюсь):
- Ядро ЦП может выполнять только одну инструкцию за раз. Он не выполнит следующую инструкцию, пока не закончит выполнение текущей.
- Предположим, в вашей коробке один процессор с одним ядром. Следовательно, параллельные вычисления невозможны. Планировщик вашей ОС выберет процесс, установит IP для точки входа и отправит эту инструкцию в ЦП. Он не перейдет к следующей инструкции, пока ЦП не закончит выполнение текущей инструкции. Через некоторое время он переключится на другой процесс и так далее. Но он никогда не переключится на другой процесс, если ЦП в настоящее время выполняет инструкцию. Он будет ждать, пока процессор не освободится, чтобы переключиться на другой процесс. Поскольку у вас есть только одно ядро, у вас не может быть двух процессов, выполняющихся одновременно.
- Ввод-вывод стоит дорого. Всякий раз, когда процесс хочет прочитать файл с диска, он должен ждать, пока диск не выполнит свою задачу, и до этого момента текущий процесс не может выполнить свою следующую инструкцию. ЦП ничего не делает, пока диск работает, и поэтому наша ОС переключится на другой процесс, пока диск не завершит свою работу, чтобы не тратить время зря.
Следуя этим принципам, я пришел к выводу, что загрузка процессора в определенный момент времени может быть только одним из следующих двух значений:
- 0% - холостой ход. CPU вообще ничего не делает.
- 100% - занято. ЦП в настоящее время выполняет инструкцию.
Это явно неверно, поскольку taskmgr сообщает о значениях использования ЦП% 1, 12%, 15%, 50% и т. Д.
- Что означает, что данный процесс в данный момент времени использует 1% заданного ядра ЦП (по данным taskmgr)? Что происходит с 99%, пока этот процесс выполняется?
- Что это означает, что общая загрузка ЦП составляет 19% (по данным Rainmeter на данный момент)?