ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
729610 Топик полностью
Evgeny_CD, Архитектор (20.01.2017 02:06, просмотров: 817) ответил ig_z на На электрониксе было бурное, но весьма сумбурное обсуждение одной РТОС, по основному признаку (один стек на всех) близкой к кооперативной, но с возможностью вытеснения текущей задачи более приоритетной. После активного обсуждения пар вышел, но
Очень интересно! А можете ссылочку на тред прислать или хотя бы имя ОСи. Вопросы у меня фундаментальные имеются. http://dunkels.com/adam/pt/
http://caxapa.ru/599497.html
1. Есть Contiki OS ->, а у нее каждый поток (которые вытесняются) может иметь кучу Protothreads -->. Понятное решение. 2. Можно сделать фиксированным статус задачи - кооперативная она или вытесняемая. Неразрешимых проблем с алгоритмами не вижу, хотя детали могут оказаться очень неприятными. 3. Но вот динамически менять статус потока - вытесняемый или кооперативный - это уже какой-то пц. Вот идет кооперативная задача. Пришло важное прерывание. Нужно вызвать задачу. Если она вытесняемая - все понятно: вызвали, контекст вернули - продолжили исполнение кооперативки. А если она кооперативная? Вызвали ее с текущим стеком. Она его использовала, не завершилась - и тут снова выосокоприоритетный вызов новой кооперативной задачи. Через какое-то действие граф передачи управления "замороженным" кооперативным задачам, чтобы они отработали свое и свалили из стека, пойдет в противоречие с логикой передачи управления. Я почти уверен, что аниверсальный алгоритм, который гарантированно вернет систему в норальное состояние, не получится. Получится куча исключений, и совпадут ли события реальной жизни с картой исключений - это большой вызов. Можно получить прибор, который будет необъяснимо глючить у Заказчика. Иногда, но это будет непобедимо в принципе.