Планировщик ядра запускается в следующих случаях:

- после разблокировки процесса;

- по истечении временного кванта для выполняющегося процесса;

- после выгрузки выполняющегося процесса.

 

В системе QNX каждому процессу присваивается приоритет. Планировщик выбирает для выполнения процессы, находящиеся в состоянии ГОТОВ, в соответствии с их приоритетами. (Центральный процессор может использовать только процесс, находящийся в состоянии ГОТОВ.) Для выполнения выбирается процесс, имеющий наивысший приоритет.

Процессам присваиваются приоритеты в диапазоне от 0 (низший) до 31 (высший). По умолчанию процесс наследует приоритет от породившего его процесса; обычно он равен 10 для приложений, запускаемых из интерпретатора Shell.

 

Методы планирования

                        Для удовлетворения потребностей разных приложений в системе QNX реализованы три метода планирования:

                        - планирование по принципу простой очереди (первым пришел - первым обслужен);

                        - круговой метод планирования;

                        - адаптивное планирование.

Каждый процесс в системе может выполняться, используя любой из этих методов. Они эффективны применительно к одному процессу, а не ко всем процессам на узле.

                        Запомните, что данные методы планирования используются только тогда, когда два или более процессов, разделяющих один и тот же приоритет, находятся в состоянии ГОТОВ (т.е. процессы непосредственно конкурируют друг с другом). Если в состояние ГОТОВ переходит процесс, имеющий более высокий приоритет, он немедленно выгружает все процессы с меньшим приоритетом.

При планировании по принципу простой очереди процесс, выбранный для выполнения, продолжает работать до тех пор, пока он:

                        - не передаст управление сам (например, блокируется);

                        - не будет снят с выполнения (выгружен из памяти) процессом с более высоким приоритетом.

При круговом методе планирования процесс, выбранный для выполнения, продолжает работать до тех пор, пока он:

                        - не передаст управления сам;

                        - не будет снят с выполнения (выгружен из памяти) процессом с более высоким приоритетом;

                        - не истечет его квант времени (timeslice).

При адаптивном планировании процесс ведет себя следующим образом:

                        - по истечении кванта времени (при условии, что процесс не блокировался), его приоритет уменьшается на 1, если другой процесс с таким же приоритетом находится в состоянии ГОТОВ. Это называется понижением приоритета;

                        - если процесс с пониженным приоритетом не выполняется в течение одной секунды, его приоритет повышается на 1 (процесс никогда не может повысить приоритет выше начального);

                        - если процесс блокируется, ему немедленно возвращается начальный приоритет.

 

Бесплатный хостинг uCoz