Реферат: Многопроцессорный вычислительный комплекс на основе коммутационной матрицы с симметричной обработкой заданий всеми процессорами

Московский государственныйинститут радиотехники, электроники и автоматики (Технический Университет)

Проект покурсу

“Вычислительные комплексы, системы исети ЭВМ”

Многопроцессорныйвычислительный комплекс на основе коммутационной матрицы с симметричнойобработкой заданий всеми процессорами

Группа:АВ-33-93

Студент: ЛипинВ.В.

Москва

1998


1. Общая часть1.1 Содержание

1.      Общая часть

1.1.   Содержание

1.2.   Задание

1.3.   Введение

2.      Аппаратная организация МПВК

2.1.   Структурная схема МПВК

2.2.   Функциональная схемаэлемента коммутационной матрицы

2.3.   Организация оперативнойпамяти

2.3.1.      Память с расслоением

2.3.2.      Применение кода Хэмминга вмодулях памяти

2.4.   Организация резервирования ивосстановления при отказе любого компонента МПВК

3.      Организация функционированияОС на МПВК

3.1.   Симметричнаямногопроцессорная обработка (SMP)

3.2.   Нити

3.2.1.      Подходы к организации нитейи управлению ими в разных   вариантах ОСUNIX

3.3.   Семафоры

3.3.1.     Определение семафоров

3.3.2.     Реализация семафоров

3.4.   Тупиковые ситуации

3.5.   Предотвращение тупиковыхситуаций

3.5.1.      3.5.2.      Иерархическое упорядочениересурсов3.5.3.      Алгоритм банкира

3.6.   Защита информации

4.      Литература


1.2 Задание(вариант №16)

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

·        использовать матрицу с перекрестной коммутацией;

·        количество процессоров – 8;

·        количество блоков ОЗУ – 4;

·        количество каналов ввода-вывода – 4;

Требуется разработать структурную схемукоммутационной матрицы и функциональную схему элемента коммутационной матрицы.

Описать функционирование ОС для организациимногопроцессорной обработки.

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


1.3 Введение

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

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

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

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


2. Аппаратная организация МПВК

2.1 Структурнаясхема МПВК

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

<img src="/cache/referats/11401/image001.gif" v:shapes="_x0000_s1026">

Коммутационная матрица выполняет передачу данныхмежду процессорами и памятью, а также между процессорами ввода-вывода ипамятью. Коммутируются только внутренние шины МПВК, основное назначение которых– высокоскоростная передача данных, для этих шин нет смысла добиваться высокойпротяженности проводников или стандартизации с целью упрощения подключениядополнительных устройств. Высокоскоростной обмен с периферийными устройствамиосуществляется посредством процессоров ввода-вывода, которые являютсяконтроллерами периферийных высокоскоростных шин, к которым, в свою очередь иподключаются контроллеры соответствующих устройств. На роль таких периферийныхшин подходят, например, VME (применяется в МПВК фирмы Digital EquipmentCompany), SBus (применяется в МПВК фирмы Sun Microsystems) или PCI (применяетсяв МПВК, построенных на процессорах фирмы Intel семейства x86).

В  SMPсовместимой системе прерывания управляются контроллерами APIC (AdvancedProgrammable Interrupt Controller), БИС которых серийно выпускаются многимипроизводителями микроэлектронных изделий (например DEC, Sun, IBM, TexasInstruments). Данные контроллеры обладают распределенной архитектурой, вкоторой функции управления прерываниями распределены между двумяфункциональными блоками: локальным (ЛБ) и ввода-вывода (БВВ). Эти блокиобмениваются информацией через шину, называемую шиной коммуникаций контроллерапрерываний (ШККП). Устройство ввода-вывода определяет появление прерывания,адресует его локальному блоку и посылает по шине ШККП. Блоки APIC совместноотвечают за доставку прерывания от источника прерываний до получателей по всейсистеме. Использование такой организации дополнительно увеличиваетрасширяемость за счет разгрузки разделения между процессорами нагрузки пообработке прерываний. Благодаря распределенной архитектуре, локальные блоки илиблоки ввода-вывода могут быть реализованы в отдельной микросхеме илиинтегрированы с другими компонентами системы.

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

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

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

2.2 Функциональная схемаэлемента коммутационной матрицы

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

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

Выходом представляется применение специализированныхинтегральных микросхем, выпускаемых некоторыми производителямимикроэлектроники. У Texas Instruments это ИМС SN74CBT3384 (разрядность 10 бит),SN74CBT16244 (разрядность 16 бит), SN74CBT16210 (разрядность 20 бит), у CypressSemiconductor  — CYBUS3384 (двакоммутатора в одном корпусе с разрядностью 5 бит каждый), у Sun Microelectronics  — STP2230SOP. Данные ИМС имеют достаточноебыстродействие (задержка распространения 5.2 – 10.0 нс, что соответствуетмаксимальной тактовой частоте 190 – 100 МГц) и достаточно невысокую цену(несколько долларов за единицу в партиях от 1000 штук).

<img src="/cache/referats/11401/image003.jpg" v:shapes="_x0000_s1027">
Все ИМС этогосемейства имеют практически одинаковую функциональную схему:

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

2.3 Организация оперативнойпамяти

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

С целью повышения быстродействия имеет смысл применитьрасслоение памяти по адресам на 4 модуля (разбиение на 4 модуля оговорено взадании, так что целесообразно применить данное разбиение для улучшениябыстродействия МПВК). Более подробно расслоение по адресам будет рассмотренониже.

Для повышения надежности модулей памяти было решеноприменить корректирующие коды. Наиболее распространен код Хэмминга позволяющийисправлять одиночные и обнаруживать двойные ошибки. Более подробно егоприменение рассматривается ниже.

2.3.1 Память с расслоением

Наличие в системе множества микросхем памятипозволяет использовать потенциальный параллелизм,   заложенный в такой организации.   Для этого микросхемы памяти частообъединяются в банки или модули,  содержащие фиксированное число слов,   причем только к одному из этих слов банка возможно обращение в каждыймомент времени.   Как ужеотмечалось,    в реальных системахимеющаяся скорость доступа к таким банкам памяти редко оказываетсядостаточной.   Следовательно,    чтобы получить большую скоростьдоступа,   нужно осуществлятьодновременный доступ ко многим банкам памяти.  Одна из общих методик,   используемых для этого,   называется расслоением памяти.  При расслоении банки памяти обычно упорядочиваются так,    чтобы N последовательных адресов памятиi,    i+1,    i+2,   ... ,    i+N-1 приходились на Nразличных банков.   В i-том банке памятинаходятся только слова,    адреса которыхимеют вид k*N + i (где 0 < k < M-1,   а M число слов в одном банке).   Можнодостичь в N раз большей скорости доступа к памяти в целом,    чем у отдельного ее банка,    если обеспечить при каждом доступеобращение к данным в каждом из банков.  Имеются разные способы реализации таких расслоенных структур.   Большинство из них напоминают конвейеры,    обеспечивающие рассылку адресов в различныебанки и мультиплексирующие поступающие из банков данные.   Таким образом,   степень или коэффициент расслоенияопределяют распределение адресов по банкам памяти.   Такие системы оптимизируют обращения попоследовательным адресам памяти,    чтоявляется характерным при подкачке информации в кэш-память при чтении,    а также при записи,    в случае использования кэш-памятьюмеханизмов обратного копирования.  Однако,    если требуется доступ кнепоследовательно расположенным словам памяти,  производительность расслоенной памяти может значительно снижаться.  

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

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

Подобные проблемы могут быть решены какпрограммными, так и аппаратными средствами.

2.3.2 Применениекода Хэмминга в модулях памяти

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

Так как большинство современныхвысокопроизводительных микропроцессоров имеют разрядность 64 бита, необходимообеспечить разрядность памяти не менее 64 бит. Этой разрядности соответствуеткод Хэмминга (72, 64), что означает наличие 64 информационных разрядов и 8контрольных. Можно рассчитать эффект от применения корректирующего кодирования:

Пусть вероятность отказа одиночного модуля памятиразрядностью 1 бит за некоторое время P1=10-5, тогдавероятность отказа одного из необходимых 64 модулей памяти за то же время Pобщ=64*P1=6.4*10-4.В случае применения кода Хэмминга для потери информации необходимы две ошибки в72-х разрядах: Pобщ=(72*P1)*(71*P1)= 5.112*10-7.Таким образом надежность возрастает более чем на три порядка при увеличениистоимости на 12.5%. Разумеется эти рассуждения верны лишь в случае пренебрежимомалой вероятности отказов и стоимости кодера и декодера по сравнению с модулямипамяти, однако в случае реальных объемов памяти это действительно так.

2.4 Организациярезервирования и восстановления при отказе любого компонента МПВК

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

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

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

Также стоит подчеркнуть, что, несмотря навозможности организации отказоустойчивости МПВК, все наиболее серьезныереализации отказоустойчивых вычислительных систем представляют собой ММВК. Этообъясняется большей изолированностью, а следовательно и к меньшему воздействиюотказавших модулей на другие модули в ММВК.
3. Организация функционированияОС на МПВК

ОС МПВК должна выполнять все функции ОСоднопроцессорной ЭВМ, однако дополнительно она должна обеспечивать эффективноеиспользование ресурсов многопроцессорного комплекса (см. разделы “Симметричнаямногопроцессорная обработка”, “Нити”). Так как проблемы реализации ОС болеесерьезны, чем в однопроцессорном варианте, необходимо уделить особое вниманиеобеспечению корректного конкурентного доступа (предлагается использованиесемафоров – см. “Семафоры”). Для избежания простоев системы необходимо избегатьтупиковых ситуаций (см. разделы “Тупиковые ситуации”, “Предотвращение тупиковыхситуаций”). Так как эффективных алгоритмов разрешения тупиков без потериинформации, в общем случае, не существует, данные методы не рассматриваются(это в основном уничтожение процессов, начиная с наименее приоритетныхпроцессов по какому-либо определенному заранее критерию).

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

3.1 Симметричнаямногопроцессорная обработка
(Symmetric Multiprocessor Processing – SMP)

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

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

Хотявсе процессоры в SMP системе функционально идентичны, выделяется два их типа:загрузочный процессор (BSP) и прикладные процессоры (АР). Какой процессориграет роль загрузочного, определяется аппаратными средствами или совместноаппаратурой и BIOS. Это сделано для удобства и имеет значение только во времяинициализации и выключения. BSP-процессор отвечает за инициализацию системы иза загрузку ОС. АР-процессор активизируется после загрузки ОС.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В SMP ОС целесообразно использовать методвзаимоблокировки для управления прерываниями между процессорами. По сути,взаимоблокировка является программной процедурой, которая блокирует доступвторого процессора к уже занятому ресурсу. Например, когда ядро хочет получитьдоступ к защищенной области, такой как очередь отложенных вызовов процедур, онодолжно «приобрести» замок, который связан с очередью. Если замокнаходится в распоряжении какого-либо процессора, то другой процессор пытаетсяполучить замок до тех пор, пока его не освободит другой процессор.

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

Ядро также может управлять нитью, назначая ей одноиз трех состояний: готова, выполняется или ждет. Когда нить ждет результатовзапроса, ядро изменяет состояние нити с «выполняется» на«ждет» и удаляет ее из очереди на выполнение. После того как нитьполучила ожидаемую ею информацию, ядро изменяет состояние нити с«ждет» на «готова» и возвращает ее в очередь. Нитьвыполняется, когда появляется возможность.

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

3.2 Нити (threads)

Понятие «легковесного процесса»(light-weight process), или, как принято называть его в современных вариантахОС, «thread» (нить, поток управления) давно известно в областиоперационных систем. Интуитивно понятно, что концепции виртуальной памяти ипотока команд, выполняющегося в этой виртуальной памяти, в принципе,ортогональны. Ни из чего не следует, что одной виртуальной памяти долженсоответствовать один и только один поток управления. Поэтому, например, в ОСMultics допускалось (и являлось принятой практикой) иметь произвольноеколичество процессов, выполняемых в общей (разделяемой) виртуальной памяти.

Понятно, что если несколько процессов совместнопользуются некоторыми ресурсами, то при доступе к этим ресурсам они должны синхронизироваться(например, с использованием семафоров, см. раздел “Семафоры”). Многолетний опытпрограммирования с использованием явных примитивов синхронизации показал, чтоэтот стиль «параллельного» программирования порождает серьезные проблемыпри написании, отладке и сопровождении программ (наиболее трудно обнаруживаемыеошибки в программах обычно связаны с синхронизацией). Это явилось одной изпричин того, что в традиционных вариантах ОС понятие процесса жесткосвязывалось с понятием отдельной и недоступной для других процессов виртуальнойпамяти. Каждый процесс был защищен ядром операционной системы отнеконтролируемого вмешательства других процессов. Многие годы это считалосьодним из основных достоинств системы (впрочем, это мнение существует и сегодня).

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

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

Что же понимается под «нитью» (thread)?Это независимый поток управления, выполняемый в контексте некоторого процесса.Фактически, понятие контекста процесса изменяется следующим образом. Все, чтоне относится к потоку управления (виртуальная память, дескрипторы открытыхфайлов и т. д.), остается в общем контексте процесса. Вещи, которые характерныдля потока управления (регистровый контекст, стеки разного уровня и т. д.),переходят из контекста процесса в контекст нити. Общая картина показана нарисунке:

<img src="/cache/referats/11401/image004.gif" v:shapes="_x0000_s1036">

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

еще рефераты
Еще работы по компьютерам и переферийным устройствам