В. Столлингс - Операционные системы (1114679), страница 55
Текст из файла (страница 55)
Однако поскольку нет гарантии, что некий другой процесс не войдет в монитор до упомянутого ожидающего процесса, при возобновлении работы наш процесс должен еще раз проверить, выполнено ли условие. В случае использования такого подхода процедуры монитора Ьсипс)ебЬыГГег будут иметь следующий вид (листинг 5.16). Часть 2» ( -: .5- Параллельные вычислении: изаимоисключения.. Инструкц ии ~.г з~м~нены ци ы циклами жпз.1е; таким образом, будет выпо ой славия. Однако в,' м м одно лишнее вычисление переменно у 'в как минимум о в и не имеется огран чае отсу у тств ю т лишние переключения процессов ожидающего процесса после вызо .
' у. ва спо~гг' ° г-'; )в," мо мент запуска б й такого рода мониторов может быть:" из полезных особенносте Однои аж ым примитивам условия сна~1.~у пр д е ельное время а с который прождал уведомления в течение пр д п е ельного времени, -' ацесс, каторыи про от того, было уведомление о выпал в список активных независимо от того, ется в с цесс проверяет, выполнено ли усло ' я или нет, При активизации процесс ~овия или б . Такая возможность предотвращает .и а, та продолжает свою ра оту. когда другие процессы сбоят перед у '" гное голодание процесса в случае, ко «ием о м о выполнении условия. но которому происходит уведомление= При и П спальзовании правила, согласно к тве, .
ком можно в -ги гса, а не его насильстве твенная активизация, в систему анд ' аз~ кото ый вызывает активизацию всех ожидающих ямитив сбгоеосавп, которы в асве омлен о количес з может ыть уд б абио в ситуациях, когда процесс не осведомлен в грамме про их цессов. Предположим, например, что в про грам с) аде могут работать с символьными ть потребитель функции арраса и са е лов, он не обязан знать, с" ию сЬгаао)савс, и все ожидающие оцессов. Он просто выполняет инструкцию сЬгаа сав, том что они могут попытаться получить ево' :п олучают уведомление о том, мволав из буфера, ооб ение может использоваться в том: ' Кроме того, широковещательное соо щение есс из а г а п оцесс не в состоянии точ точно определить, какой именно процесс из р и ван.
Хо шим примером такой ситуации м' 'о ' ить испетчер памяти. Допустим, у нас имеется г байт с дно пам ить диспетче и льна й байт. Диспетчеру не из рый процесс освобождает дополнительно сааба ой и аю их цессов сможет работать с В+у байт свободно и иенно из ожидающих процесса с~ ~ и все ожидающие гвательно, он должен использовать в ызав сЬгоабсав~, и все о ~ми проверят, достаточно ли им освобод обо ившейся памяти. П имуществом монитора Лэмпсона-Р д -Ре елла по сравнению с еЛ' реим женность ошибкам. При подходе оара является ега меньшая подверженн е а после получения сигнала проне еделла, поскольку каждая процедура т посла,, икла жЬг1е, процесс может по енную монитора с использованием цикл льное сообщение, и это не приведет ое уведомление или широковещатель бе ившись, что ее зря ак рограмме, получившей сигнал (попросту у д и, программа вновь перейдет в состояние ние ожидания). то чта!" Лэмпсона-Ределла является то, Другим достоинством монитора Лэ амм.'.' абствует использованию модульного под д р по хо а при создании прогр ее типа монитора не требует изме :ие условий при использовании этого типа р ние'; о есс сам проверяет выполне истемы сигналов, так как каждый праце твуюших условий при активизации.
щи' ': ': в'с'М)а При взаимодействии процессов между собой должны удовл . Проц ~гундаментальных требования: синхро ц низа ии и коммуникации. ны быть синхронизированы, с тем чтобы обеспечить выполнение взаимных исключений; сотрудничающие процессы должны иметь возможность обмениваться информацией. Одним из подходов к обеспечению обеих указанных функций является передача сообщений. Важным достоинством передачи сообщений является ее пригодность для реализации как в одно- и многопроцессорных системах с разделяемой памятью, так н в распределенных системах. Системы передачи сообщений могут быть различных типов; в этом разделе мы обратимся только к наиболее общим возможностям и свойствам таких систем. Обычно функции передачи сообщений представлены в виде пары примитивов веу''с) '; получа ель сообщение) г е о е г уз ~ о тпда вмтел ь ~ е О с бгооние ) Эта — минимальный набор операций, требующийся процессам для работы с системами передачи сообщений.
Процесс посылает инфармацию в виде саобвгеяня другому процессу, определенному как голучатсль, вызовом яепс. Получает информацию процесс при помощи выполнения примитива гесе1уе, которому указывает атгуравмтеля сообщения. При разработке систем передачи сообщений следует решить ряд вопросов, которые перечислены в табл. 5.4. В оставшейся части данного раздела мы вкратце коснемся каждого из этих вопросов.
Таблица 5.4. Характеристики систем передачи сообщений Формат Синхронизация Отправление Блокирующее Неблокирующее Получение Блокирующее Неблокирующее Проверка наличия Адресация Прямая О-правление Получение Неявное Явное тГссвсняая Статическая Двкамячсская Бладсяяе Содержимое Длина Фиксированная Переменная Принцип работы очереди ИГО Приоритетная ~их Ронизация ;,:. деленн Передача сообщения между двумя процессами предполагает наличие опре"най степени их синхронизации: получатель не в состоянии получить сооб,, в~евн до тех пар, пока оно не послано другим процессом.
Кроме того„мы должапрелелить, что происходит после того, как процесс вызывает примитивы о или гесегуе. а 5. Параллельные вычисления: взаимоисключения... аегс'. При его выполнении име Сначала Р ассмотрим примитив аег.. р об ение процесс блокируется, либ' либо посылающий сообщение иро мож ности: ожности и у процесса, выпал б . Аналогично — две возмож жает работу. 1митив ге се~ . е, отправлено, то процесс получае Если соо ще б ние было предварительно отпр продолжает работу.
сли сообщения, ожидающего по у л ~ение нет, то: Если соо о тех иор, пока сообщение не будет по а либо процесс блокируется до тех иор, по а)ли о ние отказываясь от дальнейших' б) либо проц есс продолжает выполнение, отк ток получить его. чатель могут быть блокируемы Таким образо, р м и оти авитель, и получатель -омбинации (хотя в реальных-' .
Обычно встречаются три ком ина блокируемыми. правило, только одна или две). 'Ж:. х реализуются, как . И отп авитель'"'- ее отп авлеиие, блокирующее получение. И р ° Блокирующее отправление, ло ются до тех пор, пока соо щ общение не будет дост лучатель блокируются д т андеау (гениево сн ю синхронизацию ироцессовкомбинация обеспечивает тесную синхро ее получение.
Хотя отправ ° Неблокирующ ее отправление, блокирующее и бл кируется до получения может продолжать р ту, або, получатель локи ще всего. Она . ия пожалуй, встречается чаще Эг~ комбинация, ь о но или несколько соо щени процессу посылать одно той. П оцесс, которыи дол . жен получить с ис пить к выполнению каких-то де с максимальной быстротои. р й твий будет';:.' перед тем, как приступить к вы б ение. Примером так ол ит необходимое соо щени . кирован, пока не по уч с ествующий для пред.
системы может ы б ть серверный процесс, существ ния сервисов или ресурсов др угим процессам. неблокирующее получение. . Не бло ° Неблокирующее отправление, ие л .,1 ни один из процессов. б естественен для множества;. ных . Н ер если он используется:: ий и имитив зевс наи олее ных вычислений. Например, ес ~спользованием параллельных ) то данный ии вывода (скажем, на принтер), ~роса на выполнение операции б пр ц аир до сооб ения, после чего ра та и кет быть отправлен в виде сообщ ок ующего отправления с щени ооб ний состоит в. енциальная опасность неблокирующ ет к непрерывной ген когда некоторая ошибка приведет к неирер юзможна ситуация, когда ду эти сообщения могут пр, мщений.
Поскольку блокировка Реду а не и дусмотрена, эт в том числе про " части системных ресурсов, в том чи ютреблению значительнои час ой операционной в угим процессам и само времени и памяти, нанеся вред др ается задача отслв Кроме того, при таком подходе Рогр на и аммиста возлагаетс сату (процесс-получатель долж ен в свою успешной доставки сообщения адресатУ и ением получения сообщения). послать ответ с подтверждением уч большинства ия и имитива гесе'~ей для ол В случае использования пр . В б е говоря, про локи ющая технология. оо щ ственной представляется блокиру ю н ждается в ней для продолже ния работы.