====== OSA : Скоростные характеристики ====== Здесь приведены цифры для оценки времени, требуемого операционной системе для выбора очередной задачи для запуска в разных режимах под разными компиляторами. Что это значит? Допустим, вы пишете программу для PIC16 под компилятором HTPICC, и у вас возникает вопос: "сколько временых ресурсов отнимет OSA?" или "как быстро произойдет переключение с одной задачи на другую?" (для кооперативных RTOS эти вопросы равнозначны). Ответ на этот вопрос приведен в таблице, где вы находите строку с используемым компилятором, затем столбец с используемым режимом работы (неприоритетный, приоритетный, расширенный приоритетный) и видите среднее количество тактов, требуемое OSA для переключения с одной задачи на другую (это число пропорционально зависит от количества активных задач). Далее найденное число умножаем на время выполнения инструкции и получаем время переключения. ^ Compiler ^ PRIORITY_DISABLED ^ PRIORITY_NORMAL ^ PRIORITY_EXTENDED ^ | \\ **PIC10 (PIC12)** ||||| | Hi-tech PICC | 54*N | 84*N | - | | \\ **PIC16 (PIC12)** ||||| | HT-PICC STD | 49*N | 80*N | 123*N | | microC PRO | 74*N | 119*N | 224*N | | CCS PICC | 62*N | 107*N | 167*N | | \\ **PIC18** ||||| | HT-PICC18 STD | 45*N | 70*N | 85*N | | MPLAB C18 | 55*N | 96*N | 117*N | | microC PRO | 73*N | 99*N | 187*N | | CCS PICC | 49*N | 88*N | 101*N | | \\ **PIC24 (dsPIC)** ||||| | MPLAB C30 | 60*N | 87*N | 113*N | | \\ **AVR** ||||| | WinAVR | 108*N | 172*N | 190*N | | IAR | 100*N | 148*N | 177*N | | \\ **STM8** ||||| | Cosmic | 35*N | 58*N | 71*N | | IAR | 93*N | 118*N | 238*N | | Raisonance | 61*N | 80*N | 120*N | N - количество активных задач **Оценка среднего времени переключения. Пример 1** Исходные данные: * Контроллер PIC16F628 * компилятор HT PICC STD * 4 задачи (N = 4) * расширенный приоритетный режим (PRIORITY_EXTENDED) * тактовая частота 20 МГц (т.е. время выполнения инструкции = 200нс) Находим в таблице значение, соответствующее контроллеру, компилятору и используемому режиму. В нашем случае оно равно 123*N. N у нас равно 4, т.е. предполагается, что одновременно работают 4 задачи. Среднее время переключения (с момента выполнения, например, ##[[osa:ref:allservices:OS_Yield|OS_Yield]]##() в одной задачи до момента получения управления другой задачей) будет: t = 123 * 4 * 200нс = 492 * 200нс = **98.4 мкс** **Оценка среднего времени переключения. Пример 2** Исходные данные: * Контроллер STM8S105C6 * компилятор Cosmic * 8 задач (N = 8) * обычный приоритетный режим (PRIORITY_NORMAL) * тактовая частота 16 МГц (т.е. время выполнения инструкции = 62.5нс) Находим в таблице значение, соответствующее контроллеру, компилятору и используемому режиму. В нашем случае оно равно 58*N. N у нас равно 8, т.е. предполагается, что одновременно работают 8 задач. Среднее время переключения будет: t = 58 * 8 * 62.5ns = 464 * 62.5ns = ** 29 us**