Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700363.doc
Скачиваний:
16
Добавлен:
01.05.2022
Размер:
3.69 Mб
Скачать

Разбиение системных таблиц

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

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

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

Смещение моментов прерывания таймера

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

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

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

Рис.10 Смещение моментов прерывания таймера для разных процессоров.

Стратегия планирования загрузки процессоров в многопроцессорной системе

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