В. Столлингс - Операционные системы (1114679), страница 58
Текст из файла (страница 58)
Каковы основные требования к выполнению параллельных процесс~~ 1.4. Перечислите три степени осведомленности процесса о наличии, процессов и вкратце опишите их. . $ 1.5. В чем основное различие между конкурирующими и сотруднич процессами? $.6. Перечислите основные проблемы, связанные с конкуренцией проц вкратце опишите их. $,7. Перечислите требования к взаимоисключениям. 1.8. Какие операции могут выполняться над семаФорами? $.9. В чем различие между бинарными и обобщенными семафорами? .10.
В чем различие между сильными и слабыми семаФорами? ,11. Что такое монитор? ,12. В чем состоит различие между блокирующими и неблокирующим, . циями в системе передачи сообщений? ,13. Какие условия обычно связаны с задачей читателей/писателей? . з и для синхронизации сотрудничающих процессов. Примером послед служить модель производителя/потребителя, в которой один процесс по пые з буфер, а другой (или несколько процессов) извлекает их оттуда. Разработан ряд алгоритмов для обеспечения взаимных исключений, известным из которых является алгоритм Деккера. Недостатки прогр зодхода — высокие накладные расходы процессорного времени и риск ' ких ошибок. Другой подход к решению задачи взаимоисключений с ользовании специализированных машинных команд.
Этот подход нес жает накладные расходы, однако все равно имеет низкую эффективн '" зи с использованием технологии пережидания занятости. Еще один подход к решению задачи поддержки взаимных исключе . ' ит в обеспечении специализированных возможностей в операционной с ~более широко распространенными технологиями являются семафоры а передачи сообщений. Семафоры используются для передачи сигнал~" процессами и могут быть легко применены для решения задачи учений. Сообщения, кроме обеспечения взаимоисключений, являются ным средством связи между процессами. 15.9. РЕКОМЕНДУЕМАЯ::.ЛИТЕРАТУРА= В 1ВЕг182) обсуждаются вопросы, связанные с параллельными вычисления- взаимными исключениями, семафорами и другими темами. Более формальрассмотрение темы, включая знакомство с распределенными системами, ажно найти в ГВЕХ90).
1АХГ088) — еще одна работа по данной тематике, соержащая большое количество Реальных задач и их решений. Множество приняемых при работе с параллельными вычислениями алгоритмов, включающих программный, так и аппаратный подходы, содержится в 1ВА'т'Х86). ~цОАК85) представляет собой классическую работу, в которой представлен Формальный подход к определению последовательных процессов и параллельных вычислений. Несколько растянутое формальное рассмотрение взаимоисключений имеется в 11АМР86). Практическую помощь в понимании проблем параллельных вычислений окажет работа 1ВЯЛ)090), так же как и хорошо организованная работа 1ВАС098).
1В1ВВ89) представляет собой отличное практическое введение в программирование с использованием параллельных вычислений. Познакомиться с мониторами поможет 1В11НК95), а в работе 1КАХ098) проведен поучительный анализ 12 различных стратегий планирования применительно к задаче читателей/писателей. 1.АХРО88 АхГои1 Т. Сопситтепг Ртоутаттту: Рипбатепга1 Тесании?иез ~от Неар Тзте апс1 Рата1Ы ЯоКГиате 11ев1ди. — Иеи 'з'ого: Ъ1т11еу, 1988. ВАСО98 Васол Ю.
Сопситтепг Яув1етз. — Веас11пд, МА: АсЫ1вол-%'ев1еу, 1998 ,.ВЕИ82 Веп-Ап М. Рппс?р$ез о~ Сопситтепг Ртоапитт1пу. — Епа1еюоой С1Шв,; 111. Ргелйсе НаИ, 1982. ' вех90 Веп-Аг1 м. Рппсцйез о1' сопситтепз апа' юзвгпьи1ес1 Ртоутатт?пу. —; Еля1еъоой С1ЫХз, Хд: Ргел$1се На11, 1990. В1ЕВ89 В1гге11 А. Ап 1пгтойисйоп 1о Ртоутатт?пу изгй Тйтеас~в. — ЯВС ВезеагсЬ Йерог1 35, Сокпрас1 ЯузФешз КевеагсЬ СелФег, Ра1о АИо, СА, Запцагу 1989. А~а11аЫе а1 1:игр: ~/ижи. гезеагсй.с1191са1.сопи'88С. ! В11НВ95 Вцлг Р., РогЫег М. Молйог С1авв1т1са11оп. — АСМ Сотриипа Яитиеув, Магсл 1995.
~,,НОАВ85 Ноаге С. Соттип1сайпу Яедиепзш1 Ртасеввез. — Епя1езтоо6 С11з1в, Ид: Ргел1зсе На11, 1985. ~ ЕА1'1098 Кала Я., 1.ее д. Ала1уз1з аж1 Яо1ц$1ол оХ Хоп-Ргееп~р1Ме Ро11с1ев Хог Ясле1и11ля Кеадегз алс1 %'грега. — Оретайпу Яуз1етз Неиеи~, Хц1у 1998. ~ 1'А1~1Р86 1.атлрог$ 1. ТЬе Мп1па1 Ехс1цв1оп РгоЫет.
— Уоитпа1 о~ Ие АСМ, Арг11 1986 ',ВАЪЪ86 Кау а1 М. А1уотьтв 1ат Мигиа1 ЕхсЬ,шп. С ЬНаае, МА; Мтт Ргев,. 1.986. ~ К1ЪО 11090 Нш1о1рл В. Яе11-Азвезвипепй Ргосес1иге ХХ1: Сопсиггепсу. — Соттип1са- 1'' нопв оР Ие АСМ, Мау 1990. Ь1о. злдлчи 5.1 П Роцессы и потоки представляют мощный инструмент структурирования при Реализации существенно более сложных, чем простые последовательные, программ. Цель данного упражнения — введение сопрограмм и сравнение их с процессами. Рассмотрим простую задачу из 1СОМЪу631.
'Часть 2. а о. Параллельные вычисления: взаимоисключения... 307 ац ~Ьп1 ( 125 ); „.д геаа. () ,,181' 1е ~ ггце) ЯЕИХАРО ( з пЬц); 1аг(1п~ 1 = Ор 1 < 80; 1-~+) ( гз = 1гЬц1 (1); ЕЕЯОКЕ зсрлазЬ; !! !!, НЕЯВКЕ эс)пазЬ; 1аг(1пг ) = О; ~ < 125; ~++) 1 аьЬЬий(~) = ар; рЕЯОКЕ зоцааЬ; чаЫ з Чпа а) !,' ) ( иЬ11е(сгце) ° $! !!) Бр = гз; РЕЯОКЕ рг1гп; РЕЯБКЕ гоаб; (гэ == "+"') — !! ) !! ! ВЕЯЛКЕ р! 1г !' !! Ф !! .
ЕЕЯОКЕ рг1п эр = гя! ЯЕЯОКЕ рг1г!; гав эр; аг 1пЬий(ВО),. Часть 2. Прочесть 80-столбцавую перфокарту и вывести ее в виде 125-с строк; при этом после каждой перфокарты следует добавить пробел, пару звездочек ('*) следует заменить символом ) . а, Разработайте решение поставленной задачи в виде обычной п най программы, Вы увидите, что решение задачи не такое простое' жется. Взаимодействие различных элементов программы оказыва тачка сложным в связи с преобразованием длины строк; кроме то считанной с перфокарты строки меняется в зависимости от того„ пар звездочек удалось в ней обнаружить.
Чтобы сделать решение ц' ' иай задачи более понятным и минимизировать количество поте ошибок, имеет смысл реализовать программу как три различные п Первая считывает строки перфокарты, добавляет к каждой из них . записывает поток символов во временный файл. После того как б, таны все перфокарты, вторая процедура приступает к чтению файла, выполняет замену ** на ) и записывает результат во второф,'. ный файл. Третья процедура читает второй временный Файл и в строками по 125 символов.
б, Последовательное решение непривлекательно хотя бы в силу бо кладных расходов на операции ввода-вывода и создание времени Канвей (Сапа'ау) предложил новый вид структуры программы,, грамму, которая позволяет написать приложение как три прогр соединенные к односимвольному буферу (см, листинг 5.22). При ванин традиционных процедур между вызывающей и вызываемой" рами устанавливается отношение ведущий/ведомый. Вы " процедура может в любой момент осуществить вызов; вызываемая ' ра начинает работу со своей точки входа и возвращает управле вающей процедуре в точке вызова.
Сопрограмма демонстрирует метричные отношения. При каждом вызове выполнение прадо последней активной точки вызванной процедуры. Поскольку в невозможно говорить а там, что вызывающая процедура "выше"- мой, возврата из процедуры нет. Вместо этого любая сопрограмма редать управление любой другой сопрограмме при помощи командьь'" М При первом вызове сопрограммы она "продолжает выполнение точки входа. Затем сопрограммы возобновляют выполнение в последних вызовов команды газете.
Заметим, что одновременно и палняться только одна сопрограмма основной программы и чтоуправления явным образом указывается в коде сопрограммы, так, рить о параллельных вычислениях в этом случае не приходится. те и поясните работу программы, приведенной в листинге 5.22. в. В программе нет условия окончания работы. Полагая, что п ввада-вывода КЕАБОАР,О возвращает значение ~гае, если успешно и размещает 80-символьный образ в 1пЬц~ (и ~а1эе в противном измените программу так, чтобы она учитывала возможность око ния карты (заметим, что в этом случае последняя выведенная стра содержать менее 125 символов).
г. Перепишите это решение в виде множества, состоящего из трех использованием семафоров. ~стинг 5.22. Применение сопрограмм 5. Параллельные вычисления: взаимоисключения... 1пгп = 1ср )~ритический раздел / Ь1ссЕей(1с() =- га1ае; /* Остальной код */ Ь|осКеб(0) = га1аер Ь1ос):ес((1) = Га1зе; гыгп = О( рагЬее(п(Р(0), Р(1) ) р Рассмотрим следующую сагзг (пав и = 50; (пав еа11у; чс1с ~ага1() программу: Ы 1 со~~п Ь; 1ег(сонг~ = 1; ( Ьа11у++; ,'с(с уаахп ( ) ( 'а11у = О," рагЬес(п(Ьо~а1(), Ьсса1())' иг(ге(са11у() р иЬ1 1е ( г где ) ( Ь1ссЕес((1б) -- Ьгые; жЬ11е(1цгп != 1с) нЬ11е (Ь1сс)'ес((1-1с)) ) Ою 0 ~ )) 1ю )++) Часть 2.