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

Вопрос 1) Мне интересно, почему в "диспетчере задач" есть график, показывающий, сколько ЦП используется в данный момент, не всегда ли он что-то делает, не всегда ли он выполняет какой-то двоичный файл (сборка низкого уровня ) инструкция?

Вопрос 2) Я читал в Википедии, что процессор выполняет "неактивный" системный процесс, почему? Разве это не может просто вернуться в очередь по расписанию?

Позвольте мне объяснить, предположим гипотетически, что наш процессор имеет 100 циклов в секунду:

PROCESS1 is run for 10 cycles, PROCESS1 is preempted
PROCESS2 is run for 20 cycles, PROCESS2 is preempted
SYSTEM_IDLE is run for 70 cycles, SYSTEM_IDLE is preempted
loop

Разве процессор не может быть полностью использован исключительно PROCESS1 и PROCESS2?

Подобно:

PROCESS1 is run for 40 cycles, PROCESS1 is preempted
PROCESS2 is run for 60 cycles, PROCESS2 is preempted
loop

Наконец, я использую довольно старый компьютер, памяти не хватает (т. Е. Доступно много), загрузка ЦП составляет не более 40%, обычно 10%.

Вот проблема, хотя:

Когда я запускаю только свой веб-браузер, только 1 вкладка - все нормально, процессор - 7%, память - 50%.

Когда я запускаю свой веб-браузер вместе с музыкальным проигрывателем, 20 вкладок, все отстает, не могу даже прокручивать (вверх или вниз) веб-страницы, я получаю 3 кадра в секунду, хотя странно то, что загрузка процессора только на 30% редко собирается на 35% и память около 70% заполнена

Последний вопрос: почему веб-браузер не может использовать больше процессора? Я бы не возражал, если бы он мог работать так же гладко, как когда я запускаю браузер только с 1 вкладкой

Баки для ваших объяснений :)

[EDIT1] PS: Я использую Windows 10 x64, Браузер: Firefox (последняя версия), Доступная память = 500 МБ, Firefox использует около 270 МБ. Скорость процессора 2,77 ГГц 2 логических ядра, ATI Radeon X1000 256 Мб выделенный компьютер недавно отформатирован, установлена ОС с нуля около 10 дней назад на момент публикации

1 ответ1

0

Большинство процессов тратят свое время на ожидание (ожидание сетевого пакета, ожидание пользователя, ожидание какого-то другого процесса / потока, ...). Операционная система вообще не имеет смысла планировать этот процесс - она просто сразу вернется и продолжит ждать. Бесполезно зацикливание привлекает силу.

Вместо этого, если все процессы ожидают (точнее: если они заблокированы), операционная система выключит процессор, переведя его в состояние ожидания. "Нить", которая делает это, называется пустой задачей. Затем процессор остановит обработку инструкций, пока не сработает прерывание (сообщая ОС, что что- то произошло).

Пока процессор не работает, часы продолжают работать, однако. Таким образом, если вы выключаете ЦП каждые 100 мс, а ЦП просыпается через 50 мс после перевода его в спящий режим, ваш ЦП загружен на 50%. Та же идея относится и к многоядерным процессорам.

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