|
|
|
Supreme Being
      
участник
Last Login: 02.02.2008 19:48
Сообщ.: 480,
Visits: 5 178
|
|
| Никак не пойму, как получается, что если один поток нагружает процессор на 100% (например, примитивный цикл), то все остальное умирает. Ведь система вроде должна заботиться выделять ресурсы поровну всем желающим. Или тут нет формального равного подхода?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 29.04.2007 19:12
Сообщ.: 548,
Visits: 5 276
|
|
| Почему "система" должна выделять всем поровну? Есть понятие приоритетов например.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 29.04.2007 19:12
Сообщ.: 548,
Visits: 5 276
|
|
| Кроме того, представь: в системе есть два потока с одинаковым приоритетом. Один загружает процессор на 100% в течении своего кванта, а второй тоже что-то делает, но при этом на 100% процессор не загружает. Как ты думаешь, логично увеличить квант тому процессу, который работает на приделе? Или лучше поровну распределить процессор, но при этом первый процесс будет "голодать", а второй будет использовать процессор только половину отведенного ему времени?
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 03.04.2008 13:12
Сообщ.: 1 297,
Visits: 12 498
|
|
если 2 процсса интенсивно потребляют ресурсы CPU, то каждый из них получит по 50%, если один процесс "спит", а другой интенсивно потребляет, то распределение будет 0% - 100%
обычно большинство процессов (задач) находятся в "полусонном" состоянии, тебуют пиковой активности на пару секунд, а в остальное время практически не потребляют ресурсов системы
бесконечный цикл (даже если и пустой) без sleep-вставок постоянно требует максимально доступные ресурсы от CPU, потому что он постоянно работает, отсюда и вытекает 100% для данного процесса, потому как все остальные процессы "спят"
если запустить 2 процесса с бесконечным пустым циклом, то ресурсы CPU распределяться примерно равномерно 50% - 50%
примерно так :)
|
|
|
|
|
Supreme Being
      
участник
Last Login: 02.02.2008 19:48
Сообщ.: 480,
Visits: 5 178
|
|
| Конечно, вроде логично дать больше ресурса работающему процессу. Однако типичная ситуация случается, когда один поток крутится вхолостую (как правило это ошибка программирования), а другие просто умирают. Даже другие приложения в системе замедляются. Теперь представьте себе, что пользователь одновременно работает с двумя приложениями от конкурирующих поставщиков. Например, смотрит потоки новостей от двух провайдеров. И одно приложение может таким способом (имитацией деятельности) забрать все ресурсы, заблокировать другое. Впрочем, что имеем то и имеем. Примерно понятно, что ресурс в виде кванта процессорного времени делится не поровну, а учитывается состояние процесса.
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 03.04.2008 13:12
Сообщ.: 1 297,
Visits: 12 498
|
|
| может ошибка программы, а может сложные математические вычисления, рассчет какой-нибудь задачи, архивирование файла, шифрование данных или еще чего, вы же не хотите, чтобы процесс который потенциально можно завершить за 30 мин. продолжался бы в течении 1 часа ;)
|
|
|
|
|
Supreme Being
      
участник
Last Login: 02.02.2008 19:48
Сообщ.: 480,
Visits: 5 178
|
|
| В некоторых случаях именно хочу. Хочу, чтобы приложение имело гарантированный ресурс. Стоит запустить к примеру WinZip, и все остальное тормозится. Теперь представьте, ваше приложение, постоянно обменивающееся с сервером информацией, работает у клиента. Клиент между делом запускает архиватор. Ваше приложение начинает тормозиться, сервер обрывает соединение. У клиента претензия к вам, а вы и не в курсе, что клиенту вздумалось запустить параллельно архиватор или видео в интернете посмотреть.
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 03.04.2008 13:12
Сообщ.: 1 297,
Visits: 12 498
|
|
| тогда нужно использовать RealTime OS, а не Windows
|
|
|
|
| | |