<<
>>

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

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

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

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

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

Благодаря увеличению количества многоядерных центральных процессоров даже на недорогих персональных компьютерах возможности достижения взаимного исключения за счет запрещения прерываний даже внутри ядра сужаются. Уже становится привычным наличие двухъядерных процессоров, на многих машинах имеются четыре ядра, и не за горами распространение 8-, 16- или 32-ядерных процессоров. Запрещение прерываний на одном центральном процессоре в многоядерных (то есть мультипроцессорных) системах не запрещает другим центральным процессорам препятствовать операциям, выполняемым первым центральным процессором. Следовательно, возникает потребность в применении более сложных схем.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Запрещение прерываний:

  1. § 7 Цель и побудительная причина договора. – Обязательства без цели. – Простое сознание долга. – Мнимая цель. – Цель запрещенная. – О значении запрещенной цели по русскому закону. – Уничтожение договора с запрещенной целью и последствия уничтожения.
  2. § 69 Русское право залога. – Историческое его происхождение и первоначальные виды. – Значение закладной. – Нынешние законы о залоге. – Что может быть предметом залога. – Залог чужого имущества. – Свобода залога от запрещений. – Цель- ность залога. – Закон 1862 года о залоге из-под запрещения. – Качества личности. – Форма залога между частными лицами
  3. 7.3.2. Прерывания
  4. 7.4.4. Как справиться с прерыванием.
  5. 7.3.2. Прерывания
  6. Прерывание нотаций:
  7. Прерывание обвинений:
  8. Прерывание криков и ругани:
  9. 7.4.4. Как справиться с прерываниями
  10. Статья 203. Занятие запрещенными видами хозяйственной деятельности
  11. § 40 Понятие о запродаже по системе нашего свода. – Запродажная запись о недвижимом имуществе. – Значение срока. – Запрещение вступать во владение запроданным имуществом. – Задаточная расписка.
  12. § 32 Право распоряжения. – Двоякое его значение. – Отделение его от права собственности. – Добровольное и недобровольное. – Запрещение. – Действие его и форма. – Арест движимости. – Опека
  13. § 46 Сущность дарения и отличительные его свойства. – Ограничения дарения. – Запрещение дара между некоторыми лицами. – Право требовать возвращения дара. – Условия и обязательства, из дара проистекающие