Хелпикс

Главная

Контакты

Случайная статья





Алгоритм планирования с динамическими приоритетами



 

Processes BasePriority TimeUsed
Process1                              
Process2                              
Process3                              

Алгоритм планирования с динамическими приоритетами

Исходные данные:

 

Processes – список всех процессов, ожидающих выполнения.

BasePriority – фиксированные базовые приоритеты процессов из списка.

Время – общее время работы программы (в ед. времени), в течение которого последовательно выполняются процессы.

TimeUsed – количество единиц времени, отведенное для выполнения конкретного процесса за период работы программы.

Активный процесс на текущем моменте времени.

Сброс приоритета, активного на предыдущем моменте времени, до базового значения.

1. В нулевой момент времени (до старта работы программы) каждый процесс имеет свой базовый приоритет в числовом эквиваленте.

2. Далее на 1 моменте времени управление передается процессу с максимальным приоритетом. В данном случае это Process3. Приоритеты остальных процессов (Process1, Process2) возрастают на 1.

Processes BasePriority TimeUsed
Process1 3(2+1)                            
Process2 6(5+1)                            
Process3                            

 

Processes BasePriority TimeUsed
Process1 4(3+1)                          
Process2                          
Process3                          

3. К началу 2 момента времени два процесса (Process2, Process3) имеют равные максимальные приоритеты, равные 6. Управление передается первому в списке процессу, имеющему максимальный приоритет. В данном случае это Process2. Приоритет процесса, активного на шаге 1 (Process3) сбрасывается до базового (т.е. до 6). Приоритеты остальных процессов (в данном случае приоритет Process1) увеличиваются на 1.

4. На 2 шаге вновь сложилась ситуация, когда приоритеты процессов (Process2, Process3) максимальны и имеют одинаковые значения (6). Активным на шаге 3 выбирается первый в списке процесс с максимальным приоритетом − Process2. Приоритет активного процесса на шаге 2 (Process2) был бы сброшен на шаге 3 до базового, однако он выбирается активным, поэтому его значение не изменяется. Приоритеты остальных процессов (в данном случае приоритеты процессов Process1, Process3) увеличиваются на 1.

Processes BasePriority TimeUsed
Process1 5(4+1)                        
Process2                        
Process3 7(6+1)                        

5. На 3 шаге максимальный приоритет (7) – у процесса Process3. Он становится активным на шаге 4. Приоритет активного на шаге 3 процесса Process2 сбрасывается до базового значения, равного 5. Приоритет процесса Process1 вырастает на 1.

Processes BasePriority TimeUsed
Process1 6(5+1)                      
Process2                      
Process3                      

6. Максимальный приоритет по-прежнему у процесса Process3. Ему передается управление на шаге 5. Приоритеты остальных процессов (Process1, Process2) увеличиваются на 1.

Processes BasePriority TimeUsed
Process1 7(6+1)                    
Process2 6(5+1)                    
Process3                    
Processes BasePriority TimeUsed
Process1                  
Process2 7(6+1)                  
Process3                  

7. Максимальные приоритеты, равные 7, сформировались у процессов Process1 и Process3. Выбирается активным первый процесс из списка − Process1. Обратите внимание, что этот процесс стал впервые активен только к данному моменту, тогда как процессам с изначально более высокими базовыми приоритетами передавалось управление уже по несколько раз. Приоритет активного на шаге 5 процесса Process3 сбрасывается до базового значения, равного 6. Приоритеты остальных процессов (Process2) увеличиваются на 1.

8. Максимальные приоритеты, равные 7, сформировались у процессов Process1 и Process2. Выбирается активным первый процесс из списка − Process1. Его приоритет не изменяется. Приоритеты остальных процессов (Process2, Process3) увеличиваются на 1.

Processes BasePriority TimeUsed
Process1                
Process2 8(7+1)                
Process3 7(6+1)                

9. На 3 шаге максимальный приоритет (8) – у процесса Process2. Он становится активным на шаге 8. Приоритет активного на шаге 7 процесса Process1 сбрасывается до базового значения, равного 2. Приоритет процесса Process3 вырастает на 1.

Processes BasePriority TimeUsed
Process1              
Process2              
Process3 8(7+1)              

10. Максимальные приоритеты, равные 8, у процессов Process2 и Process3. Выбирается активным первый в списке процесс Process2. Его приоритет не изменяется. Приоритеты остальных процессов (Process2, Process3) увеличиваются на 1.

Processes BasePriority TimeUsed
Process1 3(2+1)            
Process2            
Process3 9(8+1)            

11. На 9 шаге максимальный приоритет (9) – у процесса Process3. Он становится активным на шаге 10. Приоритет активного на шаге 9 процесса Process2 сбрасывается до базового значения, равного 5. Приоритет процесса Process1 вырастает на 1.

Processes BasePriority TimeUsed
Process1 4(3+1)          
Process2          
Process3          

12. Максимальный приоритет (9) остается у процесса Process3. Он становится активным на шаге 11. Приоритеты процессов Process1, Process2 вырастают на 1.

Processes BasePriority TimeUsed
Process1 5(4+1)        
Process2 6(5+1)        
Process3        
Processes BasePriority TimeUsed
Process1 6(5+1)      
Process2 7(6+1)      
Process3      

13. Максимальный приоритет (9) по-прежнему у процесса Process3. Он становится активным на шаге 12. Приоритеты процессов Process1, Process2 вырастают на 1.

14. Максимальный приоритет (9) по-прежнему у процесса Process3. Он становится активным на шаге 13. Приоритеты процессов Process1, Process2 вырастают на 1.

Processes BasePriority TimeUsed
Process1 7(6+1)    
Process2 8(7+1)    
Process3    

15.  Максимальный приоритет (9) по-прежнему у процесса Process3. Он становится активным на шаге 14. Приоритеты процессов Process1, Process2 вырастают на 1.

Processes BasePriority TimeUsed
Process1 8(7+1)  
Process2 9(8+1)  
Process3  

16. В нашем случае алгоритм завершается на 14 моменте времени. Одна из важных характеристик процессов – количество единиц времени, выделяемое для работы каждого конкретного процесса. Это значение хранит в себе переменная TimeUsed. Для вычисления её значения необходимо посчитать количество единиц времени, на которых процесс был активен. Для процесса Process1 это значение равно 2 – за 14 единиц времени он был активен всего на 2; для процесса Process2 значение TimeUsed – 4; для процесса Process3 значение TimeUsed – 8.

Processes BasePriority TimeUsed
Process1
Process2
Process3

          Таким образом, несмотря на то что алгоритм выделяет время (TimeUsed) на работу каждому процессу в списке, значение переменной TimeUsed для каждого конкретного процесса сильно зависит от величины базового приоритета BasePriority.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.