Я спостерігаю за процесом використання відсотка використання процесора. Як процес використовує лише 50% процесора? Чи не використовується процес 100%, а потім 0%, а потім 100%? Його не так, як кожна інша інструкція - це інша програма.
Я спостерігаю за процесом використання відсотка використання процесора. Як процес використовує лише 50% процесора? Чи не використовується процес 100%, а потім 0%, а потім 100%? Його не так, як кожна інша інструкція - це інша програма.
Відповіді:
Це лише опитування складає приблизно один раз в секунду. Ви дивитеся, скільки з останньої секунди вона використовувала.
Якщо ви бачите, що процесор сидить на 50% на деякий час, то, що, ймовірно, відбувається в тому, що він використовує 100% одного процесора в системі з двома процесорами.
Технічно ви правильні. У будь-який момент часу ЦП використовується або не використовується. Але відображення цього на графіку не буде дуже корисним, тому графік усереднює використання ЦП протягом певного періоду часу, ймовірно, кожну секунду.
ОС розраховує процес протягом певного періоду часу. Тому, якщо процес запланований на (скажімо) 1 мс від 10 мс, то він буде використовувати 10% процесора.
Це трохи протилежне, оскільки (в однопоточній системі з одним процесором) процес або працює, або не працює. тобто використовує 100% або 0%. Відсоток, який ви бачите, вимірюється за часовим вікном і є мірою операційної системи, яка виділяє часові інтервали для вашого процесу.
Зверніть увагу, що ваш процес не сприятиме цьому, якщо ви отримуєте доступ до I / O. Отже, якщо ви робите величезний розрахунок, ви зареєструєте 100% (якщо нічого іншого не буде запущено). Якщо ви чекаєте доступу до мережних пакетів / дисків тощо, цифра вашого процесора знизиться, незважаючи на те, що ваш процес все ще працює.
На дуже низькому рівні, ви в основному праві. У будь-який даний момент, процесор або виконує інструкцію для даного процесу, або це не так.
Але ваша ОС сидить між вашими процесами і процесором, змушуючи їх ділитися часом. Відсоток, який ви бачите, - це відсоток нещодавнього часу, коли операційна система надала цей процес.
Вона заснована на середньому часі. Незважаючи на те, що всі потоки можуть мати один і той самий ділянку процесорного часу (на основі пріоритету), потоки можуть просто сказати "спасибі, але я бездіяльний", і передати його на наступний потік. Тому програми не завжди використовують той самий час%, і більшість програм споживають 0% процесора, а програми, які дійсно потребують центрального процесора, можуть зайняти близько 100% часу.
Чому вона обмежується 50%? Ви, мабуть, маєте два ядра процесора і використовуєте тільки одне.
Або, як було запропоновано, він використовує гіпертонінг, але я не знаю, як саме він веде себе.
Використання системи вибірково і усереднюється, що є єдиним розумним завданням.
Напр. запис про те, скільки часу триває процес / потік, проведений протягом 1 секунди. Якщо він витратив 1 секунду на процесор, це 100% CPU (або 50%, якщо у вас є 2 процесора і так далі), якщо він витратив 100ms, що це 10% використання процесора.