Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы Лекция 08(Мультипрограммир...doc
Скачиваний:
6
Добавлен:
16.09.2019
Размер:
250.37 Кб
Скачать
  1. Бригадное планирование.

Множество потоков процесса распределяются для одновременного выполнения на множестве процессоров, по одному потоку на процессор.

Очевидное преимущество разделения пространства заключается в устранении многозадачности, что снижает накладные расходы по переключению контекста. Однако ее недостаток состоит в потерях времени при блокировке центрального процессора.

Поэтому проводились активные поиски алгоритма, пытающегося планировать одновременно в пространстве и времени, особенно для процессов, создающих большое количество потоков, которым, как правило, требуется возможность общения друг с другом.

Чтобы понять, какие возможны проблемы при независимом планировании потоков процесса (или процессов задания), рассмотрим систему с потоками Ао и А1,, принадлежащими процессу А, и потоками Во и В1, принадлежащими процессу В. Потоки Ао и Во работают в режиме разделения времени на центральном процессоре 0, а потоки А1, и В1 - на процессоре 1. Потокам Ао и А1 нужно часто обмениваться информацией. Общение потоков выглядит следующим образом. Поток Ао посылает потоку А1 сообщение, после чего поток А1, отправляет потоку Ао ответ и т. д. Предположим, что потоки Ао и Во, начали выполняться первыми. В интервале времени 0 поток Ао посылает потоку А1 запрос, но поток А1 не получает его до тех пор, пока не будет запущен в интервале времени 1. начинающемся через 100 мс. Он немедленно отправляет ответ, но поток Ао не получает ответа, пока его снова не запустят в момент времени 200 мс. В результате за 200 мс мы получаем всего одну пару запрос-ответ, что не слишком хорошо. Решением данной проблемы является так называемое бригадное планирование, представляющее собой развитие идеи совместного планирования .

Бригадное планирование состоит из трех частей:

  1. Группы связанных потоков планируются как одно целое, бригада.

  2. Все члены бригады запускаются одновременно, на разных центральных процессорах с разделением времени.

  3. Все члены бригады начинают и завершают свои временные интервалы (кванты времени) одновременно.

Бригадное планирование работает благодаря синхронности работы всех центральных процессоров.

Это значит, что время разделяется на дискретные кванты. В начале каждого нового кванта все центральные процессоры перепланируются заново, и на каждом процессоре запускается новый поток. В начале следующего кванта опять принимается решение о планировании. В середине кванта планирование не выполняется. Если какой-либо поток блокируется, его центральный процессор простаивает до конца кванта времени.

Программные модули.

Являются очень важным видом ресурсов.

  1. Однократно-используемые.

Выполняются один раз (портят либо код, либо данные). Являются неделимыми ресурсами.

Системные однократно-используемые модули, как правило, используются только на этапе загрузки ОС.

  1. Многократно (повторно)-используемые

а) Непривилегированные программные модули – обычные программные модули, которые могут быть прерваны во время своей работы.

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

б) Привилегированные программные модули – работают в привилегированном режиме (при отключенной системе прерываний). Являются последовательно используемыми (повторно используемыми) ресурсами. Допускается многократное выполнение действий типа запрос-использование-освобождение.

Структура модуля (рис. 8.1а).

в) Реентерабельные программные модули (reenterable-допускающий повторные обращения) - допускают повторное многократное прерывание своего исполнения и повторный запуск из других вычислительных процессов. Д.б. обеспечено сохранение промежуточных вычислений и возврат к ним, когда процесс возобновляется с прерванной ранее точки.

Рис 8.1а. Привилегированный программный модуль

Это обеспечивается с помощью статических и динамических методов выделения памяти под сохраняемые значения.

  • статический: резервируется область памяти для фиксированного числа вычислительных процессов( пример: процессы в/в и реентерабельные драйверы для управления параллельно несколькими однотипными устройствами.

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

Рис 8.1б. Динамический реентерабельный программный модуль

г) Повторно входимые программные модули (re-entrance) –допускают многократное параллельное использование, но в отличие от реентерабельных их нельзя прерывать в любой точке.

Структура модуля (рис. 8.1в):

  • модуль состоит из привилегированных секций и повторное обращение к модулю возможно только после завершения какой-нибудь из этих секций

  • после завершения секции управление м.б. передано диспетчеру, и он может предоставить возможность выполняться другому процессу,

В повторно входимых программных модулях четко предопределены все допустимые (возможные) точки входа.

Повторно входимые программные модули встречаются гораздо чаще реентерабельных (повторно прерываемых).

Рис. 8.1в. Повторно входимый программный модуль