О алгоритме edf
Добавлено: 17 апр 2010, 10:14
Порылся по инету и кажется понял, как этот алгоритм работает, но все же уточню.
На примере.
Допустим есть 3 процесса
Название, периодичность запуска, время работы.
A 30 15
B 40 15
C 50 5
Так вот, в соответствии с этим алгоритмом они должны работать так.
Название процесса, номер запуска, время начала работы, время окончания работы, оставшееся время, замороженному процессу.
A 1 0 15 0
B 1 15 30 0
C 1 30 35 0 // вот в этом особенность,да? Если бы это был алгоритм rms, то в этот момент должен был бы запуститься процесс A, но так как уже,
A 2 35 50 0 // "теоритически" запущен процесс C, и время его работы меньше чем у процесса A, то первым отработает он.
B 2 50 65 0 // - и здесь процесс B не прерван, т.к. ему осталось работать меньше, чем готовому к работе процессу A.
С 2 65 70 0 // - потом запустился C, т.к. он "готов к запуску" и имеет время работы меньшее,чем у процесса A.
Выводы я делал основываясь на вот этом рисунке
Но появляется вопросы. Почему при запуске отрабатывают процессы A и B и только потом С ? Если приоритет по времени работы, должен же был С отработать первым. Это ошибка на рисунке?
На примере.
Допустим есть 3 процесса
Название, периодичность запуска, время работы.
A 30 15
B 40 15
C 50 5
Так вот, в соответствии с этим алгоритмом они должны работать так.
Название процесса, номер запуска, время начала работы, время окончания работы, оставшееся время, замороженному процессу.
A 1 0 15 0
B 1 15 30 0
C 1 30 35 0 // вот в этом особенность,да? Если бы это был алгоритм rms, то в этот момент должен был бы запуститься процесс A, но так как уже,
A 2 35 50 0 // "теоритически" запущен процесс C, и время его работы меньше чем у процесса A, то первым отработает он.
B 2 50 65 0 // - и здесь процесс B не прерван, т.к. ему осталось работать меньше, чем готовому к работе процессу A.
С 2 65 70 0 // - потом запустился C, т.к. он "готов к запуску" и имеет время работы меньшее,чем у процесса A.
Выводы я делал основываясь на вот этом рисунке
Но появляется вопросы. Почему при запуске отрабатывают процессы A и B и только потом С ? Если приоритет по времени работы, должен же был С отработать первым. Это ошибка на рисунке?