Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Распределение ресурсов процессора в Windows
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
Игорь_M
Здравствуйте!

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

P.S.: я понимаю, что для получения указанных возможностей существуют RTOS. Но мне надо точно знать о наличии или отсутствии вышеописанного механизма в Windows. Это нужно, чтобы с уверенностью сказать начальству: "Windows не может этого сделать, поэтому мне нужна RTOS и я буду тратить свое рабочее время на то, чтобы с ней разобраться".
demiurg_spb
Windows - Windows'у рознь.
ЕМНИП то была надстройка для NT которая превращала её в ОСРВ.
Правда цена вопроса была порядка нескольких килобаксов.
Игорь_M
QUOTE (demiurg_spb @ Apr 20 2012, 08:01) *
Windows - Windows'у рознь.
ЕМНИП то была надстройка для NT которая превращала её в ОСРВ.
Правда цена вопроса была порядка нескольких килобаксов.

Да-да-да) слышал я про такие вещи. Есть еще RTX, но для меня суть вопроса от этого не меняется это будет не стандартная Windows.
Уточню: вопрос заключается в том, можно ли достичь гарантированного выделения процесорного времени в стандартных Windows (XP, 7, Server).
V_G
Про время не скажу, приоритетами потоков можно управять через SetThreadPriority
Игорь_M
QUOTE (V_G @ Apr 21 2012, 03:50) *
Про время не скажу, приоритетами потоков можно управять через SetThreadPriority

Да, спасибо, с winAPI из сферы управления потоками я знаком. этого мало для обеспечения гарантированного времени захвата процессора.
V_G
Думаю, большего вам никто не даст, винда никогда не станет ОСРВ, не та у нее цель.
Дэм
Нет нельзя гарантировать что процессу отойдет гарантированный квант времени.
_sv_
Цитата(Игорь_M @ Apr 22 2012, 08:49) *
с winAPI из сферы управления потоками я знаком. этого мало для обеспечения гарантированного времени захвата процессора.

Вы как-то так ставите задачу, что ответа на нее не найти. Что вам, собственно, надо сделать?
Вам надо, что бы sheduler насильно заставил уснуть готовую и активную задачу?
Нет. Win такого не сделает. Готова - работай. Нужен квант времени - используй таймеры.

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

Ну, если не полезете в драйвера, конечно. Там сможете многое.
Но с вашей постановкой задачи виндовс перестанет быть самим собой.
Скажем так: CLI в виндовс - моветон. Из этого вытекает все. Ну... почти все.

P.S. Добавил: А вообще ответ на ваш вопрос либо
- "однозначно ДА" в том смысле, что Win позволяет работать и задачам с высоким приоритетом и низким одновременно.
- "однозначно НЕТ" в том смысле, что никто не выключит готовую и активную задачу если есть свободное время.
gerber
Цитата(_sv_ @ May 10 2012, 11:12) *
Вам надо, что бы sheduler насильно заставил уснуть готовую и активную задачу?
Нет. Win такого не сделает. Готова - работай.

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

Цитата(Игорь_M @ Apr 20 2012, 08:56) *
Вопрос: есть ли в Windows механизмы, позволяющие гарантировать процессу процент времени владения процессором.

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

Однако, если вопрос был о выделении какого-то определённого процента времени CPU, скажем, 10% процессу А, 5% процессу Б (адаптивное квотирование) - то таких возможностей в Win нет.
_sv_
Цитата(gerber @ May 10 2012, 10:47) *
хотите сказать, что задача ... полностью подвесит остальные процессы ?
Хочу сказать, что для вытеснения задачи должны быть причины.
Если причин нет, то и вытеснения не будет.
Виндовс даст время всем процессам в системе.
Другие ОС - совсем не факт.

Цитата(gerber @ May 10 2012, 10:47) *
Каждому процессу планировщиком гарантированно выделяется квант времени.
Другой вопрос, КОГДА процесс получит этот самый квант времени - никто не знает, поэтому Windows не является РТОС.
Да. Так и есть. Почти.
Виндовос не является RTOS по той причине, что часть событий регистрируется флагами, а не счетчиками.
Поэтому узнать сколько именно событий прошло - не получиться.
Причина таких решений в том, что никто не знает сколько задач будет запущено пользователем.
Если, скажем, запущено 20 задач и каждая просит по 10% времени, то сделать что-либо - сложно.
По этой причине приоритеты виртуализированы.

Цитата(gerber @ May 10 2012, 10:47) *
Система приоритетов в Windows достаточно убога - поэтому в каком порядке в реальности процессы будут получать управление вряд ли прогнозируемо.
Система проритетов Windows - гибка и адаптивна.
Алгоритм учитывает приоритеты задач, профиль производительности, тип ОС (сервер/рабочая станция),
активно ли приложение и еще много чего. Алгоритм меняется от версии к версии Win и установленного SP.

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

Цитата(gerber @ May 10 2012, 10:47) *
Однако, если вопрос был о выделении какого-то определённого процента времени CPU, скажем, 10% процессу А, 5% процессу Б (адаптивное квотирование) - то таких возможностей в Win нет.
Да.
Игорь_M
Я понял, что Windows не может гарантировать фиксированного процента процессорного времени.
Всем спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.