24517

Способы реализации взаимных исключений путем запрещения прерываний, использования блокирующих переменных, системных вызовов

Доклад

Информатика, кибернетика и программирование

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

Русский

2013-08-09

103.83 KB

6 чел.

Вопрос 22. Способы реализации взаимных исключений путем запрещения прерываний, использования блокирующих переменных, системных вызовов.

§4.4.2.Запрещение прерываний.

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

§4.4.3.Блокирующие переменные.

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

С каждым разделяемым ресурсом связывается двоичная переменная, которая принимает значение 1, если ресурс свободен (то есть ни один процесс не находится в данный момент в критической секции, связанной с данным процессом), и значение 0, если ресурс занят. На рис. 4.9 показан фрагмент алгоритма потока, использующего для реализации взаимного исключения доступа к разделяемому ресурсу D блокирующую переменную F(D). Перед входом в критическую секцию поток проверяет, свободен ли ресурс D. Если он занят, то проверка циклически повторяется, если свободен, то значение переменной F(D) устанавливается в 0, и поток входит в критическую секцию. После того, как поток выполнит все действия с разделяемым ресурсом D, значение переменной F(D) снова устанавливается равным 1.

Рис. 4.9. Реализация критической секции с использованием

блокирующих переменных

Если все потоки написаны с использованием вышеописанных соглашений, то взаимное исключение гарантируется. При этом они могут быть прерваны ОС в любой момент и в любом месте. Однако, одно ограничение на прерывания все же имеется – операция проверки и установки блокирующей переменной должна быть неделимой. Для этой цели необходимо использовать соответствующие команды проверки-установки (в процессоре Pentium это BTC, BTR, BTS) или специальные системные примитивы атомарных операций.

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

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

Для устранения этого недостатка в ОС Windows для работы с критическими секциями используются специальные системные вызовы: EnterCriticalSection() и LeaveCriticalSection().

При входе в критическую секцию (рис. 4.10) поток выполняет системный вызов EnterCriticalSection(), в рамках которого вначале выполняется проверка блокирующей переменной необходимого ресурса. Если ресурс занят, то циклический опрос далее не выполняется, а поток переводится в состояние ожидания освобождения ресурса D. Поток, который в это время использует ресурс D, после выхода из критической секции должен вызвать системную функцию LeaveCriticalSection(), в результате чего ресурс освобождается. ОС просматривает очередь ожидающих этот ресурс потоков и переводит поток, ожидающий событие D, в состояние «готовность».

Рис. 4.10. Реализация критической секции с использованием

системных функций


 

А также другие работы, которые могут Вас заинтересовать

17189. КРИТИКА ТЕОРИИ ЛИЧНОСТИ КАК СУБЪЕКТА ИСТОРИИ В ИСТОРИОСОФИИ Л.П. КАРСАВИНА 143.53 KB
  Т.А. Туровцев КРИТИКА ТЕОРИИ ЛИЧНОСТИ КАК СУБЪЕКТА ИСТОРИИ В ИСТОРИОСОФИИ Л.П. КАРСАВИНА Представляется что одной из существенных методологических ошибок русской религиознофилософской мысли оказывается неразличение понятий. Это может касаться как исходно заяв
17190. ЛАТИНСКИЕ ТРАКТАТЫ 179.09 KB
  Майстер Экхарт ЛАТИНСКИЕ ТРАКТАТЫ Перевод В.В. Можаровского фрагментов из 3 х трактатов Вступление Здесь представлен перевод наиболее важных в догматическом отношении фрагментов из Латинских трактатов Майстера Экхарта. Тексты размещены по трем основным раз
17191. ЗАПАДНОЕВРОПЕЙСКАЯ МЫСЛЬ И РУССКАЯ ФИЛОСОФИЯ 249.45 KB
  П.А. Сапронов ЗАПАДНОЕВРОПЕЙСКАЯ МЫСЛЬ И РУССКАЯ ФИЛОСОФИЯ Ввиду промежуточности недовершенности и неопределенности феномена русской религиознофилософской мысли ее отношение к западной философии никогда не было отношением части и целого. В еще меньшей степени б
17192. Отношение к философии и богословию в святоотеческой традиции 42.51 KB
  Отношение к философии и богословию в святоотеческой традиции. Вопрос об отношении между философией и богословием между верой и разумом достаточно старый и решался он в зависимости от культурной и исторической ситуации поразному. Для нас важно что в полемике по этом
17193. ДОМАШНИЙ ДОКТОР ДЛЯ ДЕТЕЙ 2.06 MB
  Клафлин Эдвард под ред. ДОМАШНИЙ ДОКТОР ДЛЯ ДЕТЕЙ Советы американских врачей пер. Почиталин И. Г. Изд. КронПресс Москва 1997 г. OCR Палек Alligator 1998 г. Вступление Как помочь здоровью вашего ребенка Если у вас есть дети вы наверное захотите чтобы под рукой ...
17194. КРИЗИС БЕЗБОЖИЯ 68 KB
  И.Ильин КРИЗИС БЕЗБОЖИЯ Первая глава лекции прочитанной И.А. Ильиным в Риге 11 октября 1935 года. Историческое время выпавшее нам на долю исполнено великого и глубокого значения: это эпоха чрезвычайной насыщенности напряженности эпоха крушения подводящего...
17195. ПРЕДАНИЕ И ПРЕДАНИЯ 66.5 KB
  Лосский ПРЕДАНИЕ И ПРЕДАНИЯ Предание ParadosisTraditio один из терминов у которого так много значений что он рискует вовсе утерять свой первоначальный смысл. И это не только по причине некоторого обмирщения которое обесценило столько слов богословского словаря как дух...
17196. ТИПЫ РЕЛИГИОЗНОЙ ЖИЗНИ 96 KB
  Мать МАРИЯ Скобцова ТИПЫ РЕЛИГИОЗНОЙ ЖИЗНИ Если мы начнем изучать историческое место на котором мы находимся или вернее те исторические типы благочестия которые сейчас выработало наше историческое положение то мы сможем объективно и беспристрастно увидеть разн
17197. СПАСЕHИЕ И ОПРАВДАHИЕ 104 KB
  Аpхиепископ Михаил Мудьюгин СПАСЕHИЕ И ОПРАВДАHИЕ Опыт кpаткого pаскpытия пpавославной субъективной сотеpиологии Стpемление к спасению в будущей или загpобной жизни явление хаpактеpизующее духовную жизнь многих веpоятно даже большинства сознательных хpистиан. ...