-
- если речь об инверсии, то, как пример... aoreh(549 знак., 26.11.2013 17:38)
- Это не залочка. Залочка (взаимоблокировка, deadlock) от приоритетов вообще не зависит, это когда A ждёт B, а B ждёт A. Можно ещё ввести в дело C, D... но сути уже не меняет. Возникает обычно при программировании из головы, без этапа fk0(70 знак., 26.11.2013 17:59, ссылка)
- я ниже на это ответил, если _специально_ постараться, то изгадить можно что угодно - ыыыыыыы(26.11.2013 18:03, )
- ну так посмотрите, что означает термин, три названия которого тут приведены: для этого примера это значит, что задача 1 получает приоритет равный задаче 3 пока не отдаст семафор - ыыыыыыы(26.11.2013 17:47, )
- А вот как вы выразились "залочка" - это когда задача 1 захватила ресурс, в этот меомент вытесняется задачей 2, которая хватает другой ресурс и входит в ожидание ресурса блокированного 1-й, в этот момент управление возвращается 1-й задаче и она aoreh(143 знак., 26.11.2013 17:56)
- еще на 0 делить можно, ну или с железкой писать в управляющие регистры случайные числа (хотя ММE от этого помагает) - есть таймауты, если думать лень/ну или слишком сложно и нужно патчить а не думать, ну а вообще есть обычно некоторый датафлоу из ыыыыыыы(79 знак., 26.11.2013 18:07, )
- На ноль делить НУЖНО, если числа не целочисленные. А если у вас не делится на ноль -- нужно сжечь компилятор и его авторов. fk0(320 знак., 26.11.2013 18:22)
- уважаемый, вы суть проблемы понимаете или нет? если вы разрабатываете свой новый девайс с 2-3-я задачами, то все отлично, если вам необходимо, н-р, поддерживать чей-то код с 25-30 потоками, который +- отлажен и много лет работает, то как минимум aoreh(339 знак., 26.11.2013 18:13)
- да вот как раз поддерживается, в примере с FreeRTOS поддерживается старый код, который с жестким реалтаймом и большими вычислительными затратами, при этом все еще обвешано перделками/свистелками типа TCP/IP, дисков и т.п. - ыыыыыыы(26.11.2013 18:21, )
- Во FreeRTOS эта проблема решается наследованием приоритетов, это значит, что разработчики FreeRTOS понимали и знали о существовании такой вещи, как инверсия приоритетов, поэтому и учли - aoreh(26.11.2013 18:32)
- да вот как раз поддерживается, в примере с FreeRTOS поддерживается старый код, который с жестким реалтаймом и большими вычислительными затратами, при этом все еще обвешано перделками/свистелками типа TCP/IP, дисков и т.п. - ыыыыыыы(26.11.2013 18:21, )
- еще на 0 делить можно, ну или с железкой писать в управляющие регистры случайные числа (хотя ММE от этого помагает) - есть таймауты, если думать лень/ну или слишком сложно и нужно патчить а не думать, ну а вообще есть обычно некоторый датафлоу из ыыыыыыы(79 знак., 26.11.2013 18:07, )
- Нет, термин значит, что задача с высоким приоритетом (3) ждет завершения задачи с более низким (2), хотя она даже и не блокирует ресурс нужный 3 - налицо поднятие приоритета задачи 2 выше задачи 3. Инверсия - общеупотребительный термин - aoreh(26.11.2013 17:53)
- А вот как раз если поднять приоритет задачи 1 до уровня задачи 3 - вопрос решится сам собой - aoreh(26.11.2013 17:59)
- ну а как Вы думаете? что rtos-ы пишут идиоты, а интелектуалы на сахаре флудят :))) - ыыыыыыы(26.11.2013 18:02, )
- я думаю, что у вас проблемы с терминологией - остальное сильно зависит от конкретной ос - aoreh(26.11.2013 18:03)
- ну а как Вы думаете? что rtos-ы пишут идиоты, а интелектуалы на сахаре флудят :))) - ыыыыыыы(26.11.2013 18:02, )
- предполагаем, что у нас rtos не кооперативная, то есть срабатывает висящий на таймере шедулер - войдет он в задаче 2 а выйдет в 1 и будет отдавать ей управление до тех пор пока она не отдаст семафор - так понятнее? - ыыыыыыы(26.11.2013 17:58, )
- на самом деле шедулер сработает при вызове семафора в задаче 3, то есть в 2 вообще управление не попадет, но с таймером вроде понятнее - ыыыыыыы(26.11.2013 18:00, )
- щедулер сработает как только понадобится активность в 3 выполнение додет до заблокированного ресурса и задача отправится в отстойник ожидать высвобождения, а выйдет из щедулера в след. по приоритету -в 2. aoreh(116 знак., 26.11.2013 18:02)
- ну не бывает такого - приведите пример несамопальной ртос где НЕ так. разве что в uC/OS :) да и то я ее лет 20 назад юзал, может уже добавили - ыыыыыыы(26.11.2013 18:16, )
- Читал книгу Jean J. Labrosse (автор uC/OS) в момент существования первых версий -- там проблема инверсии приоритетов рассматривалась и её решения тоже. - fk0(26.11.2013 18:27)
- да вот я тоже читал (давно уже) и по-моему решения описывались, но в коде этого не было. но в этом я не уверен - ыыыыыыы(26.11.2013 18:33, )
- а книжка дельная, как введение с 0. не смотря даже на то, что автор реднек :) - ыыыыыыы(26.11.2013 18:35, )
- как введение с 0 неплох мануал к embos. с картинками:) - Vit(26.11.2013 18:37)
- а книжка дельная, как введение с 0. не смотря даже на то, что автор реднек :) - ыыыыыыы(26.11.2013 18:35, )
- да вот я тоже читал (давно уже) и по-моему решения описывались, но в коде этого не было. но в этом я не уверен - ыыыыыыы(26.11.2013 18:33, )
- Читал книгу Jean J. Labrosse (автор uC/OS) в момент существования первых версий -- там проблема инверсии приоритетов рассматривалась и её решения тоже. - fk0(26.11.2013 18:27)
- ну не бывает такого - приведите пример несамопальной ртос где НЕ так. разве что в uC/OS :) да и то я ее лет 20 назад юзал, может уже добавили - ыыыыыыы(26.11.2013 18:16, )
- щедулер сработает как только понадобится активность в 3 выполнение додет до заблокированного ресурса и задача отправится в отстойник ожидать высвобождения, а выйдет из щедулера в след. по приоритету -в 2. aoreh(116 знак., 26.11.2013 18:02)
- с каких это делов если у задачи 2 приоритет более высокий? - aoreh(26.11.2013 18:00)
- на самом деле шедулер сработает при вызове семафора в задаче 3, то есть в 2 вообще управление не попадет, но с таймером вроде понятнее - ыыыыыыы(26.11.2013 18:00, )
- А вот как раз если поднять приоритет задачи 1 до уровня задачи 3 - вопрос решится сам собой - aoreh(26.11.2013 17:59)
- А вот как вы выразились "залочка" - это когда задача 1 захватила ресурс, в этот меомент вытесняется задачей 2, которая хватает другой ресурс и входит в ожидание ресурса блокированного 1-й, в этот момент управление возвращается 1-й задаче и она aoreh(143 знак., 26.11.2013 17:56)
- Это не залочка. Залочка (взаимоблокировка, deadlock) от приоритетов вообще не зависит, это когда A ждёт B, а B ждёт A. Можно ещё ввести в дело C, D... но сути уже не меняет. Возникает обычно при программировании из головы, без этапа fk0(70 знак., 26.11.2013 17:59, ссылка)
- если речь об инверсии, то, как пример... aoreh(549 знак., 26.11.2013 17:38)