Тема OS22асу. Многопроцессорный режим работы Мультипроцессирование - в соответствии с первоначальным определением мультипроцессирование это выполнение программы несколькими процессорами, каждый из которых обрабатывает отдельный поток команд и асинхронно работает с общей памятью. При этом процессоры не обязаны быть эквивалентными и иметь одинаковый набор команд: мультипроцессирование может обеспечиваться, скажем, фронтальными процессорами каналов ввода/вывода. К примеру, одной из первых форм режима мультипроцессирования было асинхронное выполнение операций центральным процессором и каналами ввода/вывода. В настоящее время под мультипроцессированием обычно подразумевают одновременное выполнение двух и более процессов (программ) несколькими процессорами вычислительной системы. Во всех случаях предполагается наличие независимых потоков команд: разные процессы или нити (потоки) одного процесса. Мультипроцессор (multiprocessor) - компьютер, имеющий два и более процессоров и работающий в режиме мультипроцессирования. Многопотоковость (multithreading) - вид мультипроцессирования, при котором процесс разделяется на потоки (образно выражаясь, траектории процессора в пространстве команд), которые выполняются параллельно разными процессорами. Средств поддержки многопроцессорной обработки - мультипроцессирование. Мультипроцессирование приводит к усложнению всех алгоритмов управления ресурсами. В наши дни становится общепринятым введение в ОС функций поддержки многопроцессорной обработки данных. Такие функции имеются в ОС Solaris 2.x фирмы Sun, Open Server 3.x компании Santa Crus Operations, OS/2 фирмы IBM, Windows NT фирмы Microsoft и NetWare 4.1 фирмы Novell. Многопроцессорные ОС могут классифицироваться по способу организации вычислительного процесса в системе с многопроцессорной архитектурой: асимметричные ОС и симметричные ОС. Асимметричная ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам. Симметричная ОС полностью децентрализована и использует весь пул процессоров, разделяя их между системными и прикладными задачами. характеристики ОС, связанные с управлением только одним типом ресурсов - процессором. Важное влияние на облик операционной системы в целом, на возможности ее использования в той или иной области оказывают особенности и других подсистем управления локальными ресурсами - подсистем управления памятью, файлами, устройствами ввода-вывода. Специфика ОС проявляется и в том, каким образом она реализует сетевые функции: распознавание и перенаправление в сеть запросов к удаленным ресурсам, передача сообщений по сети, выполнение удаленных запросов. При реализации сетевых функций возникает комплекс задач, связанных с распределенным характером хранения и обработки данных в сети: ведение справочной информации о всех доступных в сети ресурсах и серверах, адресация взаимодействующих процессов, обеспечение прозрачности доступа, тиражирование данных, согласование копий, поддержка безопасности данных. ПК как гетерогенная многопроцессорная архитектура с одной ОС. Компьютерные сети: локальные, региональные и глобальные, корпоративные, виртуальные частные сети (распределенные ОС - Gooos). Симметричные и ассиметричные параллельные, дублируюшие и мажоритарные архитектуры, кластеры с мнолгопространственной логической структурой. Одна из важных тенденций развития вычислительной техники состоит в расширенном внедрении мультипроцессорных систем (архитектур), т. е. построении вычислительных комплексов, содержащих по несколько процессоров. Мультипроцессорные архитектуры реализуются в вычислительных системах уже в течение нескольких десятилетий, однако интерес к ним снова обостряется в связи с появлением недорогих и специализированых микропроцессоров. В настоящее время строятся системы с использованием нескольких тясяч процессоров. А дальнейшее развитие техники обеспечит, по-видимому, возможность создания систем, содержащих миллионы процессоров. Представление о процессоре как о наиболее ценном ресурсе данной вычислительной системы, обычное для первых двух десятилетий развития современной вычислительной техники, сейчас уже практически устарело. В настоящее время с появлением мультипроцессорных архитектур гораздо большее значение приобретают проблемы надежности, параллелизма в вычислениях, оптимальных схем коммутации и состязаний между процессорами, пытающимися получить доступ к одним и тем же ресурсам. Одно из основных достоинств мультипроцессорных систем состоит в том, что в случае выхода из строя одного процессора оставшиеся процессоры могут продолжать работать. Однако само собой это не происходит. Для этого требуется тщательная проработка конструкции системы. Вышедший из строя процессор должен каким-то образом проинформировать другие процессоры о том, что они должны принять на себя его нагрузку. Работоспособные процессоры должны быть в состоянии обнаружить процессор, который вышел из строя. Операционная система должна заметить, что какой-то конкретный процессор отказал и его необходимо исключить из списка распределяемых ресурсов. Кроме того, поскольку общий объем ресурсов теперь уменьшился, операционная система должна несколько перестроить свои стратегии распределения ресурсов, чтобы предотвратить возможность перегрузки системы. Windows NT поддерживает только архитектуру с симметричной мультипроцессорной обработкой - SMP. Системы с симметричной мультипроцессорной обработкой позволяют коду операционной системы выполняться на любом свободном процессоре или на всех процессорах одновременно, причем каждому из процессоров доступна вся память. Чтобы гарантировать правильную работу системы, код таких ОС должен следовать строгим правилам. Windows NT обладает свойствами, которые принципиально важны для мультипроцессорной ОС: 1. Код ОС может выполняться на любом из доступных процессоров и на нескольких процессорах одновременно. За исключением кода ядра, которое выполняет планировку потоков и обработку прерываний, весь код ОС может быть вытеснен потоком с более высоким приоритетом. 2. В одном процессе может быть несколько потоков управления. Потоки позволяют процессу выполнять разные части его программы на нескольких процессорах одновременно. 3. Серверные процессы могут иметь несколько потоков для одновременной обработки запросов от нескольких клиентов. 4. Имеются механизмы совместного использования объектов потоками разных процессов, и гибкие возможности коммуникации между потоками разных процессов, включая совместно используемую память и оптимизированное средство передачи сообщений. Глава 11. Мультипроцессорные системы 11.1 Введение 11.2 Надежность 11.3 Использование параллелизма 11.4 Максимальное распараллеливание 11.5 Цели мультипроцессорных систем 11.6 Автоматическое распараллеливание 11.6.1 Расщепление цикла 11.6.2 Редукция высоты дерева 11.7 Правило <никогда не ждать> 11.8 Организация мультипроцессорной аппаратуры 11.8.1 Общая шина 11.8.2 Матрица координатной коммутации 11.8.3 Многопортовая память 11.9 Системы со слабо и сильно связанными процессорами 11.10 Организация <главный - подчиненный> 11.11 Мультипроцессорные операционные системы 11.12 Организация мультипроцессорных операционных систем 11.12.1 Организация <главный - подчиненный> 11.12.2 Организация с раздельными мониторами 11.12.3 Симметричная организация 11.13 Производительность мультипроцессорных систем 11.14 Экономическая эффективность мультипроцессорных систем 11.15 Восстановление после ошибок 11.16 Симметричная мультипроцессорная система TOPS-10 11.17 Системы C.mmp и Cm* 11.18 Перспективы мультипроцессорных систем