Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
modul — копия.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.53 Mб
Скачать

Вариант 2

1. Опишите подход к функционированию ос на мультипроцессорах – персональная копия ос лишь cpu-хозяину, остальные – cpu-подчиненные.

Мультипроцессоры типа «хозяин-подчиненный»

Такая модель теперь используется редко, хотя она применялась на заре эпохи мультипроцессоров, когда ставилась цель просто перенести существующие ОС на какой-либо новый мультипроцессор как можно быстрее. Такая схема называется «хозяин-подчинённый», так как CPU 1 является «хозяином», то есть ведущим, а все остальные CPU — подчиненными, или ведомыми.

Модель мультипроцессора «хозяин-подчиненный» позволяет решить большинство проблем первой модели.

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

Недостаток: при большом количестве CPU хозяин может стать узким местом системы. Ведь ему приходится обрабатывать все СВ от всех CPU. Следовательно, такая модель проста и работоспособна для небольших мультипроцессоров, но на больших она работать не может.

3. Опишите подход к планированию в мультипроцессорах посредством совместного использования адресного пространства.

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

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

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

4. Опишите простейший алгоритм планирования, кратчайшее задание – первое, разбиение процессов на группы. Как осуществляется учет работающих и желающих работать процессов. В однопроцессорных системах для пакетного планирования применяется хорошо известный алгоритм «кратчайшее задание первое». Подобный алгоритм для мультипроцессора представляет собой выбор процесса, для которого требуется наименьшее количество циклов CPU, то есть процесса, чье произведение числа CPU на время работы минимально. Однако на практике эта информация редко бывает доступна, поэтому применение такого алгоритма затруднительно.

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

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

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

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

Вариант 3

1. Опишите ОС для симметричных мультипроцессоров. Дайте графическую интерпретацию, в чем состоят достоинства и недостатки.

Мультипроцессорное аппаратное обеспечение. У всех мультипроцессоров каждый CPU может адресоваться ко всей памяти. Однако похарактеру доступа к памяти эти машины делятся на два класса:

  • Мультипроцессоры, у которых каждое слово данных может быть считано с одинаковой скоростью, называются UMA-мультипроцессорами (Uniform Memory Access — однородный доступ к памяти).

  • В противоположность им NUMA-мультипроцессоры (NonUniform Memory Access неоднородный доступ к памяти) этим свойством не обладают.

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

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

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

2. Репликация страниц. Преимущества и недостатки. Последовательная непротиворечивость.

Репликация. Усовершенствование, способное значительно повысить производительность системы, состоит в репликации страниц, для которых разрешено только чтение, например, с текстом программы или константами. Если страница представляет собой программную секцию, то при обращении к CPU 0 может быть создана копия, посылаемая на CPU 0, так что память CPU 1 не изменяется. Таким образом, CPU 0 и 1 могут оба обращаться к странице 10 настолько часто, насколько это им необходимо, не вызывая в дальнейшем страничных прерываний. Другая возможность заключается в том, чтобы реплицировать все страницы, а не только страницы с доступом только для чтения. Пока эти страницы только читаются, нет никакой разницы между репликацией страниц, которые можно модифицировать, и страниц, которые модифицировать нельзя. Но как только реплицированная страница модифицируется, следует предпринять специальные действия во избежание появления двух различных копий одной страницы.

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

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

3. Балансировка нагрузки посредством детерминистического графового алгоритма.

Балансировка нагрузки, или выравнивание нагрузки (load balancing) — метод распределения заданий между несколькими сетевыми устройствами с целью оптимизации использования ресурсов, сокращения времени обслуживания запросов, горизонтального масштабирования кластера (динамического), а также обеспечения отказоустойчивости.

Детерминистический графовый алгоритм. Система может быть представлена в виде взвешенного графа, каждая вершина которого представляет собой процесс, а каждая дуга — поток сообщений между двумя процессами. Математически проблема сводится к тому, чтобы найти способ разбиения графа на k непересекающихся подграфов при определенных ограничениях, накладываемых на подграфы. Для каждого решения, удовлетворяющего требованиям, дуги, находящиеся целиком внутри подграфа, представляют внутримашинный обмен информацией и могут игнорироваться. Дуги, идущие от одного подграфа к другому, представляют сетевой трафик. Цель состоит в том, чтобы найти такой вариант разбиения графа на подграфы, который минимизирует сетевой трафик при выполнении всех требований.

4. Функции MPI по обмену информацией между узлами: «точка»-«точка», радиовещательные сообщения.

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

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

  1. Блокирующий Send / блокирующий Receive

  2. Неблокирующий Send / неблокирующий Receive

  3. Синхронный Send

  4. Буферированный Send

  5. Комбинированный Send / Receive

  6. Send по готовности ( "ready" Send ).

Основные особенности и отличия радиовещательных (коллективных) обменов данными от обменов типа "точка-точка" состоят в следующем:

  1. принимают и/или передают данные одновременно все процессы группы для указываемого коммуникатора;

  2. радиовещательная (коллективная) функция выполняет одновременно и прием, и передачу данных, а потому она имеет параметры, часть из которых относится к приему, а часть - к передаче данных;

  3. как правило, значения всех параметров (за исключением адресов буферов) должны быть идентичны во всех процессах;

  4. коллективные операции являются блокирующими;

  5. коллективные операции могут использоваться только для встроенных (predefined) MPI-типов данных, но не могут использоваться для производных (derived) MPI- типов данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]