Какой минимальный интервал времени до начала обработки прерывания внешнего устройства возможно получить на ПК(проц intel 3200ггц) Накидайте драйверок для хр который бы минимизировал данный интервал.
Schaman Несколько железячных тиков, если диспетчер первого прерывания его не размаскирует. О какой вы минимизации говорите, запрос на прерывание от железа не контролируемый. Бред.
Время от поступления сигнала запроса прерывания на процессор до начала его обработки (при условии, что само прерывание разрешено: если оно запрещено, то, понятное дело, обработка не будет начата, пока её не разрешат) зависит, по большому счёту, от трёх вещей: от режима процессора, от типа обработчика прерывания (шлюз прерывания, шлюз ловушки, шлюз задачи) и, наконец, от микроархитектурных особенностей самого процессора, т.е. от его модели. Подробно можно поискать в документации, но не уверен, что найти получится, но, исходя из здравого смысла, -- от нескольких единиц до нескольких сотен тактов (зависит от объёма информации, которую придётся сохранять и загружать при переходе на обработчик прерывания). В любом случае, это время не является строго фиксированным хотя бы потому, что в момент прихода прерывания процессор может выполнять "длинную" команду (например, деление), до завершения которой приступить к обработке прерывания невозможно.
Добавлю, разрешенные прерывания могут быть вытеснены другими эксепшнами. Поэтому будут обработаны только по завершении более приоритетных хэндлеров.
Критичные по времени обработки сигналы обрабатываются специализированными выносными модулями. Будь то приставка осциллограф или привод шагового двигателя, а ПК используется только для взаимодействия с пользователем (принять данные/показать результат). В этих модулях используются микроконтроллеры (MicroChip, Atmel и т.д.). Например, если у моего любимого PIC16F84A кварц на 4МГц, то частота командных циклов 1Мгц (1 мкс). Переход на прерывание занимает 2 команд.цикла, значит переход на обработку внешнего прерывания займёт 2 мкС (~ +1мкС - время на синхронизацию с внутренним тактом МК), и это в лучшем случае, если не требуется сохранение контекста и прерывание единственное разрешённое. Если нет то + обход флагов прерываний с целью найти виновника. имхо, для ПК задержку можно определить только эмпирическим путём и на разных машинах она будет разной.
Максимально возможную задержку можно определить точно, имея необходимую документацию, но она будет различаться в зависимости от чипсета и процессора (как минимум). С микроконтроллерами, особенно простыми (типа упомянутого ПИКа или 8-разрядных АТмег), всё проще и понятней -- в немалой степени благодаря тому, что там отсутствуют побочные факторы в виде внешней памяти, кэша и т.п. Правда, зачастую даже максимальное время реакции ПК на прерывание будет меньше, чем у означенных микроконтроллеров, но связано это с намного большей частотой (и производительностью) ПКшных процов.
medstrax1 Играет, играет. Если ядро одинаково (например, Core 2), а на смену контекста требуется 50 тактов, какой проц быстрей при прочих равных его выполнит -- на 3,2 или на 2,33 ГГц?
Мм, возможно мы говорим о разных вещах. Я имел в виду саму реакцию проца на внешний интеррапт. Независимо от возможности выполнить его обработку, проц "помнит" (pending) о прерывании, и начинает его хэндлить сразу по завершении текущей инструкции,если нет более приоритетных событий. Сам вход в хэндлер, понятно, может занять любое время в зависимости от частоты. Но сам факт принятия процом сигнала прерывания зависит только от частоты шины
Ну так обычно под временем реакции на прерывание понимают время от момента возникновения запроса до начала выборки первой инструкции обработчика этого прерывания.
вот теперь кое что проясняется, спсбо за ценную инфу! А плз еще нескромный вопрос новичка: Можно ли с помощью например драйвера заставить проц в ядерном режиме ждать прерывание, ну а по команде юзера вернуться где был (хр)
В принципе, можно, но это нарушит нормальную работу системы (если я правильно понял вопрос, конечно).
Нарисуйте пжста такой драйвер для примера, с чего начать не представляю? Неужели всю винду придется учить? А есть совместимые и виндой ОС реального времени?
По-настоящему -- нету. А учить придётся не всю, но очень изрядную часть. Нельзя писать компоненты системы и не поминать, как система работает.