|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Алгоритм планирования с динамическими приоритетами
Алгоритм планирования с динамическими приоритетами Исходные данные:
Processes – список всех процессов, ожидающих выполнения. BasePriority – фиксированные базовые приоритеты процессов из списка. Время – общее время работы программы (в ед. времени), в течение которого последовательно выполняются процессы. TimeUsed – количество единиц времени, отведенное для выполнения конкретного процесса за период работы программы. Активный процесс на текущем моменте времени. Сброс приоритета, активного на предыдущем моменте времени, до базового значения. 1. В нулевой момент времени (до старта работы программы) каждый процесс имеет свой базовый приоритет в числовом эквиваленте. 2. Далее на 1 моменте времени управление передается процессу с максимальным приоритетом. В данном случае это Process3. Приоритеты остальных процессов (Process1, Process2) возрастают на 1.
3. К началу 2 момента времени два процесса (Process2, Process3) имеют равные максимальные приоритеты, равные 6. Управление передается первому в списке процессу, имеющему максимальный приоритет. В данном случае это Process2. Приоритет процесса, активного на шаге 1 (Process3) сбрасывается до базового (т.е. до 6). Приоритеты остальных процессов (в данном случае приоритет Process1) увеличиваются на 1. 4. На 2 шаге вновь сложилась ситуация, когда приоритеты процессов (Process2, Process3) максимальны и имеют одинаковые значения (6). Активным на шаге 3 выбирается первый в списке процесс с максимальным приоритетом − Process2. Приоритет активного процесса на шаге 2 (Process2) был бы сброшен на шаге 3 до базового, однако он выбирается активным, поэтому его значение не изменяется. Приоритеты остальных процессов (в данном случае приоритеты процессов Process1, Process3) увеличиваются на 1.
5. На 3 шаге максимальный приоритет (7) – у процесса Process3. Он становится активным на шаге 4. Приоритет активного на шаге 3 процесса Process2 сбрасывается до базового значения, равного 5. Приоритет процесса Process1 вырастает на 1.
6. Максимальный приоритет по-прежнему у процесса Process3. Ему передается управление на шаге 5. Приоритеты остальных процессов (Process1, Process2) увеличиваются на 1.
7. Максимальные приоритеты, равные 7, сформировались у процессов Process1 и Process3. Выбирается активным первый процесс из списка − Process1. Обратите внимание, что этот процесс стал впервые активен только к данному моменту, тогда как процессам с изначально более высокими базовыми приоритетами передавалось управление уже по несколько раз. Приоритет активного на шаге 5 процесса Process3 сбрасывается до базового значения, равного 6. Приоритеты остальных процессов (Process2) увеличиваются на 1. 8. Максимальные приоритеты, равные 7, сформировались у процессов Process1 и Process2. Выбирается активным первый процесс из списка − Process1. Его приоритет не изменяется. Приоритеты остальных процессов (Process2, Process3) увеличиваются на 1.
9. На 3 шаге максимальный приоритет (8) – у процесса Process2. Он становится активным на шаге 8. Приоритет активного на шаге 7 процесса Process1 сбрасывается до базового значения, равного 2. Приоритет процесса Process3 вырастает на 1.
10. Максимальные приоритеты, равные 8, у процессов Process2 и Process3. Выбирается активным первый в списке процесс Process2. Его приоритет не изменяется. Приоритеты остальных процессов (Process2, Process3) увеличиваются на 1.
11. На 9 шаге максимальный приоритет (9) – у процесса Process3. Он становится активным на шаге 10. Приоритет активного на шаге 9 процесса Process2 сбрасывается до базового значения, равного 5. Приоритет процесса Process1 вырастает на 1.
12. Максимальный приоритет (9) остается у процесса Process3. Он становится активным на шаге 11. Приоритеты процессов Process1, Process2 вырастают на 1.
13. Максимальный приоритет (9) по-прежнему у процесса Process3. Он становится активным на шаге 12. Приоритеты процессов Process1, Process2 вырастают на 1. 14. Максимальный приоритет (9) по-прежнему у процесса Process3. Он становится активным на шаге 13. Приоритеты процессов Process1, Process2 вырастают на 1.
15. Максимальный приоритет (9) по-прежнему у процесса Process3. Он становится активным на шаге 14. Приоритеты процессов Process1, Process2 вырастают на 1.
16. В нашем случае алгоритм завершается на 14 моменте времени. Одна из важных характеристик процессов – количество единиц времени, выделяемое для работы каждого конкретного процесса. Это значение хранит в себе переменная TimeUsed. Для вычисления её значения необходимо посчитать количество единиц времени, на которых процесс был активен. Для процесса Process1 это значение равно 2 – за 14 единиц времени он был активен всего на 2; для процесса Process2 значение TimeUsed – 4; для процесса Process3 значение TimeUsed – 8.
Таким образом, несмотря на то что алгоритм выделяет время (TimeUsed) на работу каждому процессу в списке, значение переменной TimeUsed для каждого конкретного процесса сильно зависит от величины базового приоритета BasePriority.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|