ОС - Windows7
Процессор имеет 3 ядра
Я запустил программу, которая выполнят "while(true){}" (1 поток всего)
Посмотрел в диспетчере задач загруженность процесса ~ 33%
Общая загруженность процессора ~ 33%
Также во вкладке Быстродействие показана загруженность ядер ( каждое примерно в среднем на 33% загружено ).
Почему не смотря на то, что ни одно ядро полностью не загружено, общая загруженность процесса с одним потоком не может превышать 33%?
Кстати, если запустить процесс с 3-мя потоками, выполняющими "while(true){}", то общая загруженность процессора станет 100%.
Почему так?
Причем поток НЕ выполняется только на одном ядре, а сразу на 3-х, т.к. задано соответствие в диспетчере задач "все ядра".
Т.к. общая загруженность процессора ~33%, то следовательно у каждого ядра при таком раскладе загруженность ~33% (посмотреть можно на вкладке Быстродействие в диспетчере задач).
Почему
Другие языки программирования и технологии
Общая загруженность процессора при запущенном процессе с один потоком, выполняющим "while(true){}", не превышает 33%.
Ты вообще понимаешь, что такое загруженность процессора/ядра?
На пальцах: сидит чиновник, бумажки из стопки в стопку перекладывает. Чиновник - ядро, документы от посетителя - программа. Брать бумажки снизу стопки нельзя: там могут быть документы, зависящие от тех, что выше. Только по порядку, написанному на бумажках. Это - однозадачная одноядерная система.
Если чиновник работает с несколькими посетителями - перебирает бумаги одного, потом - другого, потом - третьего, затем - снова первого - это многозадачная одноядерная система. Если посетителей много - будет 100% загрузки и очередь. Зато за счет переходов каждый посетитель получает немного внимания чиновника.
Если сидят в кабинете 3 чиновника - это 3-ядерная система. Если есть 3 посетителя, то загрузка может быть и 100%. Если посетитель один, то может быть загружен один чиновник на 100%, два на 50% или все 3 на 33% - один поработал, передал другому, тот третьему, тот снова первому и т. д. , в среднем каждый работает одинаковое время; но они не могут разделить папку на 3 подпапки и обрабатывать каждый свою треть - посетитель-то один!
На пальцах: сидит чиновник, бумажки из стопки в стопку перекладывает. Чиновник - ядро, документы от посетителя - программа. Брать бумажки снизу стопки нельзя: там могут быть документы, зависящие от тех, что выше. Только по порядку, написанному на бумажках. Это - однозадачная одноядерная система.
Если чиновник работает с несколькими посетителями - перебирает бумаги одного, потом - другого, потом - третьего, затем - снова первого - это многозадачная одноядерная система. Если посетителей много - будет 100% загрузки и очередь. Зато за счет переходов каждый посетитель получает немного внимания чиновника.
Если сидят в кабинете 3 чиновника - это 3-ядерная система. Если есть 3 посетителя, то загрузка может быть и 100%. Если посетитель один, то может быть загружен один чиновник на 100%, два на 50% или все 3 на 33% - один поработал, передал другому, тот третьему, тот снова первому и т. д. , в среднем каждый работает одинаковое время; но они не могут разделить папку на 3 подпапки и обрабатывать каждый свою треть - посетитель-то один!
Боходир Махмудов
понятно, спс.
Ну очевидно, один поток же выполнения. Нагрузка динамически раскидывается по ядрам. Вот тебе и 33%, т. е. 1/3 от 100.
Боходир Махмудов
не очевидно.
у вас предложения противоречат друг другу.
у вас предложения противоречат друг другу.
Дело в том что у каждого приложения в ОС Windows есть ограничение ресурсов, например тебе будет сложно сделать прогамму которая бы брала более 1 ГБ ОЗУ, я сталкивался с подобным, написал прогу которая ресайзила картинки кучей, дал ей в работу 200 фот 5-8мб каждая, так она обработала около 15 штук съела около 1,2 ГБ и ОСь ее крашнула. Так же ОСЬ управляет и нагрузкой на ЦП...
Боходир Махмудов
"Так же ОСЬ управляет и нагрузкой на ЦП..."
почему тогда 3 потока - 100% загруженность,
почему весь процесс не ограничивается до 33%?
почему тогда 3 потока - 100% загруженность,
почему весь процесс не ограничивается до 33%?
Похожие вопросы
- Как посмотреть ПОСЛЕДНИЙ запущенный процесс в UNIX?
- КАК избавиться от вирусов троянов и червей в svchost идут закачки разного рода всего 8 запущенных процессов.
- как послать всю мощность процессора на один процесс? помогите плиз!
- С++ Потоки, процессы...
- В чем прикол в нанопроцессах 7 нм тех процесс в процессорах
- Рекурсия поиск на Delphi в цикле WHILE - исправьте код ?
- Надо сделать ёлочку в С++ с помощью while
- Азы C++: "while" заменяем на "for"
- for и while всегда обрабатывают формулы? С++
- while(!((str[i]>='0'&&str[i]<='9')||str[i]=='\0')) как перевести на человеческий язык это условие? - Язык си