igoryushka 0 20 апреля, 2012 Опубликовано 20 апреля, 2012 · Жалоба Здравствуйте! Я недавно наблюдал демонстрацию применения технологии адаптивного квотирования в QNX. То есть возможность выделить гарантированный процент процессорного времени приложению. Для Windows нашел только возможность ограничить максимальное процессорное время, отводимое процессу (http://www.cyberguru.ru/operating-systems/windows-server2008/server2008-srm.html). Вопрос: есть ли в Windows механизмы, позволяющие гарантировать процессу процент времени владения процессором. P.S.: я понимаю, что для получения указанных возможностей существуют RTOS. Но мне надо точно знать о наличии или отсутствии вышеописанного механизма в Windows. Это нужно, чтобы с уверенностью сказать начальству: "Windows не может этого сделать, поэтому мне нужна RTOS и я буду тратить свое рабочее время на то, чтобы с ней разобраться". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 20 апреля, 2012 Опубликовано 20 апреля, 2012 · Жалоба Windows - Windows'у рознь. ЕМНИП то была надстройка для NT которая превращала её в ОСРВ. Правда цена вопроса была порядка нескольких килобаксов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igoryushka 0 20 апреля, 2012 Опубликовано 20 апреля, 2012 · Жалоба Windows - Windows'у рознь. ЕМНИП то была надстройка для NT которая превращала её в ОСРВ. Правда цена вопроса была порядка нескольких килобаксов. Да-да-да) слышал я про такие вещи. Есть еще RTX, но для меня суть вопроса от этого не меняется это будет не стандартная Windows. Уточню: вопрос заключается в том, можно ли достичь гарантированного выделения процесорного времени в стандартных Windows (XP, 7, Server). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 8 21 апреля, 2012 Опубликовано 21 апреля, 2012 · Жалоба Про время не скажу, приоритетами потоков можно управять через SetThreadPriority Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igoryushka 0 22 апреля, 2012 Опубликовано 22 апреля, 2012 · Жалоба Про время не скажу, приоритетами потоков можно управять через SetThreadPriority Да, спасибо, с winAPI из сферы управления потоками я знаком. этого мало для обеспечения гарантированного времени захвата процессора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 8 22 апреля, 2012 Опубликовано 22 апреля, 2012 · Жалоба Думаю, большего вам никто не даст, винда никогда не станет ОСРВ, не та у нее цель. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Дэм 0 22 апреля, 2012 Опубликовано 22 апреля, 2012 · Жалоба Нет нельзя гарантировать что процессу отойдет гарантированный квант времени. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sv_ 0 10 мая, 2012 Опубликовано 10 мая, 2012 (изменено) · Жалоба с winAPI из сферы управления потоками я знаком. этого мало для обеспечения гарантированного времени захвата процессора. Вы как-то так ставите задачу, что ответа на нее не найти. Что вам, собственно, надо сделать? Вам надо, что бы sheduler насильно заставил уснуть готовую и активную задачу? Нет. Win такого не сделает. Готова - работай. Нужен квант времени - используй таймеры. Гарантировать то, что Ваша программа получит управление строго по истечении времени Win не сможет. Равно как и не сможет гарантировать непрерывность работы в течении какого-то времени. Ну, если не полезете в драйвера, конечно. Там сможете многое. Но с вашей постановкой задачи виндовс перестанет быть самим собой. Скажем так: CLI в виндовс - моветон. Из этого вытекает все. Ну... почти все. P.S. Добавил: А вообще ответ на ваш вопрос либо - "однозначно ДА" в том смысле, что Win позволяет работать и задачам с высоким приоритетом и низким одновременно. - "однозначно НЕТ" в том смысле, что никто не выключит готовую и активную задачу если есть свободное время. Изменено 10 мая, 2012 пользователем _sv_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 8 10 мая, 2012 Опубликовано 10 мая, 2012 (изменено) · Жалоба Вам надо, что бы sheduler насильно заставил уснуть готовую и активную задачу? Нет. Win такого не сделает. Готова - работай. То есть, Вы хотите сказать, что задача, состоящая из одного бесконечного цикла, полностью подвесит остальные процессы ? Вопрос: есть ли в Windows механизмы, позволяющие гарантировать процессу процент времени владения процессором. Конечно же, есть. И этот механизм называется вытесняющая многозадачность. Каждому процессу планировщиком гарантированно выделяется квант времени. Другой вопрос, КОГДА процесс получит этот самый квант времени - никто не знает, поэтому Windows не является РТОС. Система приоритетов в Windows достаточно убога - поэтому в каком порядке в реальности процессы будут получать управление вряд ли прогнозируемо. Однако, если вопрос был о выделении какого-то определённого процента времени CPU, скажем, 10% процессу А, 5% процессу Б (адаптивное квотирование) - то таких возможностей в Win нет. Изменено 10 мая, 2012 пользователем gerber Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sv_ 0 10 мая, 2012 Опубликовано 10 мая, 2012 · Жалоба хотите сказать, что задача ... полностью подвесит остальные процессы ?Хочу сказать, что для вытеснения задачи должны быть причины. Если причин нет, то и вытеснения не будет. Виндовс даст время всем процессам в системе. Другие ОС - совсем не факт. Каждому процессу планировщиком гарантированно выделяется квант времени. Другой вопрос, КОГДА процесс получит этот самый квант времени - никто не знает, поэтому Windows не является РТОС. Да. Так и есть. Почти. Виндовос не является RTOS по той причине, что часть событий регистрируется флагами, а не счетчиками. Поэтому узнать сколько именно событий прошло - не получиться. Причина таких решений в том, что никто не знает сколько задач будет запущено пользователем. Если, скажем, запущено 20 задач и каждая просит по 10% времени, то сделать что-либо - сложно. По этой причине приоритеты виртуализированы. Система приоритетов в Windows достаточно убога - поэтому в каком порядке в реальности процессы будут получать управление вряд ли прогнозируемо.Система проритетов Windows - гибка и адаптивна. Алгоритм учитывает приоритеты задач, профиль производительности, тип ОС (сервер/рабочая станция), активно ли приложение и еще много чего. Алгоритм меняется от версии к версии Win и установленного SP. По названным причинам нет возможности установить прямую связь между приоритетом задач(и) и процессорным временем. Однако, если вопрос был о выделении какого-то определённого процента времени CPU, скажем, 10% процессу А, 5% процессу Б (адаптивное квотирование) - то таких возможностей в Win нет.Да. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igoryushka 0 11 мая, 2012 Опубликовано 11 мая, 2012 · Жалоба Я понял, что Windows не может гарантировать фиксированного процента процессорного времени. Всем спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться