avalex
Junior Member / Новичок
Участник № / Member № 874
отправлено / posted
При тестировании созданного нами драйвера типа КОНТР_2, реализующего нормальное управление передатчиком при связи через последовательный порт, мы столкнулись с одной проблемой.
Для корректного управления передатчиком необходимо, чтобы функция WriteMedia при выполнении ничем не прерывалась (время ее выполнения - не более 10 мс). Однако мы заметили, что ее периодически прерывает TraceMode, по всей видимости обращаясь к файлу подкачки, что особенно заметно в Windows 98. Это приводит к частым сбоям при обмене данными.
Возможно ли изменение принципа вызова драйвера в TraceMode, чтобы исключить эту проблему ? Если нет, то каким образом ее решить, не прибегая к увеличению мощности компьютера ?
Сообщения / Posts 5 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
Трейс Моуд никогда не обращается к файлам подкачки. Это делает сама ОС, работающая в многозадачном режиме, по своим алгоритмам. В одно-процессорной среде только задачи с критическим приоритетом могут "не прерываться". Однако, механизм расстановки приоритетов, в основном, определяется системой, и обращаться с ним надо очень осторожно. В W'98 этот механизм вообще трудно доступен пользователю. Следует писать программу так, чтобы она учитывала возможность системных прерываний, чтобы это было для нее некритично.
Необходимо обратить внимание еще на один аспект, уже имеющий отношение к Трейс Моуд. Согласно спецификации Трейс Моуд МРВ, вызвав функцию драйвера MEDIA, приостанавливает свой цикл обработки базы каналов и поддержки внешних интерфейсов до получения ответа от драйвера. Задержка каждого ответа на 10 мс приведет к соответствующему удлинению цикла обработки базы каналов. Если таких обращений в цикле, например, 100, то цикл удлинится на 1 секунду, что может оказаться значимым для динамических параметров контроля и управления. Корректный код драйвера должен это учитывать.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
avalex
Junior Member / Новичок
Участник № / Member № 874
отправлено / posted
>>> Трейс Моуд никогда не обращается к файлам подкачки. Естественно, сам TraceMode к файлу подкачки непосредственно не обращается. Однако он, как и любая программа, работает с памятью, а значит, может заставлять ОС обращаться лишний раз и к файлу подкачки.
>>>Следует писать программу так, чтобы она >>>учитывала возможность системных прерываний, >>>чтобы это было для нее некритично. А как прикажете сделать программу "некритичной" к длительным системным прерываниям, когда передатчик должен запрещаться немедленно после его освобождения, чтобы не потерять ответ от контроллера? А достаточно длинные системные прерывания мешают своевременно отследить освобождение передатчика.
Вероятно, Вы просто не сталкивались с этой проблемой, ведь в TraceMode до сих пор какой-то причине управление передатчиком реализованно некорректно.
>>>Задержка каждого ответа на 10 мс приведет к >>>соответствующему удлинению цикла обработки >>>базы каналов. А как задержка может быть меньше, если передача кадра из более 12 байт данных на скорости 9600 bps занимает более 10 мс ?
Сообщения / Posts 5 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
1. Cам МРВ TraceMode, как и любая программа, заказывает ресурсы памяти у ОС, а уже она сама организует эти ресурсы, в том числе и выделение виртуальных ресурсов. Только ОС решает все вопросы распределения и управления памятью.
2. Так именно стремясь к минимизации динамических потерь, мы и вынуждены были выбрать тот механизм управления приемо-передатчиком, который Вы называте "некорректным". А Ваша попытка обойти это ограничение с одной стороны натыкается на то же ограничение, только с другой стороны.
Вопрос этот сугубо специальный, системный, требует серьезного разговора на уровне программистов и кроме нас с Вами, судя по всему, интереса ни у кого не вызывает. Я закрываю эту тему и предлагаю Вам обращаться по известному Вам адресу непосредственно.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |