Перейти к содержанию
    

Распределение ресурсов процессора в Windows

Здравствуйте!

 

Я недавно наблюдал демонстрацию применения технологии адаптивного квотирования в QNX. То есть возможность выделить гарантированный процент процессорного времени приложению.

Для Windows нашел только возможность ограничить максимальное процессорное время, отводимое процессу (http://www.cyberguru.ru/operating-systems/windows-server2008/server2008-srm.html).

Вопрос: есть ли в Windows механизмы, позволяющие гарантировать процессу процент времени владения процессором.

 

P.S.: я понимаю, что для получения указанных возможностей существуют RTOS. Но мне надо точно знать о наличии или отсутствии вышеописанного механизма в Windows. Это нужно, чтобы с уверенностью сказать начальству: "Windows не может этого сделать, поэтому мне нужна RTOS и я буду тратить свое рабочее время на то, чтобы с ней разобраться".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Windows - Windows'у рознь.

ЕМНИП то была надстройка для NT которая превращала её в ОСРВ.

Правда цена вопроса была порядка нескольких килобаксов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Windows - Windows'у рознь.

ЕМНИП то была надстройка для NT которая превращала её в ОСРВ.

Правда цена вопроса была порядка нескольких килобаксов.

Да-да-да) слышал я про такие вещи. Есть еще RTX, но для меня суть вопроса от этого не меняется это будет не стандартная Windows.

Уточню: вопрос заключается в том, можно ли достичь гарантированного выделения процесорного времени в стандартных Windows (XP, 7, Server).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про время не скажу, приоритетами потоков можно управять через SetThreadPriority

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про время не скажу, приоритетами потоков можно управять через SetThreadPriority

Да, спасибо, с winAPI из сферы управления потоками я знаком. этого мало для обеспечения гарантированного времени захвата процессора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думаю, большего вам никто не даст, винда никогда не станет ОСРВ, не та у нее цель.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет нельзя гарантировать что процессу отойдет гарантированный квант времени.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с winAPI из сферы управления потоками я знаком. этого мало для обеспечения гарантированного времени захвата процессора.

Вы как-то так ставите задачу, что ответа на нее не найти. Что вам, собственно, надо сделать?

Вам надо, что бы sheduler насильно заставил уснуть готовую и активную задачу?

Нет. Win такого не сделает. Готова - работай. Нужен квант времени - используй таймеры.

 

Гарантировать то, что Ваша программа получит управление строго по истечении времени Win не сможет.

Равно как и не сможет гарантировать непрерывность работы в течении какого-то времени.

 

Ну, если не полезете в драйвера, конечно. Там сможете многое.

Но с вашей постановкой задачи виндовс перестанет быть самим собой.

Скажем так: CLI в виндовс - моветон. Из этого вытекает все. Ну... почти все.

 

P.S. Добавил: А вообще ответ на ваш вопрос либо

- "однозначно ДА" в том смысле, что Win позволяет работать и задачам с высоким приоритетом и низким одновременно.

- "однозначно НЕТ" в том смысле, что никто не выключит готовую и активную задачу если есть свободное время.

Изменено пользователем _sv_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вам надо, что бы sheduler насильно заставил уснуть готовую и активную задачу?

Нет. Win такого не сделает. Готова - работай.

То есть, Вы хотите сказать, что задача, состоящая из одного бесконечного цикла, полностью подвесит остальные процессы ?

 

Вопрос: есть ли в Windows механизмы, позволяющие гарантировать процессу процент времени владения процессором.

Конечно же, есть. И этот механизм называется вытесняющая многозадачность. Каждому процессу планировщиком гарантированно выделяется квант времени. Другой вопрос, КОГДА процесс получит этот самый квант времени - никто не знает, поэтому Windows не является РТОС. Система приоритетов в Windows достаточно убога - поэтому в каком порядке в реальности процессы будут получать управление вряд ли прогнозируемо.

 

Однако, если вопрос был о выделении какого-то определённого процента времени CPU, скажем, 10% процессу А, 5% процессу Б (адаптивное квотирование) - то таких возможностей в Win нет.

Изменено пользователем gerber

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хотите сказать, что задача ... полностью подвесит остальные процессы ?
Хочу сказать, что для вытеснения задачи должны быть причины.

Если причин нет, то и вытеснения не будет.

Виндовс даст время всем процессам в системе.

Другие ОС - совсем не факт.

 

Каждому процессу планировщиком гарантированно выделяется квант времени.

Другой вопрос, КОГДА процесс получит этот самый квант времени - никто не знает, поэтому Windows не является РТОС.

Да. Так и есть. Почти.

Виндовос не является RTOS по той причине, что часть событий регистрируется флагами, а не счетчиками.

Поэтому узнать сколько именно событий прошло - не получиться.

Причина таких решений в том, что никто не знает сколько задач будет запущено пользователем.

Если, скажем, запущено 20 задач и каждая просит по 10% времени, то сделать что-либо - сложно.

По этой причине приоритеты виртуализированы.

 

Система приоритетов в Windows достаточно убога - поэтому в каком порядке в реальности процессы будут получать управление вряд ли прогнозируемо.
Система проритетов Windows - гибка и адаптивна.

Алгоритм учитывает приоритеты задач, профиль производительности, тип ОС (сервер/рабочая станция),

активно ли приложение и еще много чего. Алгоритм меняется от версии к версии Win и установленного SP.

 

По названным причинам нет возможности установить прямую связь между приоритетом

задач(и) и процессорным временем.

 

Однако, если вопрос был о выделении какого-то определённого процента времени CPU, скажем, 10% процессу А, 5% процессу Б (адаптивное квотирование) - то таких возможностей в Win нет.
Да.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я понял, что Windows не может гарантировать фиксированного процента процессорного времени.

Всем спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...