ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
158998 Топик полностью
Evgeny_CD, Архитектор (14.06.2009 01:57, просмотров: 321) ответил Evgeny_CD на Микрошедулер. Мягкие критический секции.
Еще одна идея - продление непрерывания :) В PIC24 есть замечательная фича - запрет прерывания для нескольких последующих тактов проца. Совершено замечательная команда - критическая секция ценой нескольких тактов, куда "дешевле", чем обычная. Само по себе прерывание для критической секции не важно - ISR не работает с теми переменными, что и user space. Критично, если вытеснят и отдадут другом потоку. Есть некая глобальная переменная потока - protected time. Максимальное время задержки отбора управления. Пусть у нас есть основной таймер шедулера. И вот случился тик, и сработало таймерное прерывание. Но прерывание смотрит - а в каком потоке мы находимся, и нет ли protected time у потока? Если есть, и это прерыание находится в размеренных пределах - переставляем тик на новое значение. Для нашего потока прерывание происходит незаметно, он получает несколько мкс жизни, затем его таки прерывают, и при этом protected time сбрасывается.