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

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

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

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

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

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

Таким образом, их независимость относительна.Приведем несколько наиболее известных примеров конкурирующих процессов ипродемонстрируем появление ошибок. В качестве первого примера рассмотримработу двух процессов Р1 и Р2 с общей переменной X. Пусть оба процесса асин­хронно, независимо один от другого, изменяют (например, увеличивают) значе­ние переменной X, считывая ее значение в локальную область памяти Ri1, при этомкаждый процесс выполняет во времени некоторые последовательности операций(табл. 7.1). Здесь мы рассмотрим не все операторы каждого из процессов, а толькоте, в которых осуществляется работа с общей переменной X. Каждому из операто­ров мы присвоили некоторый условный номер.Таблица 7 . 1 .

Пример конкурирующих процессовНомер оператораПроцесс Р1Номер оператораПроцесс Р21R1 :=Х4R2:=X2R1 :=R1 + 15R2:=R2 + 13X:=R16X:=R2Поскольку при мультипрограммировании процессы могут иметь различные ско­рости исполнения, то может иметь место любая последовательность выполненияопераций во времени. Например, если сначала будут выполнены все операции про­цесса Р1, а уже потом — все операции процесса Р2 (рис. 7.1) или, наоборот, снача­ла — операции 4-6, а затем — операции 1-3, то в итоге переменная X получит зна­чение, равное X + 2.Р1: (1) R1:=X; (2) R1:=R1+1; (3) X:=R1;Р2:(4) R2:=X; (5) R2:=R2+1; (6)X:=R2;,•ВремяРис.

7 . 1 . Первый вариант развития событий при выполнении процессовэто просто имя переменной для процесса с номером i.Глава 7. Организация параллельных взаимодействующих вычислений212Однако если в промежуток времени между выполнением операций 1 и 3 буд е твыполнена хотя бы одна из операций 4-6 (рис. 7.2), то значение переменной X пос­ле выполнения всех операций будет не (X + 2),а(Х + 1).P1:(1)R1:=X;Р2:(4)R2:=X;(2)R1:=R1+1;(3)X:=R1;(5)R2:=R2+1;(6)X:=R2;•ВремяРис. 7.2. Второй вариант развития событий при выполнении процессовПонятно, что это очень серьезная ошибка. Например, если бы процессы Р1 и Р2осуществляли продажу билетов и переменная X фиксировала количество уже про­данных, то в результате некорректного взаимодействия было бы продано несколь­ко билетов на одно и то же место.

К сожалению, такого рода ошибки трудноулови­мы, поскольку они иногда возникают, иногда нет.В качестве второго примера рассмотрим ситуацию, которая еще совсем недавнобыла достаточно актуальной для первых персональных компьютеров. Пусть наперсональном компьютере с простейшей однопрограммной операционной систе­мой (типа MS DOS) установлена некоторая резидентная программа с условнымназванием TIME, которая по нажатию комбинации клавиш (например, Ctrl+T) вос­производит на экране дисплея время в виде 18:20:59, и допустим, что значенияпеременных, обозначающих час, минуты и секунды, равны 18,20 и 59 соответствен­но, причем вывод на дисплей осуществляется справа налево (сначала секунды, за­тем минуты и, наконец, часы).

Пусть сразу же после передачи программой TIMEна дисплей информации «59 секунд» генерируется прерывание от таймера, и зна­чение времени обновляется: 18:21:00.После этого программа TIME, прерванная таймером, продолжит свое выполне­ние, и на дисплей будут выданы значения: минуты (21), часы (18). В итоге на экра­не мы увидим: 18:21:59.Рассмотрим теперь несколько иной случай развития событий обновления значе­ний времени по сигналу таймера. Если программа ведения системных часов послевычислений количества секунд 59 + 1 = 60 и замены его на 00 прерывается от на­жатия клавиш Ctrl+T, то есть программа не успевает осуществить пересчет количе­ства минут, то время, индицируемое на дисплее, станет равным 18:20:00. И в этомслучае мы получим неверное значение времени.Наконец, в качестве третьего примера приведем пару процессов, которые изменя­ют различные поля записей служащих какого-либо предприятия [17].

Пусть про­цесс АДРЕС изменяет домашний адрес служащего, а процесс СТАТУС — его долж­ность и зарплату. Пусть каждый процесс для выполнения своей функции копиру^всю запись СЛУЖАЩИЙ в свою рабочую область. Предположим, что каждыйпроцесс должен обработать некоторую запись ИВАНОВ. Предположим также, чтопосле того как процесс АДРЕС скопировал запись ИВАНОВ в свою рабочую об­ласть, но до того как он записал скорректированную запись обратно, процесс СТУС скопировал первоначальную запись ИВАНОВ в свою рабочую область.цазависимые и взаимодействующие вычислительные процессы213Изменения, выполненные тем из процессов, который первым запишет скорректи­рованную запись назад в файл СЛУЖАЩИЕ, будут утеряны, и, возможно, никто0 б этом не узнает.Чтобы предотвратить некорректное исполнение конкурирующих процессов вслед­ствие нерегламентированного доступа к разделяемым переменным, необходимоввести понятие взаимного исключения, согласно которому два процесса не должныодновременно обращаться к разделяемым переменным.Процессы, выполняющие общую совместную работу таким образом, что результа­ты вычислений одного процесса в явном виде передаются другому, то есть ониобмениваются данными и именно на этом построена их работа, называются со­трудничающими.

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

Другими словами, процессы должны обращаться другк другу не только ради синхронизации с целью взаимного исключения при обра­щении к критическим ресурсам, но и ради обмена данными.Допустим, что «поставщик» — это процесс, который отправляет порции информа­ции (сообщения) другому процессу, имя которого — «потребитель». Например,некоторая задача пользователя, порождающая данные для вывода их на печать,может выступать как поставщик, а системный процесс, который выводит эти стро­ки на устройство печати, — как потребитель. Один из методов, применяемых припередаче сообщений, состоит в том, что заводится пул (pool) 1 свободных буферов,каждый из которых может содержать одно сообщение. Заметим, что длина сооб­щения может быть произвольной, но ограниченной размером буфера.В этом случае между процессами «поставщик» и «потребитель» будем иметь оче­редь заполненных буферов, содержащих сообщения.

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

Аналогично,потребитель может получать сообщения, только если очередь не пуста. Ясно, чтоДля учета заполненных и свободных буферов нужны разделяемые переменные,поэтому, так же как и для конкурирующих процессов, для сотрудничающих про­цессов тоже возникает необходимость во взаимном исключении.аки м образом, до окончания обращения одной задачи к общим переменным слеУет исключить возможность обращения к ним другой задачи. Эта ситуация и на°вокупность однородных динамически распределяемых объектов, например блоков памяти одина­ковой длины.214Глава 7.

Организация параллельных взаимодействующих вычисленийзывается взаимным исключением. Другими словами, при организации различно­го рода взаимодействующих процессов приходится организовывать взаимное ис­ключение и решать проблему корректного доступа к общим переменным (крити­ческим ресурсам). Те места в программах, в которых происходит обращениекритическим ресурсам, называются критическими секциями (Critical Section, CS)Решение проблемы заключается в организации такого доступа к критическомуресурсу, при котором только одному процессу разрешается входить в критичес­кую секцию.

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

Взаимное исключение необходимо только в том случае, когда процессыобращаются к разделяемым (общим) данным. Если же они выполняют операции,которые не ведут к конфликтным ситуациям, процессы должны иметь возмож­ность работать параллельно. Когда процесс выходит из своей критической секции,то одному из остальных процессов, ожидающих входа в свои критические секции,должно быть разрешено продолжить работу (если в этот момент действительноесть процесс в состоянии ожидания входа в свою критическую секцию).Обеспечение взаимного исключения является одной из ключевых проблем парал­лельного программирования. При этом можно перечислить требования к крити­ческим секциям [17, 54].Q В любой момент времени только один процесс должен находиться в своей кри­тической секции.•Ни один процесс не должен бесконечно долго находиться в своей критическойсекции.•Ни один процесс не должен бесконечно долго ожидать разрешение на вход всвою критическую секцию. В частности:••никакой процесс, бесконечно долго находящийся вне своей критическойсекции (что допустимо), не должен задерживать выполнение других про­цессов, ожидающих входа в свои критические секции (другими словами,процесс, работающий вне своей критической секции, не должен блокиро­вать критическую секцию другого процесса);если два процесса хотят войти в свои критические секции, то принятие ршения о том, кто первым войдет в критическую секцию, не должно обесконечно долгим.Q Если процесс, находящийся в своей критической секции, завершается естеств ^ным или аварийным путем, то режим взаимного исключения должен быть ^менен, с тем чтобы другие процессы получили возможность входить в свои Щтические секции.Иьедства синхронизации и связи взаимодействующих процессов215было предложено несколько способов решения этой проблемы: программных ия паратных; локальных низкоуровневых и глобальных высокоуровневых; предус­матривающих свободное взаимодействие между процессами и требующих строгоV- то соблюдения протоколов.Средства синхронизациии связи взаимодействующихвычислительных процессовgee известные средства решения проблемы взаимного исключения основаны наиспользовании специально введенных аппаратных возможностей.

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

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

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