Linux Kernel (Ядро линукса) (часть 1)


Защита структуры, к которой обращаются обработчики исключений и функции отложенного выполнения

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

На самом деле, этого более чем достаточно. Обработчик исключения может вместо отключения локальных прерываний просто запретить функции отложенного выполнения при помощи макроса locai bh disabie .Запрещение только функций отложенного выполнения предпочтительнее отключения прерываний, поскольку последние продолжают обслуживаться процессором. Выполнение функций отложенного выполнения сериализовано на каждом процессоре, так что конфликты не возникают.

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

Предыдущая страница | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | Следующая страница




Возможно, Вас также заинтересует:

ОС Knoppix - это Linux без про...

ВведениеЕсли вы цените свое время, умеете считать деньги и знаете стоимость информации, то эта книга...

Linux Kernel (Ядро линукса) (ч...

Спин-блокировкаСпин-блокировка необходима в многопроцессорной системе, потому что могут возникнуть...

Linux Kernel (Ядро линукса) (ч...

Копирование при записи В системах Unix первых поколений создание процесса было реализовано довольно...

Linux Kernel (Ядро линукса) (ч...

Буферы блоков и головы буферовУ каждого буфера есть дескриптор голова буфера, имеющий тип buffer...