Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Миргородская 7сессия / Операционные системы / %D0%9E%D0%A1_%D0%A1%D0%93%D0%A2%D0%A3%20v5

.pdf
Скачиваний:
86
Добавлен:
12.02.2015
Размер:
4.09 Mб
Скачать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Процессор

 

 

Процессор

 

 

. . .

Процессор

 

 

 

Кэш

 

 

 

Кэш

 

 

 

Кэш

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Подсистема

Основная ввода-вывода память

Рис. 70. Архитектура симметричной многопроцессорной системы

Пользователь может создавать приложения с использованием несколь-

ких процессов или нескольких потоков в процессах, не заботясь о том, какое количество процессоров будет доступно — один или несколько. Таким обра-

зом, многопроцессорная операционная система должна выполнять все функ-

ции многозадачной системы, а также обладать дополнительными возможно-

стями по распределению вычислений среди процессоров. В число особенно-

стей архитектуры такой операционной системы входят следующие:

Одновременные параллельные процессы или потоки. Чтобы несколь-

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

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

бы избежать взаимоблокировок или неправильного выполнения операции.

Планирование. Планирование может выполняться на любом из про-

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

231

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

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

сурсам ввода-вывода, необходимо позаботиться об их эффективной синхро-

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

кировки.

Управление памятью. Система управления памятью в многопроцес-

сорнойсистеме должна быть способна разрешать все проблемы, возникаю-

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

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

бы обеспечить согласованность работы в ситуации, когда несколько процес-

соров используют одну и ту же страницу или один и тот же сегмент и прини-

мают решение по вопросу замещения страниц.

Надежность и отказоустойчивость. При отказе одного из процессоров операционная система должна обеспечить продолжение корректной ра-

боты системы. Планировщик операционной системы (как и другие ее части)

должен получить информацию о потере одного из процессоров и соответст-

вующим образом перестроить свои управляющие таблицы.

Поскольку при описании архитектуры многопроцессорной операцион-

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

ционной системы, мы не будем останавливаться на многопроцессорных опе-

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

гопроцессорных систем.

232

7.3. Принципы функционирования кластеров

Кластер - набор вычислительных узлов (вполне самостоятельных ком-

пьютеров), связанных высокоскоростной сетью (интерконнектом) и объеди-

ненных в логическое целое специальным программным обеспечением [3].

Фактически простейший кластер можно собрать из нескольких персоналок,

находящихся в одной локальной сети, просто установив на них соответст-

вующее программное обеспечение.

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

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

например, одни узлы, проверяя получаемые с другого узла результаты, ради-

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

дится отвечать на большое количество независимых запросов, которые мож-

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

кластер состоит из трех основных компонентов: " компьютеров, образующих узлы кластера; интерконнекта, соединяющего эти узлы в сеть, и программно-

го обеспечения, заставляющего всю конструкцию "почувствовать" себя еди-

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

мы, написанные с использованием MPI, абсолютно переносимы - их можно запускать из любой операционной системы.

Идея многопроцессорной обработки как способа повышения общей эффективности вычислений родилась давно. Однако прежде чем попытаться распределить вычисления между N процессорами, нужно отчётливо пони-

мать, что не любой вычислительный процесс получит какие-либо преимуще-

ства от реализации на многопроцессорных архитектурах. Для этого он дол-

жен быть достаточно «хорошо распараллеливаемым». Какие же классы задач

233

предполагают такой вычислительный процесс? Это, как правило, задачи с вычислениями, многократно повторяемыми при вариациях некоторых на-

чальных условий в каждом цикле. Кроме того, желательно, чтобы в таких за-

дачах параметры последующих циклов вычисления имели бы минимально выраженную зависимость от результатов предыдущих циклов («итерацион-

ность»). Достаточно широкие классы задач оказываются в определённой ме-

ре «хорошо распараллеливаемыми» [33]:

Восстановление криптографированного текста с помощью всех воз-

можных ключей шифрования и выбор наилучшего результата.

Поиск в больших объёмах данных по ключевым признакам или по их сложным комбинациям.

Прочностные расчёты, реализация метода конечных элементов, зада-

чи гидро- и электродинамики сплошных сред.

Проверка комбинаторно синтезируемых гипотез и идентификация отметок, полученных пространственно разнесёнными приёмниками, в систе-

мах радио- и гидролокации.

Задачи баллистики.

Обработка изображений, например идентификация дактилоскопиче-

ских отпечатков или анализ аэрокосмических снимков.

Множественное вычисление целевой функции в процедурах много-

мерной нелинейной оптимизации.

Реализация нестационарного метода статистического моделирования для газовой динамики и кинетической теории газов.

Обеспечение высокой надёжности систем баз данных.

Большинство задач поиска вариантов в пошаговых игровых про-

граммах.

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

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

234

иной степени соответствует двум основным моделям: сильносвязанные мно-

гопроцессорные системы (системы с симметричной многопроцессорной об-

работкой — SMP) и слабосвязанные многопроцессорные системы (кластер-

ные системы).

В SMP-системах N обрабатывающих процессоров разделяют общие поля внешних устройств и, что особенно важно, поле оперативной памяти.

Для реализации этой модели необходимо использовать специализированные архитектуры взаимодействия процессоров и специальные наборы системных микросхем (chipset). В таких архитектурах оптимальным механизмом рас-

пределения работы между параллельными ветвями представляется разделе-

ние на уровне потоков (thread). Последовательно наблюдались массовая реа-

лизация механизмов thread в аппаратных платформах (начало 90-х), под-

держка абстракций thread в операционных системах (1994-1996) и отражение их в стандартах POSIX (конец 90-х). Одной из самых существенных техниче-

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

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

рых выполняется на своём узле вычислительной структуры.

И та и другая модель имеет как свои преимущества, так и свои недос-

татки, баланс которых может существенно смещаться в зависимости от клас-

са решаемых задач. Все прочие многопроцессорные архитектуры могут рас-

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

Из приведённых общих соображений уже должно быть достаточно по-

нятно, что если SMP-структуры пригодны только для наращивания произво-

235

дительности системы, то кластерные системы, кроме того, могут быть ис-

пользованы и для повышения «живучести» системы в применениях, где должна быть обеспечена высокая надёжность. Действительно, в N -

процессорном кластере при выходе из строя любого количества хостов до

(N - 1) система может сохранять работоспособность (правда, обычно со сни-

жением общей производительности) за счёт перераспределения загрузки ме-

жду оставшимися хостами.

236

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1.Википедия [Электронный ресурс]: Операционная система. – Режим доступа: http://ru.wikipedia.org.

2.Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. –

СПб.: Изд-во «Питер», 2002. 740с.

3.Столлингс В. Операционные системы. – М.: Вильямс, 2002, 848с.

4.Таненбаум Операционные системы. – М.: Вильямс, 2006, 934с.

5.Робачевский А.М., Немнюгин С.А., Стесик О.Л. Операционная систе-

ма Unix. 2-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2005. 656с.

6.Соломон Д., Русинович А. Внутреннее устройство W2000. – М.: Виль-

ямс, 2001. 900с.

7.Фленов М.Е. Программирование на Delphi глазами хакера. – СПб.:

БХВ-Петербург, 2003. 336с

8.Фленов М.Е. Программирование на С++ глазами хакера. – СПб.:БХВ-

Петербург, 2006. 336с.

9.Джонсон М. Харт. Системное программирование в среде Win32. – М.:

Вильямс, 2001, 446с.

10. Мир советов [Электронный ресурс]: Установка Windows XP. – http://mirsovetov.ru/a/hi-tech/software/direction-windows-xp.html

11. [Электронный ресурс]: Загрузка Windows XP. – http://sysbin.com/files/articles/startupprocess/startupprocess.html

12.[Электронный ресурс]: Разработка пакетных файлов. – http://www.oszone.net/2245

13.[Электронный ресурс]: Работа с реестром. – http://forum.chel- net.ru/archive/index.php/t-6632.html

14.[Электронный ресурс]: Стсндартные процессы Windows XP. – http://md-forum.net/article219.html

15.Зыль С.Н. QNX Momentics: основы применения. – СПб.:БХВ-

Петербург, 2005. 256с.

16. [Электронный ресурс]: Файловый менэджер Midnight Commander . –

http://www.ixbt.com/soft/filemanagers-linux.shtml

237

17.Цилюрик О., Горошко Е. QNX/UNIX: анатомия паралеллизма. – СПб.:Символ-Плюс, 2006. 288с.

18.Операционная система реального времени QNX Neutrino 6.3. Системная архитектура: Пер. с англ. – СПб.: БХВ-Петербург, 2005. 336с.

19.Кёртен Р.Введение в QNX Neutrino 2. Руководство для разработчиков приложений реального времени. – СПб.:БХВ-Петербург, 2005. 400с.

20.[Электронный ресурс]: Последовательность загрузки QNX. – http://www.rts.ua/rus/articles/360/0/43/

21.Практика работы с QNX. Алексеев Д., Ведревич Е., Цилюрик О. и др.

М.: КомБук, 2004. 432с.

22.Электронная энциклопедия «Википедия» [Электронный ресурс]: Виртуальные машины. – http://ru.wikipedia.org/wiki/Виртуальная_машина

23.[Электронный ресурс]: Работа с виртуальной машиной VmWare. – http://www.citforum.ru/operating_systems/seven/

24.М. Гук Аппаратные средства локальных сетей. Энциклопедия – СПб: Издательство «Питер», 2000. 576с.

25.

[Электронный

ресурс]:

Сети

Windows.

http://www.xnets.ru/plugins/content/content.php?content.20

26.Богумирский Б. Оптимизация и настройка Windows 98 для профессионалов. – СПб: Изд-во «Питер», 1999. 400с.

27.Касперский К. Техника и философия хакерских атак. – М.:Солон-Р,

1999. 272с.

28.Касперский К. Техника сетевых атак. – М.:Солон-Р, 2001. 396с.

29.Касперский К. Образ мышления – дизассемблер IDA. – М.:Солон-Р,

2001. 472с.

30.Касперский К. Укрощение Интернета. – М.:Солон-Р, 2002. 284с.

31.Касперский К. Фундаментальные основы хакерства. – М.:Солон-Р,

2002. 445с.

32.Айрапетян Р.А. Отладчик SoftICE подробный справочник – М.:Солон- Р, 2003. 302с.

33.Цилюрик О. QNX : кластерные вычисления СТА // СТА, 2004. №4.

С.54-62.

238