-
- Интересно, почему такая хрень в ТНКернеле: функция tn_sys_enter_critical() запрещает все прерывания! ASDFS(52 знак., 05.03.2011 18:38)
- Да просто перепишите реализацию критической секции и всё. - =AlexD=(10.03.2011 19:13)
- Иссесно. - ASDFS(10.03.2011 19:26)
- А что нужно? какие другие варианты организации критических секций бывают? - Vit(10.03.2011 04:41)
- Вообще то у всех другая организация: запрещаются только прерывания в которых могут вызываться критические секции. Прерывания которые обслуживают не-ОС ресурсы обычно не запрещают. ASDFS(272 знак., 10.03.2011 12:47)
- У всех??? Что Вы называете критическими секциями? Остального вааще не понял. Vit(268 знак., 10.03.2011 13:27)
- Атомарность на уровне команд нужна довольно редко - WDT там сбросить у некоторых процессоров и т.п. AD(223 знак., 10.03.2011 14:11)
- не сохранность, а атомарность обращения. да, существуют другие методы, но они применимы не во всех случаях. к сожалению. - Vit(10.03.2011 18:30)
- Сохранность - это цель, а атомарность обращения (в смысле непрерываемости потока команд) - всего лишь способ. AD(67 знак., 10.03.2011 19:13)
- по второму пункту согласен - Vit(10.03.2011 19:45)
- Сохранность - это цель, а атомарность обращения (в смысле непрерываемости потока команд) - всего лишь способ. AD(67 знак., 10.03.2011 19:13)
- не сохранность, а атомарность обращения. да, существуют другие методы, но они применимы не во всех случаях. к сожалению. - Vit(10.03.2011 18:30)
- Критическая секция ОС - кусок кода ОС влияющий на порядок переключения задач и обмен данными между ними. ASDFS(489 знак., 10.03.2011 13:40)
- Атомарность - главная цель. Например считывание таймера или быстрого АЦП. Так что не надо... - Михаил Е.(10.03.2011 14:19)
- Мы вообще то про ОС. - ASDFS(10.03.2011 14:26)
- И я про нее. - Михаил Е.(10.03.2011 15:34)
- А при чем тут АЦП и считывание таймера? - ASDFS(10.03.2011 15:45)
- При том, что в задачах иногда бывает нужно. Вы же говорите о предназначении критической секции? Ее предназначение - атомарность. Запрет всех прерываний. - Михаил Е.(10.03.2011 15:56, ссылка)
- Как это не говорю. Очень даже говорю - для нужд ОС. ASDFS(390 знак., 10.03.2011 16:22)
- У меня большое подозрение что под системными подразумеваются именно ВСЕ прерывания (я с пиками не работал). А делать куски программы неподконтрольные ОС на мой взгляд безграмотно. - Михаил Е.(10.03.2011 17:08)
- Безграмотно - это гробить время реакции на прерывание по религиозным соображениям. ASDFS(153 знак., 10.03.2011 17:48)
- Нет, только часть. AD(456 знак., 10.03.2011 17:32)
- Да, тут я тормознул. - Михаил Е.(10.03.2011 18:59)
- У меня большое подозрение что под системными подразумеваются именно ВСЕ прерывания (я с пиками не работал). А делать куски программы неподконтрольные ОС на мой взгляд безграмотно. - Михаил Е.(10.03.2011 17:08)
- Как это не говорю. Очень даже говорю - для нужд ОС. ASDFS(390 знак., 10.03.2011 16:22)
- При том, что в задачах иногда бывает нужно. Вы же говорите о предназначении критической секции? Ее предназначение - атомарность. Запрет всех прерываний. - Михаил Е.(10.03.2011 15:56, ссылка)
- А при чем тут АЦП и считывание таймера? - ASDFS(10.03.2011 15:45)
- И я про нее. - Михаил Е.(10.03.2011 15:34)
- Мы вообще то про ОС. - ASDFS(10.03.2011 14:26)
- А какие вы оси видели до этого? Запрещение всех прерываний - самый правильный метод - Alex B.(10.03.2011 13:58)
- Это метод простой а не правильный. Впрочем, это уже религия. Меня все равно интересует почему в других портах ТНКернел НЕ запрещает все прерывания, а тут начал? В чем причина. - ASDFS(10.03.2011 14:29)
- Странно. А что делает это? Vit(151 знак., 10.03.2011 16:14)
- Не знаю. Расскажите что делает #define tn_disable_interrupt() tn_save_status_reg = tn_cpu_save_sr() - ASDFS(10.03.2011 16:39)
- tn_save_status_reg = tn_cpu_save_sr() сохраняет регистр статуса в tn_save_status_reg и запрещает прерывания. Vit(570 знак., 10.03.2011 17:04)
- Еще раз: если в конкретном релизе ОС критическая секция ОС запрещает все прерывания - этому должно быть объяснение. Какое? - ASDFS(10.03.2011 17:53)
- наоборот - если вдруг в критической секции не запрещаются все прерывания, то для этого должно быть основание. - Vit(10.03.2011 18:21)
- Очень простое: только одно конкретное прерывание (переключение задач по таймеру) может воспользоваться неподготовленными данными состояния ОС. ASDFS(702 знак., 10.03.2011 18:50)
- "Если же нужна критическая секция с конкретным прерыванием под конкретную юзерскую задачу" - этого мне пока не понять, извините. Vit(454 знак., 10.03.2011 19:37)
- Мы друг друга вообще плохо понимаем. Несовместимость какая то, факт. ASDFS(55 знак., 10.03.2011 20:18)
- "Если же нужна критическая секция с конкретным прерыванием под конкретную юзерскую задачу" - этого мне пока не понять, извините. Vit(454 знак., 10.03.2011 19:37)
- Очень простое: только одно конкретное прерывание (переключение задач по таймеру) может воспользоваться неподготовленными данными состояния ОС. ASDFS(702 знак., 10.03.2011 18:50)
- наоборот - если вдруг в критической секции не запрещаются все прерывания, то для этого должно быть основание. - Vit(10.03.2011 18:21)
- Еще раз: если в конкретном релизе ОС критическая секция ОС запрещает все прерывания - этому должно быть объяснение. Какое? - ASDFS(10.03.2011 17:53)
- tn_save_status_reg = tn_cpu_save_sr() сохраняет регистр статуса в tn_save_status_reg и запрещает прерывания. Vit(570 знак., 10.03.2011 17:04)
- Не знаю. Расскажите что делает #define tn_disable_interrupt() tn_save_status_reg = tn_cpu_save_sr() - ASDFS(10.03.2011 16:39)
- Странно. А что делает это? Vit(151 знак., 10.03.2011 16:14)
- Это метод простой а не правильный. Впрочем, это уже религия. Меня все равно интересует почему в других портах ТНКернел НЕ запрещает все прерывания, а тут начал? В чем причина. - ASDFS(10.03.2011 14:29)
- Дайте почитать чего такого, а то меня гагл другому учит - Vit(10.03.2011 13:58)
- Атомарность - главная цель. Например считывание таймера или быстрого АЦП. Так что не надо... - Михаил Е.(10.03.2011 14:19)
- Атомарность на уровне команд нужна довольно редко - WDT там сбросить у некоторых процессоров и т.п. AD(223 знак., 10.03.2011 14:11)
- У всех??? Что Вы называете критическими секциями? Остального вааще не понял. Vit(268 знак., 10.03.2011 13:27)
- в pic24 и dspic Алексом сделано так, чтобы критическая секция не запрещала несистемные (выше уровня 1) прерывания - vitalka(10.03.2011 10:01)
- т.е. критическую секцию можно прервать? ИМХО, даже если такое и нужно, то название этому должно быть другое. - Vit(10.03.2011 10:11)
- ИМХО для RTOS критическая секция - это часть кода, в которой не может произойти вытеснение. Alex B.(508 знак., 10.03.2011 10:38)
- А мне нравится как сделано в 24-м. Есть задачи(процессы) которые нельзя задерживать ни на тик. Так вот на 24-м эти задачи можно решить abivan(283 знак., 10.03.2011 16:52)
- Ах чем это плохо?? Да у меня до сих пор твой прибор лежит =) В котором системные прерывания были приоритета != 1 =))))) - Alex B.(10.03.2011 18:25)
- тоже наступил один раз на эти грабли, потом запомнил :) просто интересно само различие vitalka(237 знак., 10.03.2011 22:06)
- Ах чем это плохо?? Да у меня до сих пор твой прибор лежит =) В котором системные прерывания были приоритета != 1 =))))) - Alex B.(10.03.2011 18:25)
- ИМХО, в критической секции любые операции должны выполняться атомарно - остальное наносное. Критические секции применяются и без вытесняющих RTOS. Vit(142 знак., 10.03.2011 11:39 - 11:44)
- Критическая секция с точки зрения ОС это такой типа глобальный мутекс, который запрещает изменения в структурах данных ОС со стороны других задач и прерываний. Т.е. атомарность структуры данных ОС, а не любых данных вообще. - =AlexD=(10.03.2011 14:38)
- Простите, но кто эту секцию вызывает? Системный поток при разрешенных в это время обработчиках прерываний? - Vit(10.03.2011 16:02)
- Не понял вопроса. Что есть системный поток? Критическая секция выполняется в одной из задач. Задача критической секции - обеспечить неизменность структур ОС со стороны внешних, по отношении к задаче ресурсов. Впрочем я повторяюсь. Если =AlexD=(75 знак., 10.03.2011 19:12)
- поток - последовательность команд, в данном случае при выполнении системной задачи. Vit(617 знак., 10.03.2011 20:00)
- Терминология у тебя конечно того, но в целом ты думаешь в правильном направлении, хотя вложенные прерывания тут не при чём. Запрещаются те прерывания, которые могут выполнить "системный код", не более но и не менее. - =AlexD=(11.03.2011 07:58)
- типо в камнях, где нет SWI, делаем их руками, а где есть - забываем и опять делаем руками:) Vit(2028 знак., 11.03.2011 10:35)
- Терминология у тебя конечно того, но в целом ты думаешь в правильном направлении, хотя вложенные прерывания тут не при чём. Запрещаются те прерывания, которые могут выполнить "системный код", не более но и не менее. - =AlexD=(11.03.2011 07:58)
- поток - последовательность команд, в данном случае при выполнении системной задачи. Vit(617 знак., 10.03.2011 20:00)
- Не понял вопроса. Что есть системный поток? Критическая секция выполняется в одной из задач. Задача критической секции - обеспечить неизменность структур ОС со стороны внешних, по отношении к задаче ресурсов. Впрочем я повторяюсь. Если =AlexD=(75 знак., 10.03.2011 19:12)
- Простите, но кто эту секцию вызывает? Системный поток при разрешенных в это время обработчиках прерываний? - Vit(10.03.2011 16:02)
- ой, давайте не будем терминами жонглировать... - Alex B.(10.03.2011 13:13)
- Зря Вы. Лучше бы правильно сделали. - Vit(10.03.2011 13:53, ссылка)
- Ну и чем это отличается от моей реализации? Alex B.(72 знак., 10.03.2011 13:59)
- Зря Вы. Лучше бы правильно сделали. - Vit(10.03.2011 13:53, ссылка)
- Критическая секция с точки зрения ОС это такой типа глобальный мутекс, который запрещает изменения в структурах данных ОС со стороны других задач и прерываний. Т.е. атомарность структуры данных ОС, а не любых данных вообще. - =AlexD=(10.03.2011 14:38)
- А мне нравится как сделано в 24-м. Есть задачи(процессы) которые нельзя задерживать ни на тик. Так вот на 24-м эти задачи можно решить abivan(283 знак., 10.03.2011 16:52)
- ИМХО для RTOS критическая секция - это часть кода, в которой не может произойти вытеснение. Alex B.(508 знак., 10.03.2011 10:38)
- т.е. критическую секцию можно прервать? ИМХО, даже если такое и нужно, то название этому должно быть другое. - Vit(10.03.2011 10:11)
- Вообще то у всех другая организация: запрещаются только прерывания в которых могут вызываться критические секции. Прерывания которые обслуживают не-ОС ресурсы обычно не запрещают. ASDFS(272 знак., 10.03.2011 12:47)
- Да просто перепишите реализацию критической секции и всё. - =AlexD=(10.03.2011 19:13)
- Вытеснение может быть и по времени и еще хрен знает по чему. - ASDFS(05.03.2011 17:48)
- хоть просто карусель. бери ее, TNKERNEL. Правильная ось. - abivan(05.03.2011 17:54)
- Понял, пасиб, уже качаю. - ASDFS(05.03.2011 18:18)
- хоть просто карусель. бери ее, TNKERNEL. Правильная ось. - abivan(05.03.2011 17:54)
- Интересно, почему такая хрень в ТНКернеле: функция tn_sys_enter_critical() запрещает все прерывания! ASDFS(52 знак., 05.03.2011 18:38)