Наверх Системное программирование
Предыдущий раздел Оглавление Следующий раздел

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

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

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

Предыдущий раздел Оглавление Следующий раздел