Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
15-21.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
769.16 Кб
Скачать

15. Планирование в системах реального времени: статический алгоритм rms

Примером классического статического алгоритма планирования для вытесняемых периодических процессов служит алгоритм RMS (Rate Monotonic Scheduling — планирование с приоритетом, пропорциональным частоте запуска процесса) (Liu and Layland, 1973). Он может использоваться для процессов, отвечающих следующим условиям:

1. Каждый периодический процесс должен быть завершен в течение своего периода.

2. Ни один из процессов не зависит от других процессов.

3. Каждому процессу для каждого интервала его работы требуется одинаковое количество процессорного времени.

4. У непериодических процессов нет крайних сроков.

5. Вытеснение процесса происходит мгновенно без каких-либо издержек.

Первые четыре условия вполне резонны, а последнее, разумеется, нет, но оно значительно упрощает моделирование системы. Алгоритм RMS работает путем присваивания каждому процессу фиксированного приоритета, равного частоте возникновения инициирующего его события. Например, процесс, который должен запускаться каждые 30 мс (33 раза в секунду), получает приоритет 33, процесс, который должен запускаться каждые 40 мс (25 раз в секунду), получает приоритет 25, а процесс, который должен запускаться каждые 50 мс (20 раз в секунду), получает приоритет 20. Таким образом, приоритеты имеют линейную зависимость от частоты (количества их запусков в секунду). Благодаря этому алгоритм и получил свое название. Во время работы планировщик всегда запускает готовый к работе процесс с наивысшим приоритетом, вытесняя, при необходимости, выполняемый процесс. Лю и Лэйлэнд доказали, что RMS является оптимальным алгоритмом в классе статических алгоритмов планирования. На рис. 7.13 показано, как работает алгоритм RMS. Процессы А, В и С обладают статическими приоритетами 33, 25 и 20 соответственно, то есть если нужно запускаться процессу А, то он запускается, вытесняя любой другой процесс, использующий в данный момент центральный процессор. Процесс В может вытеснить процесс С, но не может вытеснить процесс А. Чтобы получить свою очередь на запуск, процесс С должен ждать, пока центральный процессор полностью не освободится.

На рис. 7.14 в исходном состоянии все три процесса готовы к запуску. Из них выбирается процесс А, имеющий самый высокий приоритет, и ему, как показано в строке RMS, разрешатся работать до завершения его задачи в течение 10 мс. После того как он завершит свою работу, друг за другом запускаются процессы В и С. Все вместе эти процессы работают 30 мс, поэтому, как только процесс С завершит свою работу, настанет время для повторного запуска процесса А. Эта смена процессов продолжается до тех пор, пока на отметке времени t = 70 система не войдет в период простоя. На отметке времени t = 80 будет готов к работе и запустится процесс В. Но на отметке времени t = 90 будет готов к работе процесс А, обладающий более высокой степенью приоритета, поэтому он вытеснит процесс В и запустится до своего полного завершения на отметке времени t = 100. В этот момент система может выбирать между запуском процесса С или завершением процесса В, и она выбирает процесс В, потому что у него более высокий уровень приоритета.