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

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


 

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

81538. Строение, биосинтез и механизм действия кальцитриола. Причины и проявление рахита 137.84 KB
  Действие гормона направлено на повышение концентрации кальция в плазме крови. Низкая концентрация фосфатов и ионов Са2 в крови также ускоряет синтез кальцитриола причём ионы кальция действуют опосредованно через паратгормон. Так например в клетках кишечника кальцитриол индуцирует синтез Са2переносящих белков которые обеспечивают всасывание ионов кальция и фосфатов из полости кишечника в эпителиальную клетку кишечника и далее транспорт из клетки в кровь благодаря чему концентрация ионов кальция во внеклеточной жидкости поддерживается на...
81539. Строение и секреция кортикостероидов. Изменения катаболизма при гипо- и гиперкортицизме 159.94 KB
  Гормоны коры надпочечников кортикостероиды. В коре надпочечников синтезируется более 40 различных стероидов различающихся по структуре и биологической активности. В коре надпочечников образуются предшественники андрогенов из которых наиболее активный дегидроэпиандростерон ДЭА и слабый андростендион. Самый мощный андроген надпочечников тестостерон синтезируется в надпочечниках в небольшом количестве.
81540. Регуляция синтезами секреции гормонов по принципу обратной связи 126.07 KB
  Поддержание уровня гормонов в организме обеспечивает механизм отрицательной обратной связи. Изменение концентрации метаболитов в клеткахмишенях по механизму отрицательной обратной связи подавляет синтез гормонов действуя либо на эндокринные железы либо на гипоталамус. Синтез и секреция тропных гормонов подавляется гормонами эндокринных периферических желёз.
81541. Половые гормоны: строение, влияние на обмен веществ и функции половых желез, матки и молочных желез 133.12 KB
  Биосинтез эстрогенов как биохимический процесс представляет собой ароматизацию С19стероидов катализируемую комплексом ферментов локализованных в микросомах. У женщин детородного возраста основная масса эстрогенов синтезируется в яичнике содержащем зреющий фолликул или желтое тело. Синтез эстрогенов в фолликуле определяется взаимодействием двух стероидпродуцирующих структур зернистого слоя и текаклеток. Синтез эстрогенов в зреющем фолликуле является одним из основных факторов определяющих функцию гипофизарноовариальной системы т.
81542. Гормон роста, строение, функции 102.09 KB
  Гормон роста соматотропин пептидный гормон образуется в соматотропных клетках аденогипофиза. Молекула СТГ состоит из 191 аминокислотного остатка на восемь остатков меньше чем в молекуле пролактина и в отличие от пролактина содержит не три а два внутримолекулярных дисульфидных мостика Гормоном роста соматотропин называют за то что у детей и подростков а также молодых людей с ещё не закрывшимися зонами роста в костях он вызывает выраженное ускорение линейного в длину роста в основном за счет роста длинных трубчатых костей...
81543. Метаболизм эндогенных и чужеродных токсических веществ: реакции микросомального окисления и реакции конъюгации с глутатионом, глюкуроновой кислотой, серной кислотой 144.87 KB
  В ЭР существуют две такие цепи первая состоит из двух ферментов NDPHP450 редуктазы и цитохрома Р450 вторая включает фермент NDHцитохромb5 редуктазу цитохром b5 и ещё один фермент стеароилКоАдесатуразу. Электронтранспортная цепь NDPHP450 редуктаза цитохром Р450. Восстановленный FMN FMNH2 окисляется цитохромом Р450 Цитохром Р450 гемопротеин содержит простетическую группу гем и имеет участки связывания для кислорода и субстрата ксенобиотика. Название цитохром Р450 указывает на то что максимум поглощения комплекса...
81544. Металлотионеин и обезвреживание ионов тяжелых металлов. Белки теплового шока 109.86 KB
  Белки теплового шока. Белки теплового шока это класс функционально сходных белков экспрессия которых усиливается при повышении температуры или при другихстрессирующих клетку условиях. Повышение экспрессии генов кодирующих белки теплового шока регулируется на этапе транскрипции. Чрезвычайное усиление экспрессии генов кодирующих белки теплового шока является частью клеточного ответа на тепловой шок и вызывается в основном фактором теплового шока HSF англ.
81545. Токсичность кислорода: образование активных форм кислорода (супероксид анион, перекись водорода, гидроксильный радикал) 132.6 KB
  К активным формам кислорода относят: ОН гидроксильный радикал; супероксидный анион; Н2О2 пероксид водорода. Активные формы кислорода образуются во многих клетках в результате последовательного одноэлектронного присоединения 4 электронов к 1 молекуле кислорода. Конечный продукт этих реакций вода но по ходу реакций образуются химически активные формы кислорода.
81546. Повреждение мембран в результате перекисного окисления липидов. Механизмы защиты от токсического действия кислорода: неферментативные (витамины Е, С, глутатион и др.) и ферментативные (супероксиддисмутаза, каталаза, глутатионпероксидаза) 114.75 KB
  Активация перекисного окисления характерна для многих заболеваний: дистрофии мышц болезнь Дюшенна болезни Паркинсона при которых ПОЛ разрушает нервные клетки в стволовой части мозга при атеросклерозе развитии опухолей. Изменение структуры тканей в результате ПОЛ можно наблюдать на коже: с возрастом увеличивается количество пигментных пятен на коже особенно на дорсальной поверхности ладоней. Этот пигмент называют липофусцин представляющий собой смесь липидов и белков связанных между собой поперечными ковалентными связями и...