В. Столлингс - Операционные системы (1114679), страница 37
Текст из файла (страница 37)
Наприме а Р - Р, Рассмотрим программу, в которой используется подпрограмма ввода- вывода В мно многозадачнои среде, в которой пользователю позволено создавать процессы осн основная программа может сгенерировать новый процесс для управления вводом выво д -выводом, а затем продолжить свою работу. Однако если для дальнейшего вы полнения основной программы необходимы результаты операции ввода в,в да, то она должна ждать, пока не закончится работа подпрограммы ввода-вывода гт д . Подобное приложение можно осуществить такими способами. - Реализовать всю ать всю программу в виде единого процесса. Такой прямолинейный д ° яется вполне оооснованным.
Недостатки этого подхода связаны с управлением памя памятью. Эффективно организованный как единое целое процесс может заним анимать в памяти много места, в то время как для подпро- "Р"ммы вво а-выв да-вывода требуется относительно небольшое адресное пространИз-за того ч о что подпрограмма ввода-вывода выполняется в адресном "Ространстве бол б более объемнои программы„во время выполнения вводавь'пода весь ь процесс должен оставаться в основной памяти, либо операция ввода-выво а да будет выполняться с применением свопинга.
То же происхо- 4 гт отоки симметричная мультипроцессорная обработка Зя 1 ае, когда и основная программа, и подпрограм овины в виде двух потоков в одном адресном пространстве Основная программа и подпрограмма ввода-вывода реализуютгя в вид ~ отдель «ьных процессов. Это приводит к накладным затратам, возника э;., результс тате создания подчиненного процесса. Если ввод-вывод произво'"' д~статочно часто, то необходимо будет либо оставить такой подчи процес есс активным на все время работы основного процесса, что свя" затратами на управление ресурсами, либо часто создавать и завершат':,;: цесс с подпрограммой, что приведет к снижению эффективности.
Ре; яизовать действия основной программы и подпрограммы ввода-вы единый поток. Однако для основной программы следует создать свое пространство (свой домен), а для подпрограммы ввода-вывода — свое. образом, поток в ходе выполнения программы будет переходить из од ресного пространства к другому. Операционная система может управлять дву га вумя адресными пространствами независимо, не затрачивая никаких д тельных ресурсов на создание процесса.
Более того, адресное простран пользуемое подпрограммой ввода-вывода, может использоваться совм ' другими простыми подпрограммами ввода-вывода. Опыт разработчиков операционной системы ТВ1Х свидетельствует третий вариант заслуживает внимания и для некоторых приложений аться самым эффективным. Соответствие одного потока нескольким процессам В области распределенных операционных систем (разрабатываемЫ, »вления распределенными компьютерными системами) представляет цепция потока как основного элемента, способного переходить из однй юго пространства в другое.з Заслуживают упоминания операционная ««1з и, в особенности, ее ядро, известное под названием Ва 1ПАЯО921. другого примера можно привести систему Еп»ега1д 1ЯТЕЕ951.
В операционной системе С1о»«дз поток является единицей активност46.' зрения пользователя. Процесс имеет вид виртуального адресного про .о тносящимся к нему управляющим блоком. После создания поток н, ~олнение в рамках процесса. Потоки могут переходить из одного странства в другое и даже выходить за рамки машины (т.е. перех ого компьютера в другой). При переходе потока в другое место он до с собой определенную информацию — такую, как управляющий те',, бальные параметры и сведения по его планированию (например, прио Подход, применяющийся в операционной системе С1о««да, является .
ным способом изоляции пользователя и программиста от деталей ной среды. Деятельность пользователя может ограничиваться одним и, еремещение этого потока из одной машины в другую может быть обу зкционированием операционной системы, руководствующейся такими, ьствами, как необходимость доступа к удаленным ресурсам или вы . загрузки машин «В последние годы активно исследуется тема ««ер» хода процессов и потО о адресного пространства в другое (миграция).
Эта тема раесмаюи ве 14. "Управление распределенными процесс««ми". ",4„2. СИММЕТРИЧНАЯ МНОГОПРОЦЕССОРНАЯ ', ОБРАБОТКА омпьютер рассматривается как м~ин машина, предназначенная для вы - д вател«ных д~й~твнй 13 б«»ль«панстве стве языков программирования -««~»р»«тм задается в виде последовательных инструкций. при работе программы про»«ессор выголняет машинные команды последовательно ь о, одну за другой.
Каждая .ома««д«» представляется в виде последовательности операци" ( бо и (вы рка команды, выборка о«»ерацдов, выполнение операции, сохранение результатов). Такая точка зрения на компьютер никогда не соотв не соответствовала действительности полностью. На уровне микроопераций одноврем . енно генерируются не~колько управляющих сигналов. Уже давно применяется конвез ерная обработка '1 команд, позволяющая выполнять одновременно по край о к а неи мере операции выборки и выголнения.
Оба приведенных примера являются б яются о разцами параллельного аьшо анения функций По мере развития компьютерных технологий и уменьшения стоимости аппаРатного обеспечения разработчики компьютеров находили в б се ольше возможностей реализации параллелизма. Обычно это делалось для позы для повышения производительности, а в некоторых случаях — для повышения надежности, В даннои книге исследуются два наиболее популярных подхода обеспечения о ения одновременной работы проо процессорность (ау««»п»етг1с ««»«»Жргосезаог — ЯМР) и кластеры.
Симметричная многопроцессорная обработка описана в этом разделе, а кластеры — в шестой части. Архитектура 8МР Рассмотрим, каким образом архитектура ЯМР соотносится с общей категоРией параллельных процессоров. Общепринятым методом классификации таких систем по-прежнем чвл у . яется систематика, в которой выделяюгся системы с паРалле««ьным«з и о ессо Флинн и е о роцессорами, впервые введенная Флинном (Иу ) [Р1ХМ72), пп редложил ввести следующие классы компьютерных систем. е Архитектура с о ни д и потоком команд и одним потоком данных (Я1пй1е ?па(»»»с«(оп Я«п 1е Ва1а— Я я1я1)), На одном процессоре выполняется один поток команд; опе а и и в олняются над данными, которые хранятся в единой области памяти.
1«»~- Архитектура с одним по д м потоком команд и многими потоками данных (Язпд1е «» тг«»с»«о«» М«»11» 1е 1)а1а 'р а а — Я1МБ). С каждым из обрабатываемых элементов связань«хранящиеся в памят ти данные, и каждая команда выполняет действия с различными набо ами р . данных, относящимися к разным процессам. од эту катего ию по и р д адают векторныи и матричный процессоры. Архит Р итектура со многими потокам р ит потоками команд и одним потоком данных »«1 .. ' ' д е ва«а — М1я1)).
Последовательность данных пе- »«1«р1е 1«»айаг»»с(»оп Яш 1е Эа Лается набору процессо ов каж лает р, каждый из которых выполняет свою последо'«ельность коман . Та '«е . д. акая структура еще не была реализована. Архит (М««1 ектура со многими потоками ми команд и многими потоками данных " (»р1е 1пзФг«»сйоп М»«1«' (р1е 1«а$а — М1МХ)). Несколько процессоров одно- Часть 2. П ~ Пот ~~киэ симметРичная мультипроце о б б 213 временно выполняют различные последовательности команд с р наборами данных.
В схеме М1МО процессоры являются универсальными, потому что они:: меть возможность обрабатывать все команды, необходимые для соо реобразования данных. Дальнейшая классификация систем с архитектуре ожет производиться в соответствии с тем, как в них осуществляется обмей-, и между процессорами (рис. 4.8). Если каждому процессору выделяется 5ласть памяти, то каждый обрабатывающий элемент является самосто омпыотером. Они обмениваются между собой информацией либо через спе аналы, либо через какие-то сетевые устройства. Такие системы известны ием кластеры (с1ттзгегз) или мультикомпьютеры.
Если процессоры со ользуют общую память, то каждый из них имеет доступ к программам н ' оторые там хранятся. Процессоры могут обмениваться информацией через': ять. Такие системы известны под названием многопроцессорных систем амятыо (вЬагед-птептогу пшЫ1ргосеваог). Параллельный процессор Архитектура о многими потоками команд и многими потоками данных Архитектура с одним потоком команд и многими потоками даннык Совместно используемая память (сильно«вязанные системы) Распределенная память (свободно связанные сиот Быделениеосновных Симметричная Кластеры и подчиненнык процессоров мультипроцессорность Рис. 4.8. Архитектуры систем с параллельными процессорами Одна из общих классификаций многопроцессорных систем основана ак процессы распределяются между процессорами. два главных подход еление основных и подчиненных процессоров и симметричная много ая обработка.
В архитектуре с ведущим и ведомыми проц ... „., ппз$ег/з1ахе агс)т1(есСцге) ядро операционной системы всегда выпол зециально выделенном процессоре. На других процессорах могут вып, илько пользовательские программы и, возможно, утилиты операционн . ы Ведущий процессор отвечает за планирование процессов или потоко ыполняющемуся на ведомом процессоре процессу или потоку понадоб ой-нибудь системный сервис (например, вызов процедуры ввода-в элжен будет послать запрос основному процессору, а затем ждать, поки,. ая программа не закончит свою работу. Такой подход довольно прост, и-: еализации достаточно немного усовершенствовать операционную систе азначенную для однопроцессорных многозадачных систем. Разреше „, тов упрощается, благодаря тому что всей памятью и всеми ресурсами вводардттт« ' да управляет один процессор.
Этот подход имеет ряд недостатков. од ' Сбой в работе основного процессора влечет за собой отказ всей системы. е Основной процессор может тормозить работу всей системы, так как только на нем должны производиться все действия по планированию и управлению процессами. В симметричной многопроцессорной системе (вушгпе1г(с шп1«1ргосеваог) ядожет выполняться на любом процессоре; как правило, каждый процессор планирует свою работу, извлекая имеющийся в наличии процесс или поток накопителя.
Ядро может быть выполнено в виде многих процессов нли мнопотоков; при этом разные его части способны работать параллельно. Симтритный подход несколько усложняет архитектуру операционной системы. 11 жно принять меры предосторожности, чтобы два процессора не выбрали один я тот же процесс или чтобы процесс каким-нибудь образом не выпал из очереди. Необходимо применять специальные методы для разрешения запросов одного и того же ресурса различными процессами и синхронизации запросов.