Главная » Просмотр файлов » В. Столлингс - Операционные системы

В. Столлингс - Операционные системы (1114679), страница 49

Файл №1114679 В. Столлингс - Операционные системы (В. Столлингс - Операционные системы) 49 страницаВ. Столлингс - Операционные системы (1114679) страница 492019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Эту последовательность можно продолжать до бесконечности — и .. процессов до бесконечности так и не сможет войти в кр в к итически$,'-, рого говоря, это не взаимоблокировка, так как любое изм юбое изменение о й скорости двух процессов разорвет замкнутый круг и позволит о , оцессов войти в критический раздел. Назовем такую ситуацию иеу аимоблокировкой (1юе1ос1«). Вспомним, что обычная взаимоблокиро зляется, когда несколько процессов желают войти в кри к итический :од ному из них это не удается, В случае неустойчивой вза взаимоблок .ствует приводящая к успеху последовательность действий, но, вм эможна и такая (такие), при которой ни один из процессов не сможет войти в .„,«тический раздел. Хотя описанный сценарий маловероятен и вряд ли такая последователь„о,ть продлится сколь-нибудь долго, тем не менее теоретически такая возожность имеется. Поэтому мы вынуждены отвергнуть как неудачную и четвертую попытку Правильное решение «ть возможность следить за состояни„ что обеспечивается массивом й1ао.

Но, как показала четвертая попытка, этого недостаточно. Мы должны навязать определенный порядок действий двум процессам, чтобы избежать проблемы '*взаимной вежливости", с которой только что толкнулись. С этой целью можно использовать переменную таге из первой попытк««.

В нашем случае эта переменная указывает, какой из процессов имеет право на вход в критический раздел. Мы можем описать это решение следующим образом. Когда процесс РО намерен войти в критический раздел, он устанавливает свой флаг равным алие, а затем проверяет состояние флага процесса Р1. Если он равен ~а1эе, РО может немедленно входить в критический раздел; в противном случае РО обращается к переменной сага. Если се гп = О, это означает, что сейчас — очередь процесса РО на вход в критический раздел, и РО периодически проверяет состояние флага процесса Р1. Этот процесс, в свою очередь, в некоторый момент времени обнаруживает, что сейчас не его очередь для входа в критический раздел, и устанавливает свой флаг равным ~а1эе, давая возможность процессу РО войти в критический раздел. После того как РО выидет из критического раздела, он установит свой флаг равным .а1эе для освобождения критического раздела и присвоит переменной тиг««значение 1 для передачи прав на вход в критический раздел процессу Р1.

Алгоритм Деккера приведен в листинге 5.2; его доказательство оставляется читателю в качестве упражнения (см. задачу 5.6). ')1ястииг 5 2. Алгоритм деккера Ьоо1.:.-,, 1пт "о(О .='О ~ ""-" 1е ( т.где) "1а0 ~01 = йа1ае; »5'1е (тцг~-, Ничего не делать -'ая!01 = атее; ":р~« ° ический раздел + га~.,-, а0~01 = ~а1эе; Остальной кол *~. Часть 2. б,п ° Параллельные вычисления: взаимоискл«очения... „'-1ао(1) = ~где~ 1е (11ад (О) ) (~ого == О) й1ад(1) = 1а1ве' иЬ11е(опто == О) /+ ничего не делать */; д1ая (1) = 1гые; '.)ая(т) = алое; с:;до=О; 1«Г1 1е ( «1 1 аЯ ( О) й й 1охй — =- 0) /' Ничего не делать критический раздел «/; ''ач(1) =- ~а1ае; Остальной код «/' /« ('ритический раздел /« сдлп =- О; Й1ац( ' ) = Га1ее« /* Сотадькой код */; й1аа (0) = ~а1зе: т"1ад (1) =- 1'а1зер 1игд = 1; рагоедьп (РО, Р1); алгоритм Петерсона Алгоритм Деккера решает задачу взаимных исключений, но д жным путем, корректность которого не так легко доказать.

~егзоп) предложил простое и элегантное решение [РЕТЕ8Ц. Как и р ьная переменная 11ао указывает положение каждого процесса цо о заимоисключению, а глобальная переменная гига разрешает конфл |ременности. Алгоритм представлен в листинге 5.3. стинг 5.3. Алгоритм Петерсона для двух процессов ~)д11е (слое) ~1ай(0) = ~.гие: ""г«п = ).; ыЬ11е ( Е1ар (1) 66 ~одд ==' 1) /« ничего не делать / Критический раздел */« й1а9(О) --- йа1ае; /* 0отальной код '/; Часть 2. чо1о л~а1 д () 1) а9(0) — — (:а1ае; т а:~ (1 ) = 1а1зе; РагЬе01д (РО Р1) Выполнение условий взаимоисключения легко показать. Рассмотрим про им процесс РО.

После того как «1аа(0) установлен им равным 1.тое, Р1 войти в критический раздел не может. Если же Р1 уже находится в критическом разделе, то 1 ~1аЧ() ) = Сод и для РО вход в критический раздел заблокирован. Однако взаимная блокировка в данном алгоритме предотвращена. Предположим, что РО заблокирован в своем цикле и)~11е. Зто означает, что 11а9 (1) равен схое, а "огп = 1. РО может войти в кригический раздел, когда либо ~1ад(1) становится равным йа1зе, либо со д становится равным О.

Рассмотрим три исчерпывающих случая. 1 Р1 не нам ерен входить в критический раздел. Такой случай невозможен, поскольку при этом выполнялось бы условие Г1ад (1) =- 1а1ае. 2 Р1ожи ат ° д е вход в критический раздел. Такой случай также невозможен, поскольку если согд = 1, то Р1 способен войти в критический раздел.

3. Р1 циклич ц чески использует критический раздел, монополизировав доступ к нему. Зтаго н не может произойти, поскольку Р1 вынужден перед каждой попыткой вхо а РО, да в критический раздел дать такую возможность процессу ° устанавливая значение сото равным О, чев- Следовательно , у нас имеется простое решение проблемы взаимных исклюевий для дв х и о е с у роцессов. Впрочем, алгоритм Петерсона легко обобщается на учай п процессов (НОГВ901. 3. ВЗАИМОИСКЛН)ЧКНХ$Я: АййАРАТНАЯ;;,:;;"'=';.;".'-,~ )подменке прерываний Кос пе седа в машине имеется ли ш~ один процессор, параллельные процессы не ерекрываться а способ 3 'бны ' лько чеРедо ° Я КР е р ц будет про 5. П Парвллельные вычиалеиии: взаимоисключеиии...

263 ,аться до тех пор, пока не будет вызван сервис операционной системы ,~есс не будет прерван. Следовательно, для того чтобы гарантировать лючение, достаточно защитить процесс от прерывания. Эта возможность ' ь обесгечена в Форме примитивов, определенных системным ядром для шения прерываний. Процесс в таком случае может обеспечить взаимо эшен следующим образом (сравните с листингом 5.1)." 1е (' гсе) /" )асрет прерываний */~ Кри ги ~вский разлад */ ° разре1зеиие прерываиий ~/; Остальной хсд /; Поскольку критический раздел не может быть прерван, выполнение':.-'-'" юключення гарантируется.

Однако цена такого подхода высока. ть работы может заметно снизиться, поскольку при этом ограничена в ть процессора по чередованию программ. Другая проблема заклю '" ' О что такой подход не будет работать в многопроцессорной архитектур~~):. числительная система включает несколько процессоров, то вполне обычно так и бывает), что одновременно выполняются несколько про м случае запрет прерываний не гарантирует выполнения взаимоискл (ециальные машинные команды В многопроцессорной конфигурации несколько процессоров разделяют дей основной памяти. В этом случае отсутствует отношение ведущий/ и~ег/з)аде) — процессоры работают независимо, "на равных", и не им ~ма прерывания, на котором могли бы основываться взаимоисключения. " :',:-', На уровне аппаратного обеспечения, как уже упоминалось, обр ".йке памяти исключает любые другие обращения к той же ячейке.

на этом принципе, разработчики процессоров предлагают ряд маш нд, которые за один цикл выборки команды атомарно выполняют $ памяти два действия, такие, как чтение и запись, или чтение и учения. Поскольку эти действия выполняются в одном цикле, на них-''. янии повлиять никакие другие инструкции. 4 В этом разделе мы рассмотрим две из наиболее часто реализуемых стальными инструкциями вы можете познакомиться в 1КАУМ863 и ~ЯТОМ Инструкция проверки и установки значения Инструкцию проверки и установки значения можно определить ~м образом: 1й ',1 == О) 1; депп с г.гсвг е1эе ( Инструкция проверяет значение своего аргумента 1. Если его значение рав- О.

функция заменяет его на 1 и возвращает сгис. В противном случае значепере менной не изменяется и возвращается значение г а 1 з е. Функция --зе~ выполняется атомарно, т.е. ее выполнение не может быть прервано. Л,стинг 5.4. Аппаратная поддержка взаимных исключений / и) НнаяРукпмя проверки и установки "/ ~ се~ 1пс и = / Количество пРоцессов ~/~ 1сс 1 ~о'. с( Г ('пс иЬ11е (! сев~ эе. (Ьс1Г) ) /+ Бичево не делать */; /" Критический раздел ~/; Ьс1г = Ор /' Остальная часть ксдз +/ б л1а 1п ( Ьо1С = О; Р =Ьеа1. (Р(1), Р(2),...,р(п)); /* б1 Инструкция обмена */ сспзс 1г~С и = /* Количество процессов / хпй Ьс15; ( 1пс )'еу1~ и 11е ("'гпе) (;с у 1 хЬ11е ():еуь ! = О) ехсбапде ().еу1, Ьс1Г); Крити еский раздел */; хсбзпде(Ееу1, Ьс1с); /" Остальная часть ксдз .и к рзхЬе 1п ~р ~1) р ( ) р(п) ~ истинге 5.4,а показан протокол взаимных исключений основанный на ис- В лис ользо т ванин описанной инструкции.

Разделяемая переменная Ьо1г. инициализирует- ~~ вулев вым значением. Только процесс, который может войти в критический раздел, '„. а 5. Параллельные вычисления". взаимоисключения... 2ВЬ находит, что значение переменной Ьа1~ — О. Все остальные процессы при. входа в критический раздел переходят в режим ожидания. Выйдя из кри раздела, процесс переустанавливает значение переменной Ьо1с равным О, один и только один процесс из множества ожидающих входа в критический, получает требуемый ему доступ. Выбор этого процесса зависит от того, *- процессов удалось выполнить инструкцию ~в 5 с ес первым. Инструкции обмена Инструкция обмена может быть определена следующим образом: ио1-! ехсйапде ~1п~ гео1э Ьег, ыс пегасу) 1пг 1еп~рг 1е-..,р = ГГегйогуг геологу = геЯ1згег; гюЯ15 сох' = геп1Р; Инструкция обменивает содержимое регистра и ячейки памяти В про " выполнения доступ к ячейке памяти для всех остальных процессов блокиру В листинге 5.4,6 показан протокол взаимного исключения, основ использовании этой инструкции.

Разделяемая переменная Ьа1е иниц ется нулевым значением. У каждого процесса имеется локальная пере' азу, инициализированная значением 1. В критический раздел можеф'. только один процесс, который обнаруживает, что значение Ьо1~ равно' процесс запрещает вход в критический раздел всем другим процессам тановки значения Ьо1г, равным 1.

По окончании работы в критическом: ' процесс вновь сбрасывает значение Ьо1~ в О, тем самым позволяя дру цессу войти в критический раздел Заметим, что при использовании рассмотренного алгоритма всегда няется следующее соотношение: 'А'. :Ф;'. Ьс1Ь+~~~ )сеу, =и Если Ьа1с = О, то в критическом разделе нет ни одного процесса' Ьо1~ = "., то в критическом разделе находится ровно один процесс, а тот, переменная хеу которого имеет нулевое значение. Свойства подхода, основанного на использовании машинн инструкций Подход, основанный на использовании специальной машинной инс для осуществления взаимных исключений, имеет ряд преимуществ.

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

Тип файла
DJVU-файл
Размер
34,99 Mb
Тип материала
Высшее учебное заведение

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

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