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

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

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

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

Однако это, какУже знаем, приведет к тому, что система не сможет реагировать на внешниесобытия.эт e^T° Т 0 Г ° ч т о ^ ы связывать с каждым процессом собственную переменную, какЬ1ло в рассмотренных нами решениях, можно со всем множеством конкури-224Глава 7. Организация параллельных взаимодействующих вычисленарующих критических секций связать одну переменную, которую Дейкстра пред­ложил рассматривать как некоторый «ключ». Вначале доступ к критической сек­ции открыт. Однако перед входом в свою критическую секцию процесс забираетключ и тем самым блокирует другие процессы.

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

Более того, проверку возможности входав критическую секцию лучше всего выполнять не самим конкурирующим процес­сам, так как это приводит к активному ожиданию, а возложить эту функцию наоперационную систему. Таким образом, мы подошли к одному из самых главныхмеханизмов решения проблемы взаимного исключения — семафорам Дейкстры.Семафорные примитивы ДейкстрыПонятие семафорных механизмов было введено Дейкстрой [10]. Семафор (sema­phore) — это переменная специального типа, которая доступна параллельным процес­сам только для двух операций — закрытия и открытия, названных соответственнооперациями Р и V1. Эти операции являются примитивами относительно семафора,который указывается в качестве параметра операций. Здесь семафор играет рольвспомогательного критического ресурса, так как операции Р и V неделимы при сво­ем выполнении и взаимно исключают друг друга.Семафорный механизм работает по схеме, в которой сначала исследуется состоя­ние критического ресурса, идентифицируемое значением семафора, а затем ужеосуществляется допуск к критическому ресурсу или отказ от него на некотороевремя.

При отказе доступа к критическому ресурсу используется режим пассивно­го ожидания. Поэтому в состав механизма включаются средства формирования иобслуживания очереди ожидающих процессов. Эти средства реализуются супер­визором операционной системы. Необходимо отметить, что в силу взаимного ис­ключения примитивов попытка в различных параллельных процессах одновремен­но выполнить примитив над одним и тем же семафором приведет к тому, что онаокажется успешной только для одного процесса. Все остальные процессы на вре­мя выполнения примитива будут взаимно исключены.Основным достоинством семафорных операций является отсутствие состояв!активного ожидания, что может существенно повысить эффективность работмультизадачной системы.В настоящее время на практике используется много различных видов семафорных механизмов [41].

Варьируемыми параметрами, которые отличают различивиды примитивов, являются начальное значение и диапазон изменения значен!• голландского Proberen (проверить), V — от голландского Verhogen (увеличить).ррйпства синхронизации и связи взаимодействующих процессов225мафора, логика действий семафорных операций, количество семафоров, доступ­ных для обработки при исполнении отдельного примитива.Обобщенный смысл примитива P(S) состоит в проверке текущего значения сема­фора S. Если оно не меньше нуля, то осуществляется переход к следующей за при­митивом операции.

В противном случае процесс снимается на некоторое время свыполнения и переводится в состояние пассивного ожидания. Находясь в спискезаблокированных, ожидающий процесс не проверяет семафор непрерывно, как вслучае активного ожидания. Вместо него процессор может исполнять другой про­цесс, реально выполняющий какую-то полезную работу.Операция V(S) связана с увеличением значения семафора на единицу и переводомодного или нескольких процессов в состояние готовности к исполнению централь­ным процессором.Отметим еще раз, что операции Р и V выполняются операционной системой в ответна запрос, выданный некоторым процессом и содержащий имя семафора в каче­стве параметра.Рассмотрим первый вариант алгоритма работы семафорных операций (листинг 7.7).Допустимыми значениями семафоров являются только целые числа.

Двоичнымсемафором будем называть семафор, максимально возможное значение которогоравно единице. Двоичный семафор 1 либо открыт, либо закрыт. В случае, когда се­мафор может принимать более двух значений, его называют N-ичным. Есть реали­зации, в которых семафорные переменные не могут быть отрицательными, а есть итакие, где отрицательное значение указывает на длину очереди процессов, стоящихв состоянии ожидания открытия семафора.Листинг 7.7. Вариант реализации семафорных примитивовP(S): S:-S-l:if S<0 then { остановить процесс и поместить его в очередь ожидания к семафору S };V(s): if S<0 then { поместить один из ожидающих процессов очереди семафора S в очередьготовности };S:-S+l:Заметим, что для работы с семафорными переменными необходимо еще иметь опе­рацию инициализации самого семафора, то есть задания ему начального значения.Обычно эту операцию называют InitSem; как правило, она имеет два параметра —имя семафорной переменной и ее начальное значение, то есть обращение имеет видInitSem ( Имя_семафора.

Начальное_значение_семафора ):Попытаемся на нашем примере двух конкурирующих процессов ПР1 и ПР2 про­анализировать использование данных семафорных примитивов для решения про­блемы критической секции. Программа, иллюстрирующая это решение, представ­лена в листинге 7.8.•истинг 7.8. Взаимное исключение с помощью семафорных операций* i r S:semafor;begin InitSem(S.l);' дИчные семафоры иногда называют мыотексами (см. далее).продолжениеJ226Глава 7, Организация параллельных взаимодействующих вычислены,-.Листинг 7.8 (продолжение)parbeginПР1: while true dobeginPCS);CS1 : { критическая секция процесса ПР1 }V(S)endandПР2: while true dobeginPCS):CS2 ;{ критическая секция процесса ПР2 }V(S)endparendend.Семафор S имеет начальное значение, равное 1.

Если процессы ПР1 и ПР2 попы­таются одновременно выполнить примитив P(S), то это удастся успешно сделатьтолько одному из них. Предположим, это сделал процесс ПР2, тогда он закрываетсемафор S, после чего выполняется его критическая секция. Процесс ПР1 в рас­сматриваемой ситуации будет заблокирован на семафоре S. Тем самым гарантиру­ется взаимное исключение.После выполнения примитива V(S) процессом ПР2 семафор S открывается, указы­вая на возможность захвата каким-либо процессом освободившегося критическо­го ресурса. При этом производится перевод процесса ПР1 из заблокированногосостояния в состояние готовности.На уровне реализации возможно одно из двух решений в отношении процессов,которые переводятся из очереди ожидания в очередь готовности при выполнениипримитива V:Q процесс при его активизации (выборка из очереди готовности) вновь пытаетсявыполнить примитив Р, считая предыдущую попытку неуспешной;Q процесс при помещении его в очередь готовности отмечается как успешно вы­полнивший примитив Р, тогда при его активизации управление будет переданоне на повторное выполнение примитива Р, а на команду, следующую за ним.Рассмотрим первый способ реализации.

Пусть процесс ПР2 в некоторый моментвремени выполняет операцию P(S). Тогда семафор S становится равным нулю. Пустьдалее процесс ПР1 пытается выполнить операцию P(S). Процесс ПР1 в этом слу­чае блокируется на семафоре S, так как значение семафора S равнялось нулю, а теперь станет равным - 1 . После выполнения критической секции процесс ПР2 выполняет операцию V(S), при этом значение семафора S становится равным пула процесс ПР1 переводится в очередь готовности. Пусть через некоторое времпроцесс ПР1 будет активизирован, то есть выведен из состояния ожидания, и CNжет продолжить свое исполнение.

Он повторно попытается выполнить операниP(S), однако это ему не удастся, так как S=0. Процесс ПР1 блокируется на семафоруа его значение становится равным - 1 . Если через некоторое время процесспопытается выполнить P(S), то он тоже заблокируется. Таким образом, возник227ррйдства синхронизации и связи взаимодействующих процессоваК называемая тупиковая ситуация, так как разблокировать процессы ПР1 и ПР2некомуПри втором способе реализации тупика не будет. Действительно, пусть все проис•одит так же до момента окончания исполнения процессом ПР2 примитива V(S).Пусть примитив V(S) выполнен, и S=0.

Через некоторое время процесс ПР1 активи­зируется. Согласно данному способу реализации он сразу же попадет в свою крити­ческую секцию. При этом никакой другой процесс не попадет в свою критическуюсекцию, так как семафор остается закрытым. После исполнения своей критическойсекции процесс ПР1 выполнит V(S). Если за время выполнения критической секциипроцесса ПР1 процесс ПР2 не сделает попыток выполнить операцию P(S), семафор Sустановится в единицу. В противном случае значение семафора будет не большенуля. Но в любом варианте после завершения операции V(S) процессом ПР1 доступк критическому ресурсу со стороны процесса ПР2 будет разрешен.Заметим, что возникновение тупиков возможно в случае несогласованного выбо­ра механизма извлечения процессов из очереди, с одной стороны, и выбора алго­ритмов семафорных операций, с другой.Возможен другой алгоритм работы семафорных операций:P(S):if S>-1 then S:=S-1else WAIT(S){ остановить процесс и поместить в очередь ожидания к семафору S }V(S): if S<0 then RELEASE(S){ поместить один из ожидающих процессов очереди семафора Sв очередь готовности };S:=S+1.Здесь вызов WAIT(S) означает, что супервизор ОС должен перевести задачу в состо­яние ожидания, причем очередь процессов связана с семафором S.

Вызов RELEASE(S)означает обращение к диспетчеру задач с просьбой перевести первый из процес­сов, стоящих в очереди S, в состояние готовности к исполнению.Использование семафорных операций, выполненных подобным образом, позволя­ет решать проблему критических секций на основе первого способа реализации, при­чем без опасности возникновения тупиков. Действительно, пусть ПР2 в некоторыймомент времени выполнит операцию P(S).

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

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

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