Совместное использование пространства

Еще один общий подход к планированию работы мультипроцессора может использоваться в том случае, когда потоки каким-то образом связаны друг с другом. Ранее уже приводился пример параллельной работы программы make.
Также часто бывает, что у одного процесса есть несколько совместно работающих потоков. Например, если потоки процесса часто обмениваются данными, то полезнее будет их выполнять одновременно. Планирование одновременной работы нескольких потоков на нескольких центральных процессорах называется совместным использованием пространства (space sharing).

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

В любой момент времени набор центральных процессоров статически разбивается на определенное количество секций, каждая из которых выполняет потоки одного процесса. К примеру, на рис. 8.13 показаны секции, состоящие из 4, 6, 8 и 12 центральных процессоров. Со временем количество и размеры секций будут изменяться по мере создания новых и завершения и прекращения работы старых потоков.

Рис. 8.13. Набор из 32 центральных процессоров, разбитый на четыре секции с двумя свободными процессорами


Периодически нужно принимать решения по планированию.

На однопроцессорных системах для пакетного планирования широко известен алгоритм, при котором первым выполняется самое короткое задание. Аналогичный алгоритм для мультипроцессорной системы заключается в выборе процесса, нуждающегося в наименьшем количестве тактов центрального процессора, то есть потока, у которого среди других кандидатов наименьшее произведение количества центральных процессоров на время выполнения. Но на практике эта информация доступна довольно редко, поэтому осуществление алгоритма затруднено. Фактически исследования показали, что на практике алгоритм, при котором первым обслуживается первый же готовый поток, превзойти трудно (Krueger et al., 1994).

В нашей модели разбиения на секции поток просто запрашивает некоторое количество центральных процессоров и либо получает их все, либо вынужден ждать, пока они не освободятся. Другой подход в работе с потоками заключается в активном управлении степенью параллельности. Один из способов управления параллельностью предусматривает использование центрального сервера, следящего за тем, какие потоки выполняются и требуют выполнения и каковы их минимальные и максимальные потребности в центральных процессорах (Tucker and Gupta, 1989). Периодически каждое приложение опрашивает центральный сервер, чтобы узнать, сколько центральных процессоров оно может использовать. Затем оно подгоняет количество потоков под количество доступных центральных процессоров. Например, веб-сервер может иметь 5, 10, 20 или любое другое количество параллельно запущенных потоков. Если у него в какой-то момент времени имеется 10 потоков и возникает потребность в центральных процессорах и ему предписывается сократить количество потоков до пяти, то когда следующие пять потоков завершат свою текущую работу, они, вместо того чтобы получить новую работу, получают команду на выход. Эта схема позволяет очень динамично менять размеры секций, чтобы они лучше соответствовали текущей нагрузке, чем при использовании фиксированной системы, показанной на рис. 8.13.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Совместное использование пространства:

  1. Статья 282. Нарушение правил использования воздушного пространства
  2. Модель SCORE: использование стратегий Аристотеля для определения "проблемного пространства"
  3. Раздел III Использование достижений криминалистической психологии при собирании, оценке, использовании личностной информации
  4. Статья 231. Незаконный сбор с целью использования или использование сведений, составляющих коммерческую или банковскую тайну
  5. Два пространства
  6. ПРОСТРАНСТВО: ВОСПРИЯТИЕ
  7. ПРОСТРАНСТВО: ВОСПРИЯТИЕ: НАРУШЕНИЕ
  8. 12.3.3. Совместное путешествие
  9. ДЕЯТЕЛЬНОСТЬ СОВМЕСТНАЯ
  10. 3. Проекты совместного внедрения
  11. О недостатках совместного сна
  12. ПРОСТРАНСТВО СЕМАНТИЧЕСКОЕ СУБЪЕКТИВНОЕ
  13. Часть I Пространство движения
  14. Статья 1130. Договор о совместной деятельности
  15. § 3. Право общей совместной собственности
  16. 5.10.1. Создание пространства для ответа
  17. ФАЗИРОВАНИЕ ПРОСТРАНСТВА