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. Реализация критической секции с использованием

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


 

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

31639. Накопители на оптических дисках 1.41 MB
  Основы оптической записи Методы оптической записи на поверхности подвижного носителя основаны на способности некоторых материалов изменять отражательные свойства на участках которые подвергались тепловому магнитному или комбинированному воздействию. Первоначально для оптической записи использовалось свойство лазерного луча прожигать отверстия в тонком слое металла рис. Такой способ записи используется для НОД с однократной записью. Возможность многократной записи обеспечивается при использовании магнитооптических носителей.
31640. Видеоадаптеры. Графические видеоадаптеры точечные 33.63 KB
  Последней командой графического файла является команда безусловного перехода на начало файла что обеспечивает регенерацию изображения. Структура графического адаптера с произвольным сканированием векторного типа: СМ сумматор ГВ генератор векторов Если адаптер работает в абсолютных координатах то ЦП сильно загружен в режиме редактирования или перемещения изображения. Адаптеры такого типа обладают отсутствием мерцания возможностью наложения изображения из видеоЗУ на стандартное телевизионное изображение от телекамеры или...
31641. Системные и локальные шины 23.51 KB
  Стоимость такой организации получается достаточно низкой поскольку для реализации множества путей передачи информации используется единственный набор линий шины разделяемый множеством устройств. Одна из причин больших трудностей возникающих при разработке шин заключается в том что максимальная скорость шины главным образом лимитируется физическими факторами: длиной шины и количеством подсоединяемых устройств и следовательно нагрузкой на шину. Эти физические ограничения не позволяют произвольно ускорять шины.
31642. Системная шина ISA 11.88 KB
  Эта системная шина отличалась наличием второго 36контактного дополнительного разъема для соответствующих плат расширения. Системная шина IS полностью включала в себя возможности старой 8разрядной шины. Шина IS позволяет синхронизировать работу процессора и шины с разными тактовыми частотами.
31643. Психологические особенности детей дошкольного возраста 55.5 KB
  Игра сюжетно ролевая игра Наглядно образное мышление Начало понятийного мышления Картина мира Произвольность поведения Самооценка Практическое овладение речью развитие функций речи Дошкольное детство большой отрезок жизни ребенка. Социальная ситуация развития Изменяется место ребенка в системе отношений уже не является центром своей семьи развивается способность к идентификации с людьми образами героев художественных произведений. Она оказывает значительное влияние на развитие ребенка. Но хотя жизнь в игре протекает в...
31644. Психологическая готовность ребёнка к обучению в школе. Проблемы адаптации первоклассника к школе 55.5 KB
  Психологическая готовность ребёнка к обучению в школе. Проблемы адаптации первоклассника к школе. Тема готовности ребенка к школе в отечественной психологии своими корнями уходит в труды Л.Эльконина готовность ребенка к обучению в школе определяет социальная зрелость.
31645. Психологические особенности детей младшего школьного возраста 54.5 KB
  Отчетливо виден социальный смысл учения отношение маленьких школьников к отметкам. Учебные действия школьников с помощью которых можно решить задачу. Самоконтроль Оценка Самооценка Особенности познавательного развития младших школьников. Внимание школьников зависит от: организации активной умственной деятельности.
31646. Мышление и воображение. Их роль в образовательном процессе 23.5 KB
  Виды воображения: по Немову Активное человек по собственнуму желанию усилием воли вызывает соответствующие образы; Пассивное образы возникают спонтанно помимо воли и желания человека; Продуктивное дейчтвительность сознательно конструируется человеком а не просто механически копируется или воссоздается; Репродуктивное ставится задача воспроизвести реальность в том виде какова она есть такое воображение больше напоминает память чем творчество. Фантазия это определенное чувство желания чегото конкретного ради чего...
31647. Память и внимание. Особенности формирования памяти и внимания в образовательном процессе 33.5 KB
  Особенности формирования памяти и внимания в образовательном процессе. Виды внимания: непроизвольное оно может возникнуть по мимо желаний человека в силу какихто обстоятельств; произвольное вызывается силою воли желанием самого человека ответственность интерес; послепроизвольное возникает в силу появления устойчивого интереса к объекту является самым продуктивным и эффективным. Особенности внимания свойства: объем внимания определяется количеством объектов которые могут быть замечены человеком за короткий промежуток...