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


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

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

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

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

Предыдущая страница | 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 без проблем

ВведениеЕсли вы цените свое время, умеете считать деньги и знаете стоимость информации, то эта книга для вас. А так как к книге прилагается компакт- диск с готовой к работе операционной системой Knoppix Live CD, то лишь достаточно вставить его в привод и перегрузить компьютер,...

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

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

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

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

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

Буферы блоков и головы буферовУ каждого буфера есть дескриптор голова буфера, имеющий тип buffer head. Этот дескриптор содержит всю информацию, необходимую ядру для работы с блоком, так что перед обработкой блока ядро обязательно проверяет голову...