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

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

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

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

Действи­тельно, возможна ситуация, когда оба процесса одновременно установят свои флагив значение true и войдут в бесконечный цикл. В этом случае будет нарушено требо­вание отсутствия бесконечного ожидания входа в свою критическую секцию. Тоесть, предположив, что скорости исполнения процессов произвольны, мы получи­ли такую последовательность событий, при которой процессы вообще перестанутнормально выполняться.Все рассмотренные попытки решить задачу взаимного исключения при выполне­нии критических секций иллюстрируют нам некоторые тонкие моменты, лежа­щие в основе этой проблемы, и показывают, что не все так просто.Последний рассматриваемый вариант решения задачи взаимного исключения,опирающийся только на блокировку памяти, — это известный алгоритм, предло­женный математиком Деккером.Алгоритм ДеккераАлгоритм Деккера основан на использовании трех переменных (листинг 7.4): перекл1, перекл2 и ОЧЕРЕДЬ.

Пусть по-прежнему переменная перекл1 устанавливает­ся в true тогда, когда процесс ПР1 хочет войти в свою критическую секцию (дляПР2 аналогично), а значение переменной ОЧЕРЕДЬ указывает, чье сейчас право сде­лать попытку входа при условии, что оба процесса хотят выполнить свои крити­ческие секции.Листинг 7.4.

Алгоритм Деккераlabel 1. 2;varперекл1. перекл2: boolean;ОЧЕРЕДЬ : integer;Begin nepe^l:=false: nepew2:=false:ОЧЕРЕДЬ:=1;Parbeginwhile true dobegin перекл!: =true;продолжение&220Глава 7. Организация параллельных взаимодействующих вычисленииЛистинг 7.4 (продолжение)1: if перекл2=1гие thenif 0ЧЕРЕДЬ=1 then go to 1else begin nepewil:=false;while 0ЧЕРЕДЬ=2 dobeginendendelse beginCS1 { критическая секция ПР1 }ОЧЕРЕДЬ: =2; nepeiuil:=falseendendandwhile true dobegin перекл2:=1;2: if rtepeitfil=true thenif 0ЧЕРЕДЬ=2 then go to 2else begin nepeiui2:=false;while 0ЧЕРЕДЬ=1 dobeginendendelse begn'nCS2 { критическая секция ПР2 }ОЧЕРЕДЬ:=1: перекл2-falseendendpa rendend.Если перекл2 = true и перекл1 = false, то выполняется критическая секция процес­са ПР2 независимо от значения переменной ОЧЕРЕДЬ.

Аналогично для случая перекл2 = false и перекл1 = true.Если же оба процесса хотят выполнить свои критические секции, то есть перекл2 == true и перекл1 = true, то выполняется критическая секция того процесса, на кото­рый указывает значение переменной ОЧЕРЕДЬ, независимо от скоростей развитияобоих процессов. Использование переменной ОЧЕРЕДЬ совместно с переменнымиперекл1 и перекл2 в алгоритме Деккера позволяет гарантированно решать пробле­му критических секций. То есть переменные перекл1 и перекл2 гарантируют, чтовзаимное выполнение не может иметь места; переменная ОЧЕРЕДЬ гарантирует, чтоне может быть взаимной блокировки, так как переменная 04 ЕРЕДЬ не меняет свое­го значения во время выполнения программы принятия решения о том, кому жесейчас проходить свою критическую секцию.Тем не менее реализаций критических секций на основе описанного алгоритмапрактически не встречается из-за их чрезмерной сложности, особенно тогда, когдтребуется обобщить алгоритм Деккера с двух до N процессов.Синхронизация процессов с помощью операциипроверки и установкиОперация проверки и установки является, так же как и блокировка памяти, од№ из аппаратных средств, которые могут быть использованы для решения задачи в I,,пйаства С И нхронизации и связи взаимодействующих процессов221того исключения при выполнении критической секции.

Данная операция реа"изована во многих компьютерах. Так, в знаменитой машине IBM 360 (370) этаоманда называлась TS (Test and Set — проверка и установка). Команда TS являетдвухадресной (двухоперандной). Ее действие заключается в том, что процессоряприсваивает значение второго операнда первому, после чего второму операндуприсваивается значение, равное единице.

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

Кроме того, с каждым процессом свяжем свою ло­кальную переменную, которая принимает значение, равное единице, если данныйпроцесс хочет войти в свою критическую секцию. Операция TS будет присваиватьзначение common локальной переменной и устанавливать common в единицу. Со­ответствующая программа решения проблемы критической секции на примере двухпараллельных процессов приведена в листинге 7.5.Л и с т и н г 7 .

5 . Взаимное исключение с помощью операции проверки и установкиvaг common, l o c a l l , I o c a l 2 : i n t e g e r ;begincommon:=0;parbeginПР1: w h i l e t r u e dobeginlocal1:-1:w h i l e l o c a l 1=1 do TSOocall.common);CS1; { критическая секция процесса ПР1 }common;=0;PR1; { ПР1 после критической секции }endandПР2: w h i l e t r u e dobeginlocal2:=l:w h i l e l o c a l 2 = l do TS(local2.common);CS2; { критическая секция процесса ПР2 }common:=0;PR2; { ПР2 после критической секции }endparendend.Редположим, что первым хочет войти в свою критическую секцию процесс ПР1.' э т ° м случае значение LocaLl сначала установится в единицу, а после цикла про­б к и с помощью команды TS(locall,common) — в нуль.

При этом значение commonанет равным единице. Процесс ПР1 войдет в свою критическую секцию. Послеполнения критической секции переменная common примет значение, равноею, что даст возможность второму процессу ПР2 войти в свою критическую сек-222Глава 7. Организация параллельных взаимодействующих вычисли -Безусловно, мы предполагаем, что в компьютере реализована блокировка па.мятто есть операция common := 0 неделима. Команда проверки и установки зиачител 'но упрощает решение проблемы критических секций. Главная черта этой команды — ее неделимость.Основной недостаток использования команд типа проверки и установки состоит Rследующем: находясь в цикле проверки переменной common, процессы впустуюпотребляют время центрального процессора и другие ресурсы.

Действительно, ее аипредположить, что произошло прерывание процесса ПР1 во время выполнениясвоей критической секции в соответствии с некоторой дисциплиной обслужива­ния, и начал выполняться процесс ПР2, то он войдет в цикл проверки, впустуютратя процессорное время. В этом случае, до тех пор пока диспетчер супервизоране поставит на выполнение процесс ПР1 и не даст ему закончиться, процесс ПР2не сможет войти в свою критическую секцию.В микропроцессорах архитектуры ia32, с которыми мы теперь сталкиваемся по­стоянно, работая на персональных компьютерах, имеются специальные командыВТС, BTS, BTR, которые как раз и являются вариантами реализации команды провер­ки и установки. Рассмотрим одну из них — BTS.Команда BTS (Bit Test and Reset — проверка и установка бита) является двухадрес­ной [20].

По этой команде процессор сохраняет значение бита из первого операндасо смещением, указанным вторым операндом, во флаге CF (Carry Flag — флаг пе­реноса) 1 регистра флагов, а затем устанавливает указанный бит в 1. Значение ин­декса выбираемого бита может быть представлено постоянным непосредственнымзначением в команде BTS или значением в общем регистре. В этой команде исполь­зуется только 8-разрядное непосредственное значение. Значение этого операндаберется по модулю 32, таким образом, смещение битов находится в диапазоне от 0до 31. Это позволяет выбрать любой бит внутри регистра. Для битовых строк впамяти это поле непосредственного значения дает только смещение внутри словаили двойного слова.С учетом изложенного можно привести фрагмент кода, в котором данная командаиспользуется для решения проблемы взаимного исключения (листинг 7.6).Л и с т и н г 7 .

6 . Фрагмент программы с критической секцией на ассемблереL:ВТС М ЛJC L; критическая секцияAND M.OBОднако здесь следует заметить, что некоторые ассемблеры поддерживают значения битовых смещений больше 31, используя поле непосредственного зна1Располагается в слове состояния программы.с т в асинхронизации и связи взаимодействующих процессов223мбинации с полем смещения операнда в памяти.

В этом случае младшие 3 или\ битов (3 - для 16-разрядных операндов, 5 - для 32-разрядных операндов), опл я ю Щ И е смещение бита (второй операнд команды), сохраняются в поле не* педственного операнда, а старшие биты сдвигаются и комбинируются с полемП°ешения. Процессор же игнорирует ненулевые значения старших битов поля вто•о операнда [20]. При доступе к памяти процессор обращается к четырем байтам\ я 32-разрядного операнда), начинающимся по полученному следующим обра­зом адресу:Effective Address + (4 х (BitOffset DIV 32))Либо (для 16-разрядного операнда) процессор обращается к двум байтам, начина­ющимся по адресу:Effective Address + (2 х (BitOffset DIV 16))Такое обращение происходит, даже если необходим доступ только к одному байту.Поэтому избегайте ссылок к областям памяти, близким к «пустым» адресным про­странствам.

В частности, избегайте ссылок на распределенные в памяти регистрыввода-вывода. Вместо этого используйте команду M0V для загрузки и сохранениязначений по таким адресам и регистровую форму команды BTS для работы с дан­ными.Несмотря на то, что и алгоритм Деккера, основанный только на блокировке памя­ти, и операция проверки и установки пригодны для реализации взаимного исклю­чения, оба эти приема очень неэффективны. Всякий раз, когда один из процессоввыполняет свою критическую секцию, любой другой процесс, который пытаетсявойти в свою критическую секцию, попадает в цикл проверки соответствующихпеременных-флагов, регламентирующих доступ к критическим переменным. Притаком неопределенном пребывании в цикле, которое называется активным ожи­данием, напрасно расходуется процессорное время, поскольку процесс имеет дос­туп к тем общим переменным, которые и определяют возможность или невозмож­ность входа в критическую секцию.

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

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

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

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

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