Операционные системы. Часть 1. Основы управления ресурсами. Рощин А.В. - 90 стр.

UptoLike

Составители: 

90
3.5 Вытесняющие и невытесняющие алгоритмы планирования
Все множество алгоритмы планирования можно разделить на два
принципиально различных класса: вытесняющие и невытесняющие [4].
Невытесняющие (non-preemptive) алгоритмы основаны на том, что
активному потоку позволяется выполняться до тех пор, пока он
сам, по собственной инициативе, не отдаст управление
операционной системе для того, чтобы та выбрала из очереди
другой готовый к выполнению поток.
Вытесняющие (preemptive) алгоритмыэто такие способы
планирования потоков, в которых решение о переключении
процессора с выполнения одного потока на выполнение другого
потока принимается операционной системой, а не активной задачей.
Основным различием между двумя типами алгоритмов является
степень централизации механизма планирования потоков. Вытесняющие
алгоритмы целиком сосредоточены в операционной системе и программист
пишет свое приложение, не заботясь о том, что оно будет выполняться
одновременно с другими задачами. При этом операционная система сама
определяет момент снятия с выполнения активного потока, запоминает его
контекст, выбирает из очереди готовых потоков следующий, запускает новый
поток на выполнение, загружая его контекст.
При невытесняющем мультипрограммировании механизм
планирования распределен между операционной системой и прикладными
программами. Прикладная программа, получив управление от операционной
системы, сама передает управление ОС с помощью какого-либо системного
вызова, когда посчитает это необходимым. ОС формирует очереди потоков
и выбирает в соответствии с некоторым правилом (например, с учетом
приоритетов) следующий поток на выполнение. Такой механизм создает
проблемы, как для пользователей, так и для разработчиков приложений.
                                   90



        3.5 Вытесняющие и невытесняющие алгоритмы планирования
     Все множество алгоритмы планирования можно разделить на два
принципиально различных класса: вытесняющие и невытесняющие [4].
     − Невытесняющие (non-preemptive) алгоритмы основаны на том, что
        активному потоку позволяется выполняться до тех пор, пока он
        сам,   по   собственной   инициативе,   не   отдаст   управление
        операционной системе для того, чтобы та выбрала из очереди
        другой готовый к выполнению поток.
     − Вытесняющие (preemptive) алгоритмы – это такие способы
        планирования потоков, в которых решение о переключении
        процессора с выполнения одного потока на выполнение другого
        потока принимается операционной системой, а не активной задачей.
     Основным различием между двумя типами алгоритмов является
степень централизации механизма планирования потоков. Вытесняющие
алгоритмы целиком сосредоточены в операционной системе и программист
пишет свое приложение, не заботясь о том, что оно будет выполняться
одновременно с другими задачами. При этом операционная система сама
определяет момент снятия с выполнения активного потока, запоминает его
контекст, выбирает из очереди готовых потоков следующий, запускает новый
поток на выполнение, загружая его контекст.
     При       невытесняющем      мультипрограммировании        механизм
планирования распределен между операционной системой и прикладными
программами. Прикладная программа, получив управление от операционной
системы, сама передает управление ОС с помощью какого-либо системного
вызова, когда посчитает это необходимым. ОС формирует очереди потоков
и выбирает в соответствии с некоторым правилом (например, с учетом
приоритетов) следующий поток на выполнение. Такой механизм создает
проблемы, как для пользователей, так и для разработчиков приложений.