Главная » Просмотр файлов » Гордеев А.В. Операционные системы (2-е изд., 2004)

Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 61

Файл №1186250 Гордеев А.В. Операционные системы (2-е изд., 2004) (Гордеев А.В. Операционные системы (2-е изд., 2004)) 61 страницаГордеев А.В. Операционные системы (2-е изд., 2004) (1186250) страница 612020-08-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 61)

Если пул буферов заполнится и к нему обратится процесс«поставщик», то он будет заблокирован на семафоре 5_свободно в результате вы­полнения операции Р(Б_свободно).о решении задачи о поставщике и потребителе общие семафоры применены дляучета свободных и заполненных буферов. Их можно также применить и для рас­пределения иных ресурсов.Синхронизация взаимодействующих процессовспомощью семафоровожно использовать семафорные операции для решения таких задач, в которыхУ пешное завершение одного процесса связано с ожиданием завершения другого.Редположим, что существуют два процесса ПР1 и ПР2. Необходимо, чтобы про­се IIP l запускал процесс ПР2 с ожиданием его выполнения, то есть ПР1 не бупродолжать свое выполнение до тех пор, пока процесс ПР2 до конца не выполсвою работу.

Программа, реализующая такое взаимодействие, представлена влистинге 7.12.232Глава 7. Организация параллельных взаимодействующих вычисленийЛистинг 7.12. Пример синхронизации процессовvar S : Semaphore;beginInitSem(S.O):ПР1: beginПРИ; { первая часть ПР1 }ON ( ПР2 ); { поставить на выполнение ПР2 }P(S);ПР12; { оставшаяся часть ПР1 }STOPend;ПР2:beginПР2; { вся работа программы ПР2 }VCS):STOPendendНачальное значение семафора S равно нулю. Если процесс ПР1 начал выполнять­ся первым, то через некоторое время он поставит на выполнение процесс ПР2, послечего выполнит операцию P(S) и «заснет» на семафоре, перейдя в состояние пассив­ного ожидания.

Процесс ПР2, осуществив все необходимые действия, выполнитпримитив V(S) и откроет семафор, после чего процесс ПР1 будет готов к дальней­шему выполнению.Задача «читатели-писатели»Другой важной и часто встречающейся задачей, решение которой также требует син­хронизации, является задача «читатели-писатели». Эта задача имеет много вариан­тов. Наиболее характерная область ее использования — построение систем управле­ния файлами и базами данных, информационно-справочных систем. Два классапроцессов имеют доступ к некоторому ресурсу (области памяти, файлам). «Читате­ли» — это процессы, которые могут параллельно считывать информацию из некото­рой общей области памяти, являющейся критическим ресурсом.

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

Процессы «писатели» запуска!гпр п р т в а с и н х р о н и з а ц и и и связи взаимодействующих процессов<сооа с пульта кассира, когда он оформляет для нас тот или иной билет. Имеется боль­ше количество как читателей, так и писателей.Пример программы, реализующей решение данной задачи в первой постановке,дставлен в л и с т и н г е 7.13. Процессы «читатели» и «писатели» описаны в видесоответствующих процедур.Листинг 7.13. Решение задачи «читатели-писатели» с приоритетом в доступек критическому ресурсу читателейR. W : semaphore:varN_R : integer:procedure ЧИТАТЕЛЬ;beginP(R):Inc(NR):{ NR:=NR +1 }if NR = 1 then P(W):V(R):Read_0ata; { критическая секция }P(R);Dec(NR);if N_R = 0 then V(W);V(R)end;procedure ПИСАТЕЛЬ;beginP(W);Write_Data; { критическая секция }V(W)end1beginNR:=0:InitSem(S.l): InitSem(W,l);parbeginwhile true do ЧИТАТЕЛЬandwhile true do ЧИТАТЕЛЬandwhile true do ЧИТАТЕЛЬandwhile true do ПИСАТЕЛЬandwhile true do ПИСАТЕЛЬandwhile true do ПИСАТЕЛЬpa rendend.РИ решении данной задачи используются два семафора R и W, а также переменNR, предназначенная для подсчета текущего числа процессов типа «читатели»,Годящихся в критической секции.

Доступ к разделяемой области памяти осузд234Глава 7. Организация параллельных взаимодействующих вычисл^нн"ществляется через семафор W. Семафор R требуется для взаимного исключенапроцессов типа «читатели».Если критический ресурс не используется, то первый появившийся процесс поивходе в критическую секцию выполнит операцию P(W) и закроет семафор. Еслипроцесс является читателем, то переменная NR увеличится на единицу, и последу­ющие читатели будут обращаться к ресурсу, не проверяя значения семафора Wчто обеспечит параллельность их доступа к памяти. Последний читатель, покида­ющий критическую секцию, является единственным, кто выполнит операцию V(W)и откроет семафор W. Семафор R предохраняет от некорректного изменения значе­ния NR, а также от выполнения читателями операций P(W) и V(W).

Если в критичес­кой секции находится писатель, то на семафоре W может быть заблокирован толь­ко один читатель, все остальные будут блокироваться на семафоре R. Другиеписатели блокируются на семафоре W.Когда писатель выполняет операцию V(W), неясно, какого типа процесс войдет вкритическую секцию. Чтобы гарантировать получение читателями наиболее све­жей информации, необходимо при постановке в очередь готовности использоватьдисциплину обслуживания, учитывающую более высокий приоритет писателей.Однако этого оказывается недостаточно, ибо если в критической секции продол­жает находиться по крайней мере один читатель, то он не даст обновить данные, нои не воспрепятствует вновь приходящим процессам «читателям» войти в своюкритическую секцию.

Необходим дополнительный семафор. Пример правильногорешения этой задачи приведен в листинге 7.14.Листинг 7.14. Решение задачи «читатели-писатели» с приоритетом в доступек критическому ресурсу писателейvar S, W, R : semaphore;NR : integer:procedure ЧИТАТЕЛЬ;beginPCS): PCR):Inc(NR);if NR = 1 then P(W):VCS): VCR):Read_Data; { критическая секция }PCR):Dec(NR);if NR = 0 then VCW);VCR)end;procedure ПИСАТЕЛЬ;beginPCS): P(W);Write_Oata: { критическая секция }VCS): VCW)end;beginNR:=0;InitSem(S.l): InitSem(W.l); InitSem(R.l);parbeginwhile true do ЧИТАТЕЛЬandwhile true do ЧИТАТЕЛЬandwhile true do ЧИТАТЕЛЬandwhile true do ПИСАТЕЛЬandwhile true do ПИСАТЕЛЬandwhile true do ПИСАТЕЛЬparendend.Как можно заметить, семафор S блокирует приход новых читателей, если появил­ся хотя бы один писатель.

Обратите внимание, что в процедуре ЧИТАТЕЛЬ исполь­зование семафора S имеет место только при входе в критическую секцию. Послевыполнения чтения уже категорически нельзя использовать этот семафор, ибо онтут же заблокирует первого же читателя, если хотя бы один писатель захочет вой­ти в свою критическую секцию. И получится так называемая тупиковая ситуация,ибо писатель не сможет войти в критическую секцию, поскольку в ней уже нахо­дится читатель. А читатель не сможет покинуть критическую секцию, потому чтописатель желает войти в свою критическую секцию.Обычно программы, решающие проблему «читатели-писатели», используют каксемафоры, так и мониторные схемы с взаимным исключением, то есть такие, кото­рые блокируют доступ к критическим ресурсам для всех остальных процессов, еслиодин из них модифицирует значения общих переменных.

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

Поэтому схема, представленная в листинге 7.15 и применяемаяиногда для решения задачи «читатели-писатели», в случае одного писателя допус­кает одновременное выполнение операций чтения и записи. После чтения данныхпроцесс «читатель» проверяет, мог ли он получить неправильное значение, некор­ректные данные (вследствие того, что параллельно с ним процесс «писатель» мог ихизменить), и если обнаруживает, что это именно так, то операция чтения повторяется.Листинг 7.15. Синхронизация процессов «читатели» и «писатель» без взаимного исключенияvar VI, V2 : integer:Procedure ПИСАТЕЛЬ;BeginInc(Vl);Write DataV2:=V1End:продолжениеё>236Глава 7 , О р г а н и з а ц и я параллельных в з а и м о д е й с т в у ю щ и х в ы ч и с л е н ^Листинг 7.15 (продолжение)Procedure ЧИТАТЕЛЬ;Var V: i n t e g e rBeginRepeatV:= V2;Read_DataU n t i l VI = VEnd;BeginVI := 0:V2 := 0:Parbeginw h i l e t r u e do ЧИТАТЕЛЬandw h i l e t r u e do ЧИТАТЕЛЬandw h i l e t r u e do ЧИТАТЕЛЬandw h i l e t r u e do ПИСАТЕЛЬpa rendend.Этот алгоритм использует для данных два номера версий, которым соответствуютпеременные VI и V2.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6551
Авторов
на СтудИзбе
299
Средний доход
с одного платного файла
Обучение Подробнее