Что такое функционирование в «Реальном масштабе времени»
Download 1.86 Mb. Pdf ko'rish
|
Луканов А.С. Системы реального времени 2020
Состояния:
1) не существует, 2) не обслуживается, 3) готов, 4) выполняется, 5) ожидает ресурс, 6) ожидает назначенное время, 7) ожидает события. Переходы: 1. Переход 1-2 создание процесса; 2. Переход 2-1 уничтожение процесса; 3. Переход 2-3 активизация процесса диспетчером; 4. Переход 3-2 деактивизация процесса; 5. Переход 3-4 загрузка на выполнение процесса диспетчером; 6. Переход 4-3 требование обслуживания от процессора другим процессом (preemption – приоритетное переключение); 7. Переход 4-2 завершение процесса; 8. Переход 4-5 блокировка процесса до освобождения требуемого ресурса; 9. Переход 4-6 блокировка процесса до истечения заданного времени; 10. Переход 4-7 блокировка процесса до прихода события; 11. Переход 2-6 активизация процесса приводит к ожиданию временной задержки; 12. Переход 2-7 активизация процесса приводит к ожиданию события; 13. Переход 2-5 активизация процесса приводит к ожиданию освобождения ресурса; 14. Переход 5-3 активизация процесса из-за освобождения ожидавшегося ресурса; 15. Переход 6-3 активизация процесса по истечении заданного времени; 24 16. Переход 7-3 активизация процесса из-за прихода ожидавшегося события. Таким образом, каждый процесс имеет свой жизненный цикл, состоящий из 4 стадий: 1) создание, 2) загрузка, 3) выполнение, 4) завершение. §9. Планирование задач Важной частью любой ОС РВ является планировщик задач. Несмотря на то что в разных источниках он может называться по- разному (диспетчер задач, супервизор и т. п.), его функции остаются теми же: определить, какая из задач должна выполняться в системе в каждый конкретный момент времени. Самым простым методом планирования, не требующим никакого специального ПО и планировщика как такового, является использование цикли- ческого алгоритма в стиле round robin: void main (void) { for(;;){ task0(); task1(); task2(); /* и т. д. */ } } Каждая «задача», представляющая собой отдельную подпрограмму, выполняется циклически. При этом надо придерживаться следующих правил: 25 1. Подпрограммы не должны содержать циклов ожидания, в стиле while (TRUE) { if(switch_up()){ lamp_off(); break; } } 2. Подпрограммы должны выполнять свою работу как можно быстрее, чтобы дать возможность работать следующей подпрограмме. 3. При необходимости подпрограмма может сохранять свое окружение и текущие результаты, чтобы в следующем цикле возобновить работу с того же места. Можно отметить следующие преимущества циклического алгоритма. 1. Простота использования и прозрачность для понимания. 2. Если исключить из рассмотрения прерывания, система полностью детерминирована. Задачи всегда вызываются в одной и той же последовательности, что позволяет достаточно просто произвести анализ «наихудшего случая» и вычислить максимальную задержку. 3. Минимальные размеры кода и данных. Кроме того, в отличие от алгоритмов с вытеснением, для всех задач необходим только один стек. 4. Отсутствуют ошибки, обусловленные «гонками». К недостаткам циклического алгоритма можно отнести отсутствие приоритетности и очередей. К тому же задачи вызываются независимо от того, должны ли они в данный момент что-либо делать или нет, а на прикладного программиста ложится максимальная ответственность за работоспособность системы. 26 Перейдем теперь к другому широко используемому алгоритму планирования. Речь пойдет о режиме Download 1.86 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling