
- •Введение
- •1. Основные понятия в операционных системах
- •1.1. Классификация и функции операционных систем
- •1.2. Ос общего назначения и реального времени
- •1.3. Выполнение команд в вычислительной системе
- •1.4. Прерывания
- •1.5 Архитектуры операционных систем
- •1.6. Управление оперативной памятью вычислительной системы
- •1.7. Общие сведения о процессах и потоках
- •2. Операционная система windows
- •2.1. Версии операционной системы Windows
- •2.2. Архитектура операционной системы windows
- •2.3. Процессы и потоки в Windows
- •2.4. Взаимодействие процессов
- •2.5. Управление потоками в Windows
- •2.6. Файловые системы Windows
- •2.7. Установка и последовательность загрузки Windows
- •Последовательность загрузки Windows xp
- •2.8. Интерпретатор команд и пакетные файлы
- •2.9. Конфигурирование Windows
- •3. Операционная система qnx neutrino
- •3.1. Версии операционной системы qnx Neutrino
- •3.2. Архитектура операционной системы qnx Neutrino
- •3.3. Процессы в qnx6
- •Завершение процесса
- •3.4. Потоки в qnx6
- •Завершение потока
- •3.5. Управление потоками и процессами в qnx6
- •Механизмы ipc
- •Средства синхронизации в qnx
- •3.6. Файловые системы qnx
- •Типы файлов
- •3.7. Инсталляция и последовательность загрузки qnx
- •3.8. Интерпретаторы команд и пакетные файлы в qnx
- •3.9. Конфигурирование qnx
- •4. Виртуальные машины
- •4.1. Общие сведения о виртуальных машинах
- •4.2. Работа с виртуальной машиной VmWare
- •5. Защита от сбоев и несанкционированного доступа
- •5.1. Принципы построения систем безопасности
- •5.2. Безопасность операционной системы windows
- •6. Сетевые возможности операционных систем
- •6.1. Аппратаное обеспечение локальных сетей
- •6.2. Сети Windows
- •6.3. Локальная сеть на основе qnet
- •6.4. Глобальные сети
- •7. Многопроцессорные системы
- •7.1. Архитектуры многопроцессорных операционных систем
- •7.2. Принципы функционирования smp
- •7.3. Принципы функционирования кластеров
- •Список использованной литературы
- •Компилятор
7.3. Принципы функционирования кластеров
Кластер - набор вычислительных узлов (вполне самостоятельных компьютеров), связанных высокоскоростной сетью (интерконнектом) и объединенных в логическое целое специальным программным обеспечением [3]. Фактически простейший кластер можно собрать из нескольких персоналок, находящихся в одной локальной сети, просто установив на них соответствующее программное обеспечение.
Кластеры ассоциируются у нас с суперкомпьютерами, круглые сутки решающими на десятках, сотнях и тысячах вычислительных узлов какую-нибудь сверхбольшую задачу. Часто встречаются кластеры, в которых одни узлы, дублируя другие, готовы в любой момент перехватить управление, или, например, одни узлы, проверяя получаемые с другого узла результаты, радикально повышают надежность системы. Еще одно популярное применение кластеров - решение задачи массового обслуживания, когда серверу приходится отвечать на большое количество независимых запросов, которые можно легко раскидать по разным вычислительным узлам. Суперкомпьютер-кластер состоит из трех основных компонентов: " компьютеров, образующих узлы кластера; интерконнекта, соединяющего эти узлы в сеть, и программного обеспечения, заставляющего всю конструкцию "почувствовать" себя единым компьютером. Программное обеспечение для кластеров: для кластерных вычислений существует стандарт - MPI (Message Passing Interface). Программы, написанные с использованием MPI, абсолютно переносимы - их можно запускать из любой операционной системы.
Идея многопроцессорной обработки как способа повышения общей эффективности вычислений родилась давно. Однако прежде чем попытаться распределить вычисления между N процессорами, нужно отчётливо понимать, что не любой вычислительный процесс получит какие-либо преимущества от реализации на многопроцессорных архитектурах. Для этого он должен быть достаточно «хорошо распараллеливаемым». Какие правило это задачи с вычислениями, многократно повторяемыми при вариациях некоторых начальных условий в каждом цикле. Кроме того, желательно, чтобы в таких задачах параметры последующих циклов вычисления имели бы минимально выраженную зависимость от результатов предыдущих циклов («итерационность»). Достаточно широкие классы задач оказываются в определённой мере «хорошо распараллеливаемыми» [33]:
Восстановление криптографированного текста с помощью всех возможных ключей шифрования и выбор наилучшего результата.
Поиск в больших объёмах данных по ключевым признакам или по их сложным комбинациям.
Прочностные расчёты, реализация метода конечных элементов, задачи гидро- и электродинамики сплошных сред.
Проверка комбинаторно синтезируемых гипотез и идентификация отметок, полученных пространственно разнесёнными приёмниками, в системах радио- и гидролокации.
Задачи баллистики.
Обработка изображений, например идентификация дактилоскопических отпечатков или анализ аэрокосмических снимков.
Множественное вычисление целевой функции в процедурах многомерной нелинейной оптимизации.
Реализация нестационарного метода статистического моделирования для газовой динамики и кинетической теории газов.
Обеспечение высокой надёжности систем баз данных.
Большинство задач поиска вариантов в пошаговых игровых программах.
Степень успешности распараллеливания обратно зависима от того, как сильно исходные данные последующих циклов вычислений зависят от предыдущих. За годы эволюции идеи распределённой обработки сложились две модели: сильносвязанные многопроцессорные системы (системы с симметричной многопроцессорной обработкой — SMP) и слабосвязанные многопроцессорные системы (кластерные системы).
В SMP-системах N обрабатывающих процессоров разделяют общие поля внешних устройств и, что особенно важно, поле оперативной памяти. Для реализации этой модели необходимо использовать специализированные архитектуры взаимодействия процессоров и специальные наборы системных микросхем (chipset). В таких архитектурах оптимальным механизмом распределения работы между параллельными ветвями представляется разделение на уровне потоков (thread). Последовательно наблюдались массовая реализация механизмов thread в аппаратных платформах (начало 90-х), поддержка абстракций thread в операционных системах (1994-1996) и отражение их в стандартах POSIX (конец 90-х). Одной из самых существенных технических трудностей при построении таких архитектур является необходимость обеспечения когерентности данных в локальных устройствах кэш-памяти каждого из процессоров.
В кластерных системах предполагается, что каждый из узлов является типовой вычислительной архитектурой со своим процессором, оперативной памятью, каналами ввода_вывода и т.д., а кооперация узлов осуществляется через некоторые каналы передачи данных между ними. В такой архитектуре распараллеливание работ реализуется на уровне процессов, каждый из которых выполняется на своём узле вычислительной структуры.
И та и другая модель имеет как свои преимущества, так и свои недостатки, баланс которых может существенно смещаться в зависимости от класса решаемых задач. Все прочие многопроцессорные архитектуры могут рассматриваться как линейная комбинация решений, почерпнутых из этих двух моделей.
SMP-структуры пригодны только для наращивания производительности системы, а кластерные системы, кроме того, могут быть использованы и для повышения «живучести» системы в применениях, где должна быть обеспечена высокая надёжность. В N - процессорном кластере при выходе из строя любого количества хостов до (N - 1) система может сохранять работоспособность (правда, обычно со снижением общей производительности) за счёт перераспределения загрузки между оставшимися хостами.