реал тайм осы |
Ответить | Страница <1 2728293031 36> |
Автор | |
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
Опубликовано: 25 Ноябрь 2003 14:43 |
Не "показывать не хочет" - а "не находит уместным это делать второпях и кой-как"... Но в самом скором времени: - проделаю на различных OS (хотя бы минимальном наборе); - допишу текстовые разъяснения того, что написано и происходит; - найду URL, где это сделать более уместно... ... и выложу - как и всегда это делаю. Но я там столько исписал, и ... "на пальцах", и мимикой - уже столько рассказал в самых деталях, что воспроизвести это, если совсем невмоготу - дело плёвое... |
|
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|
Такой механизм реализован в одной из (как минимум) OS - если я не путаю: Sun Solaris. Но: - в качестве альтернативного из 2-х, 2-м является наследование приоритетов; - by default является наследование приоритетов; - ... об этом, 1-м - достаточно много оговорок в документации, что ... "что-то с ним не того" и могут быть сюрпризы. |
|
Участник Присоединился: 31 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 52 |
|
Еще кое что, по поводу RMS, раз это интересует.
В журнале RealTime Magazine была статья J. Zalewski, What Every Engineer Needs to Know About Rate-Monotonic Scheduling: A Tutorial, Real-Time Magazine, S. 6-24, 1/ 1995 В которой меньше математики но больше практических рекомендаций. :) Нашел я ее здесь http://www-md.e-technik.uni-rostock.de/ma/gol/ebsys.htm не пугайтесь не английскому языку страницы, ссылку на статью там найти легко. Даю специально всю страницу, т.к. для себя там нашел еще кое что интерестное :) |
|
Draggan
Kharkov, QNX Seminars |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 08 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 178 |
|
Воспроизвести-то дело плевое, но договорится потом об адекватности полученных результатов.... |
|
SY,
EK |
|
Участник Присоединился: 31 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 52 |
|
To: evgen
Ну суть проблемы инверсии приоритетов вы наверное знаете, она хорошо описана в знакомой вам статье Сергея Сорокина в журнале СТА. Примерно также, если опустить лирические отступления о паровом катке и числе Пи описал эту проблему Олег, и если Вы считаете ее не серьезной, то Вы сильно заблуждаетесь. Такое отношение погубило реал тайм расширения тогоже, так нелюбимого вами NT. Это проблема, практически на поддающаяся тестированию и исходники в ее понимании Вам ничем не помогут. Фактически все сводится к следующему. Для защиты данных от совместного изменения и искажения их надо блокировать. Если поток, заблокировавший данные вытеснен более приоритетным, данные так и остаются заблокированными. Это в свою очередь, блокирует высокоприоритетный поток нуждающийся в доступе к этим данным. Ну а если управление после этого не возвращается к низкоприоритетномк потоку, дабы он отпустил заблокированный ресурс имеем большую проблему. Фактически все упирается в механизм блокировки данных (ресурса). В этом контексте термин наследование приоритета конечно идиотский. Он только все путает и ничего не разясняет. Кто наследует, от кого и главное зачем? На практике же обстоит все следующим образом. При блокировании высокоприоритетного потока на доступе к некоторому блокированному ресурсу перед системой ставиться задача разблокирования этого ресурса и выполнения высокоприоритетного потока (deadline то приближается). Но как это сделать не потеряв данных? Просто вырвать из цепких лапок ресурс у низкоприоритетного потока нельзя. Значит он должен доделать максимально быстро свои дела, отпустить ресурс, после чего его можно спокойно задавить и пустить высокоприоритетный поток. А чтобы этому процессу никто не помешал для этого низкоприоритетному потоку надо дать (на время критической секции) высокий приоритет. ТАк что в какой-то степени некое странное наследование приоритета присутствует но в какой-то извращенной форме. Вообще, по моему, термины, образованные из подстрочного перевода с английского это какой-то саботаж. Ну думаю я ничего не напутал. Как я уже писал это не единственный метод борьбы с инверсией, хотя возможно на сей день смый проверенный. Или я чего не знаю (опасное это слово - самый). Но наследование тем не менее, не решает всех проблем инверсии, описанный мной случай с несколькими потоками и блокировками - это опасность о которой надо помнить и в ОС где есть наследование приоритетов, а опоздание в вашей системе приведет не к тому, что очередь возле банкомата соберется, а к тому что паровой каток взорвется :) |
|
Draggan
Kharkov, QNX Seminars |
|
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|
to ALL - кого это может заинтересовать: - как понять что там выведено? - есть 3 потока: "0", "1", "2" их приоритеты "0" < "1" < "2", и время запуска "0" < "1" < "2" с малым запаздыванием. - "0" и "2" - могут блокироваться на объекте синхронизацмм... - каждый 10 раз выводит свой идентификатор, чтобы видеть динамику... Тогда вывод: 222222222211111111110000000000 - показывает "естественный" порядок выполнения согласно приоритетам. 111111111100000000002222222222 - показывает инверсию: самый приоритетный поток 2 ждёт всех. 000000000022222222221111111111 - показывает наследование: низкоприоритетный поток "0" получает ("за то", что он захватил ресурс "2") динамически приоритет "2", оттесняет "1", проскакивает и освобождает критический ресурс для "2". |
|
Участник Присоединился: 31 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 52 |
|
Чем мне понравился механизм Priority Ceiling Protocol
так это тем, что в ОС, где нет наследования приоритетов и защиты от инверсии, но приоритет потока можно менять в процессе его исполнения, этот протокол может быть реализован самим разработчиком. И таким образом возможность блокирования ресурса и потока его захватившего более приоритетым потоком, которому самому этот ресурс нужен исключается, хотя это и требует внимания и аккуратности. |
|
Draggan
Kharkov, QNX Seminars |
|
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|
Нет, IMHO, здесь дело с терминологией гораздо лучше, чем с "реальное время": "инверсия приоритетов" - такой, нейтральный (не подсказывающий механизмов "почему это призошло"), термин, описывающий виденье со стороны потребителя: есть несколько потоков, я должен ожидать, что активизируется N-й, c наивысшим приоритетом, а активизировался... M-й, который, может, даже не 2-й сверху... "наследование приоритетов" - тоже очень точно, в OS c обменом сообщениями (клиент-серверными) - он на 100% соответствует происходяшему: - клиент, запрашивая системный вызов, отправляет сообщение; - сервис, осуществляющий вызов, получив сообщение, выполняет его на приоритете запросившего клиента (наследует). В моноядерных OS (которых большинство), тоже соответствует: - поток захватил pthread_mutex_lock мютекс (или condvar, или...); - примечательная особенность мютекс - что он имеет "владельца" (захватившего его), что принципиально отличается, например, для семафора (но это - уже другая песня)... - т.е. пара захваченный мютекст - его владелец - это неделимая связь, и выполняется под приоритетом владельца... - если на мютексе в это время блокируется (pthread_mutex_lock) более приоритетный поток, то мютекс наследует (и его текущий владелец) этот новый приоритет (ожидающего в очереди), и владелец далее выполняется под наследованым приоритетом... - после освобождения мютекса (pthread_mutex_unlock), поток его владельца разрывает связь мютекс-поток, и возвращается к исполнению на своём статическом приоритете. По-моему, термин очень точно описывает картину происходящего, другой, точнее, и не придумаешь. |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 08 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 178 |
|
В нашей системе чтоб не взорвалось согласно уставу, ГОСТам и здравому смыслу есть предохранительные клапана, плавкие предохранители и БОЛЬШАЯ КРАСНАЯ КНОПКА. ЗЫ: остальное будем читать внимательнее в более спокойной обстановке. |
|
SY,
EK |
|
Участник Присоединился: 31 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 52 |
|
Olej, по поводу мютексов согласен. Но вот если вы просто говорите, что в такой-то системе инверсия приоритетов решена методом их наследования, то первое, что приходит в голову, это переход приоритета непосредственно от потока к потоку. В принципе так и происходи, посредством объекта синхронизации и системы. Но это далеко не прозрачно, о чем я и сказал.
|
|
Draggan
Kharkov, QNX Seminars |
|
Ответить | Страница <1 2728293031 36> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |