Многопоточность в ADAM 5510( или прерывания) |
Ответить | Страница <1 4567> |
Автор | |
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 02 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 427 |
Опубликовано: 03 Май 2009 14:28 |
На всякий случай проверил - при записи в 2 файла каждую секунду за один час 20 минут получил отставание часов машины на 1.5-2 секунды. Собственно это я видел и вижу и в дос и под виндами постоянно. Сейчас посмотрел под ME и 433 celeronом. В контроллерах стоит или что-то типа этого или менее шустрое. Интересно было бы посмотреть еще под XP и CE. Даже правильную на первый взгляд теорию проверяйте сами. А про то как написанное соответствуе действительности Рихтер побухтел кое-где. Пока писал цифра уточнилась: 2 сек отставания часов за 1 час 40 минут. |
|
При экспериментах ни один чайник не пострадал
----------- Плохому системному интегратору всегда OPC сервер мешает. ______________ Пишу на C++ за еду |
|
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
|
Поток режима ядра повышает и понижает IRQL процессора, на котором он выполняется, в зависимости от того, что именно делает этот поток. Например, обработчик ловушки (или сам процессор) при прерывании повышает IRQL процессора до IRQL источника прерывания. В результате все прерывания с более низким или равным IRQL маскируются (только на этом процессоре), что не дает прерыванию с таким же или более низким IRQL помешать процессо- ру обработать текущее прерывание, Замаскированные прерывания либо об- рабатываются другим процессором, либо откладываются до понижения IRQL. Поэтому все системные компоненты, в том числе ядро и драйверы устройств, пытаются удерживать IRQL на уровне passive («пассивный*), иногда называе- мом низким уровнем, Если бы IRQL долго оставался неоправданно высоким, драйверы устройств не смогли бы оперативно реагировать на аппаратные прерывания. Уровень «clock» (часы) используется для системных часов, с помощью ко- торых ядро отслеживает время суток, измеряет и распределяет процессорное время между потоками. Уровень «'device» (устройство) применяется для задания приоритетов пре- рываний от устройств. Хотя контроллеры прерываний различают уровни приоритетов прерываний, Windows 2000 использует свою схему приоритетов прерываний, известную под названием уровни запросов прерываний (interrupt request levels, IRQL). Внут- ри ядра IRQL представляются в виде номеров от О до 31, причем больший номер соответствует прерыванию с большим приоритетом. Ядро определяет стандар- тный набор IRQL для программных прерываний, a HAL увязывает IRQL с но- мерами аппаратных прерываний. IRQL ====================================== Возможно вы не там копаете, хотя возможно имеет место заговор треклятого Microsofta супротив Вас чего конечно же нельзя полностью исключать. Хотя ИМХО эти люди забыли о многозадачности больше, чем Вы когда либо захотите узнать. Описанных вами явления я не наблюдал никогда, за исключением работы QNX на виртуальной машине Microsoft Virtual PC. Что бы переферия влияла на квантование это определенно заговор, проверять конечно необходимо, я бы начал с проверки таблиц умножения, Брадиса и Пифагора |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 02 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 427 |
|
К сожалению, программисты с которыми мы работаем постоянно делают открытия. Что то они не видели, о чем то не знают, что то видели, но не задумывались почему так. Это радует, но только когда они работают не над темами в которой работаешь сам. Сейчас забавляюсь ситуацией когда заказчики уже 2 год не собираются просто честно сесть и проверить, как на самом деле у них работает (вернее не работает) передача через RS232 порт, но что-то им никак не дает это сделать. А описанные мной явления наблюдают все пользователи Windows. Всем и всегда советую проверять. Проверка таблицы умножения простым виндовским калкулятором в свое время выявила в пентюхах ошибку в плавающей арифметике. Кстати пока смотрел еще увидел, что после перезагрузки отставание часов исчезло. Это уже другой явление и к прерываниям не имеет отношения. Второй процессор наверняка вылечит много скрытых камней. |
|
При экспериментах ни один чайник не пострадал
----------- Плохому системному интегратору всегда OPC сервер мешает. ______________ Пишу на C++ за еду |
|
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
|
А вот это уже интересно, попробуйте остановить службу "Windows Time" и еще поэксперементировать. Тем более что у Вас все под рукой. Кстати вы ничего не говроили о железе ЧушьТехнолоджи в виде HyperTreading тоже можно попридавливать.
(Хотя идея встать в две очереди к одному писсуару не лишена возможно своей извращенной привлекательности. Вот кстати прямое доказательство несовершенства виндового механизма распределения процесорного времени, это чушь подпорка в чистом виде, а выжимает до 8% Правдо в первой реализации пользователи писали друг на друга и Соломоновым решением кэш был сначала поделен поровну а потом удвоен Но народ в целом не совсем безнадежен ибо флешовый костыль к висте небыл принят вот это уже непрекрытое шарлотанство) |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 02 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 427 |
|
Да я вот призадумался. Часики и последовательный порт меня пару лет назад крепко достали - у меня в контроллере и с тем и с тем были проблемы. Что то вот нарыл. Но остался темным момент такой : для совместимости в свое время как переходили от XT к AT сделали так, что в AT при включении часики считывались из батарейных часов и с этого момента шли в ОЗУ (отсюда и приключения с отставаниями часов). Но ! для совместимости должен быть механизм, который при правке времени в часах в ОЗУ переносил бы это в батарейные часы (ведь предполагалось что будут работать программы которые работали еще на XT когда время вводилось каждый раз ручками при старте системы). И практика это подтверждала. При интенсивной работе часы отставали. Причем отставали то не только при работе а и после - т е и батарейные часы. Вот где то должен быть механизм который периодически(?) правит батарейные часы по времени которое идет в ОЗУ. Я у себя отставание часов борол тем что раз в 30 секунд брал время из батарейных часов и правил часы в озу - при этом отставания часов не было и все работало при любой интенсивности обмена с винчестером. Появление многопроцессорных машин скорее всего спасло ту ATшную архитектуру и сгладило подобный корявости. Но вот в контроллерах процы слабые, архитектура AT подобная, боюсь что там то еще долго будем огребать . И вот там то многозадачность надо смотреть с точки зрения слабеньких машин. |
|
При экспериментах ни один чайник не пострадал
----------- Плохому системному интегратору всегда OPC сервер мешает. ______________ Пишу на C++ за еду |
|
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
|
Фишка в том, что "Windows Time" вообще может не брать системный таймер для определения системного времени, взяв его единожды при загрузке системы. А так как это по сути обычный процесс с базовым приоритетом, то мы имеем то что имеем. Честно говоря я давно отказался от использования их клиента времени. Он делался для нужд домена и работает в отсутствие контроллера из рук вон плохо, а в присутствии просто плохо. Дело в том, что для домена рассинхронизация до пяти минут не критична. Подкрутить его можно из консоли, по моему команда wintm или что то созвучное, но лучше использовать NTP клиента для NT версии 4.2 он бесплатен и доступен на NTP.org весит мало работает с приоритетом реального времени (24) тоесть самый первый (после прерываний всех конечно). Самое главное к нему есть гуевый настройщик NTP Time Server Monitor, который позволяет тюнить и следить за сервисом. Вы сможете явно указать, что в отсутствии внешних источников синхронизации использовать внутренние часы ну и забудите со временем проблемы со временем Да, чуть не забыл самое главное, безжалостно пиаримый мной NTP клиент также являеться и сервером времени, реализован строго в стандарте спецификации NTP (кроссплатформенный) В то время как Microsoft реализовало свой Windows Time как водится несколько иначе
|
|
Участник Присоединился: 29 Июнь 2007 Категория: Russian Federation Online Status: Offline Публикации: 62 |
|
1. По определению много чего не должно быть. Поэтому вылизывается все в процессе. Кстати ядро у винды, в отличии от ее шела, работает относительно стабильно. И хоть оно не подходит для построения РТ систем но как ты правильно заметил ее хватает для отображения всяких красивостей. Про ST RTE ничего сказать не могу – не юзал. Как в прочем ничего не скажу и про CoDeSys. Но как в любой среде разработки есть свои ограничения. В CoDeSy, я думаю, они накладываются стандартом МЭК. Хотя в этом вопросе многое зависит и от среды. Примерно лет пять назад пришлось переносить на один ПК проект нижнего уровня написанный на Isagraf Enhanced и прект верхнего уровня написанный под скаду inellution IFix. Все работало и обменивалось данными по Modbus TCP. |
|
С уважением!
|
|
Действительный член Присоединился: 08 Март 2006 Категория: Russian Federation Online Status: Offline Публикации: 440 |
|
Если строить развитую систему управления, с монторами и сетью - то без Win-ды щас никак не обойтись ! Есть конечно специально предназначенные РТ ОС-ы (за немалые бабки) - о них говорить нечего. Windows XP SP2 - пущена для бесплатного пользования, подробности на ихнем сайте. 1. Сперва подготовить на пользовательском уровне : 2. От зависания ничо не спасет, особенно при сетевых сбоях. Софт доводиться не за один раз. При добавлении или убавлении чего-то нового заново прокручиваются испытания. 3. В крайних случаях можно задействовать и ядро - функции группы Kernrel. Но во 1-х, их простот так не вызовешь, во 2-х нужно хорошо понимать - чо собссна хочешь, и чо делаешь. Рекомендую - Руссиновича, Рихтера. Я выдал только начальный мизер, Примерный общий порядок действий, которые надо прокрутить несколько раз, подшлифовывая на каждом круге. С уважением, SAN |
|
Участник Присоединился: 29 Июнь 2007 Категория: Russian Federation Online Status: Offline Публикации: 62 |
|
Можно воспользоваться панелью оператора, винды там может и небыть. Самое интересное в том что виндовые сетевые средства нужны тогда когда нужно использовать сетевую политику, в противном случае – пофиг можно использвать и ДОС (утрирую). И дело не в богатости графических возможностей, а в том что под окна написано дофига разного софта.
Маленькое добавление по п.1. Иногда для подготовки системы может помочь BartPE. И FAT32 использовать очень опасно, можно похерить все данные. |
|
С уважением!
|
|
Действительный член Присоединился: 08 Март 2006 Категория: Russian Federation Online Status: Offline Публикации: 440 |
|
..сетевую политику.., дофига софта ..., .. BartPE ... Я не совсем понял (совсем не понял), но я веду речь про совместную работу РилТайм-ядра и Виндовой шеллы (оболочки)... С уважением, SAN |
|
Ответить | Страница <1 4567> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |