Главная » Просмотр файлов » Густав Олссон, Джангуидо Пиани - Цифровые системы автоматизации и управления

Густав Олссон, Джангуидо Пиани - Цифровые системы автоматизации и управления (1087169), страница 106

Файл №1087169 Густав Олссон, Джангуидо Пиани - Цифровые системы автоматизации и управления (Книга - Цифровые системы автоматизации и управления) 106 страницаГустав Олссон, Джангуидо Пиани - Цифровые системы автоматизации и управления (1087169) страница 1062018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Если процессу выделяется десяток переменных на время выполнения небольшого количества ка„знд, без информации о том, какие из них будут действительно использоваться — зто одна ситуация, а если один процесс надолго блокирует доступ к целой базе данных— вто совсем другое дело. Если система структурирована в соответствии с моделью "клиент-сервер" и рабовзвт на основе замкнутых транзакций, то проблему тупиков решить проще. В случае возникновения тупика можно просто отменить транзакцию, а не уничтожать один или несколько процессов.

Нар)пление четвертого запрета чаще всего приводит к тупикам. Если двум процессам требуются ресурсы А и В и первый их запрашивает в порядке А-В, а второй— В-А, то для возникновения тупика достаточно того, чтобы первый процесс был прерван после захвата ресурса А и управление было передано второму, который, в свою очередь, захватывает ресурс В. После этого кажлый процесс будет бесконечно ждать, пока другой не освободит захваченный ресурс.

Четвертое утверждение дает практический способ избежать тупиков. Тупик можно предотвратить, если определен точный порядок (последовательность) запроса ресурсов, соблюдаемый всеми процессами. В приведенном примере зто означает, что "А лолжен быть распределен перед В" и что все процессы строго следуют этому правилу. При этом освобождение ресурсов должно происходить в порядке, обратном их ~ыделению. Этот метод, в принципе, несложно применить при разработке системы реального времени, пока процессы находятся в руках одного или неболыпой группы программистов, но его практическая ценность быстро уменьшается при возрастающем числе ресурсов или разделяемых переменных.

10. 4. Синхронизация процессов — семафоры и собы™я 10.4 1. Семафоры О г Рганизация некоторого порядка исполнения процессов называется синхронизацией й (зупслголыаггол). Синхронизация процессов является основной функцией многоза дачных операционных систем и используется для зашиты ресурсов — с помощью целан ханизма синхронизации упорядочивае~ся доступ к ресурсу. То есть процесс может лол 'учить доступ к ресурсу только после того, как другой процесс освободил его.

Как было ло показано выше, введение дополнительных переменных лля зашиты ресурсов не луч ° чший выход, поскольку зти переменные сами становятся общим ресурсом. Существ во проблемы состоит в том, что опер ц и проверки н изменения значения перемене ациип ио" ой защиты разделены во време~~ ~ быть пРерваны в любой момент. Более и и могут б 436 437 Глава 10. Программирование систем реального ар меня !О 4 Синхронизация процессов — семафоры и события того, непрерывный контроль значений этих переменных представляет собой из „ лици ние затраты процессорного времени.

Семафоры (зетарйоге) — зто основной метод синхронизации, свободиыи от ук ука- занных недостатков. Он, в сущности, является наиболее общим методом синхро„„ за- ции процессов. В классическом определении семафор представляет собой целую перемени значение которой больше нуля, т. е, просто счетчик. Обычно семафор ииициализ, ется в начале программы 0 или 1.

Семафоры, которые могут принимать лишь зва„ ния 0 и 1, называются двоичными. Над семафорами определены две операции з!цпа! и и а1С. Операция з!дпа! увеличивает значение семафора на 1, а вызвавщии, процесс продолжает свою работу. Операция тча!С приводит к различным рсзул, „ там, в зависимости от текущего значения семафора. Если его значение больше О ов уменьшается на 1, и процесс, вызвавший операцию тча!С, может продолжаться. Если семафор имеет значение О, то процесс, вызвавший операцию и а!С, приостанавливает- ся (ставится в очередь к семафору) до тех пор, пока значение соответствующего сема- фора ие увеличится другим процессом с помощью операции з1йпа!. Только после э| о- го операция ив)С приостановленного процесса завершается (с уменьшением значения семафора), а приостановленный процесс продолжается, Очень важно, что проверка и уменьшение значения семафора в операции па!с вы- полияготся за один шаг.

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

В литературе вместо з)ппа! и па!С применяются ются и другие названия с тем же самым функциональным смыслом. С помощью семафоров проблема защиты ресурсов из раздела 10.3.2 решается пр яп осто ргопгаш зеш ехагпр!е (* зашита ресурса ') чаг Р1: зешарЬоге Ъей!п Р1:= 1; соЪец)п ъ'Ь|!е Сгце до (' бесконечный цикл *) Ъецш (* пропесс А *) ив!С(Р1); (* защищенный ресурс *) з(ппа1(Р1); епг(; (* процесс. А ') тчЫе Сгце с!о (* бесконечный цикл ') Ъей)п (* процесс В ') и'а!С(Р1); (* защищенный ресурс ") з!дпа!( Р1); епг1; (" процесс В ") соепс(; епс!. (* зеп1 еха|пр!е ') тча!С(Р1) па)С(Р2) тчай(Р2) тча!С(Р1) (* защищенный ресурс *) (' защищенный ресурс ') згдпа!(Р1) з!цпа!(Р2) з!япа! ( Р2) з!дпа!(Р1) шпь по-прежиему существует риск возникновения тупика. Если переключение прозессов происходит между двумя операторами па!с первой программы, а вторая профаима вьпголнит свои операторы и а(С, то это приводит к тупику, поскольку каждая рограмма ожидает от другой освобождения семафора.

Проблема состоит в том, что, хотя се "~емафор гарантирует неразрывность проверки и установки значения, ои сам осгается за я защищенным ресурсом. В приведенном примере явно нарушен запрет послеяовательц ельпого выделения, и это приводит к возможности тупиковых ситуаций. Семаф афор может помочь при синхронизации взаимосвязанных деиствий. НапРииер если ли процесс должен работать с данными только после того, как оии считаны ' внешнего его порта, программа может иметь следующий вид; Ргосеьз "Чтение данных" Ргосезз "Обработка данных" «Ь11е Сгпе г(о Ьеп)п ъ агС(баса ача1!аЫе) (' обработка данных ') епй; иЬг!е Сгце г)о Ъеп(п (* чтение новых данных ) з)йпа1(с!ага ача1!аЫе)' епг(; Семафор гарантирует, что два процесса могут получить доступ к защищенному ~есурсу только по очереди.

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

Одновременно гарантируется и живучесть. Если исполнение процесса по каким- либо причинам прекращается, то, при условии, что он находился вне критической щкции, зто ие мешает развитию другого процесса. Само по себе применение семафоров ие гарантирует предотвращения тупиковых ситуаций. Если два процесса используют семафоры следующим образом 438 Глава 10, Программирование систем Реального вр меня Э 4, Синхронизация процессов — семафоры и события 439 Это решение отделяет операцию ввода данных от их ооработки. На появленв ве во. вых данных указывает значение семафора, отличное от О.

Если существует ме . „ ' ввзц буферизации (промежуточного хранения) новых данных, то процедура обраб сможет получить все данные, даже если они поступают быстрее, чем она в с яннв их принять. В системах реального времени принято отделять процедуры, треб, Шне быстрой реакции, например прием данных с внешнего порта, от других праце .

Для защиты критических секций, в которые по определению в любой момен мени может входить только один процесс, используются двоичные семафоры т называемые шпсех (от тигиа1 ехс1ипап — взаимное исключение). В этом сл „„ нельзя использовать обычные семафоры, так как их значение может превышат 1 „ следовательно, несколько программ могут получить доступ к ресурсу, уменьшая за чения семафора. Операция ядпа! над двоичным семафором всегда устанавливает значение в 1. Операция зка!С уменьшает зто значение с 1 до О и разрешает процес продолжаться дальше. Если семафор имеет значение О, то процесс, выполняюшвв и'а!С, должен ждать до тех пор, пока значение семафора не изменится.

Ошибки синхронизации, связанные с неправильным использованием семафоров, трудно выявляются. Процесс, не выполняющий операцию зча!С, может войти в критическую сскцизо одновременно с другим процессом, что приведет к непредскззуемым результатам. Естественно, нельзя говорить, что такая ошиока выявится при тестировании; она даже может никогда не произойти за все время существования системы. Легче найти противоположную ошибку — отсутствующая операция и!йпа! может в определенный момент привести к остановке по крайней мере одного нз процессов, что достаточно просто обнаружить.

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

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

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

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

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