Внизу обробки нижніх половин

У цьому розділі були розглянуті три механізми, які використовуються для реалізації відкладених дій в ядрі Linux, – відкладені переривання (softirq), тасклети (tasklet) і черги відкладених дій (work queue) Було показано, як ці механізми працюють і як вони реалізовані Також обговорювалися основні моменти, повязані з використанням цих механізмів у власному програмному коді, і було показано, які у них невідповідні назви Для того щоб відновити історичну справедливість, ми також розглянули ті механізми обробки нижніх половин, які існували в попередніх версіях ядра Linux: механізми ВН і task queue

Дуже часто в главі піднімалися питання, повязані з синхронізацією і паралельним виконанням, тому що ці моменти мають пряме відношення до обробки нижніх половин У цю главу спеціально був включений розділ, який стосується заборони обробки нижніх половин для захисту від конкурентного доступу, Тепер настав час заглибитись в ці моменти з головою У наступному розділі будуть розглянуті особливості синхронізації і паралельного виконання коду в ядрі: основні поняття і відповідні проблеми Далі будуть розглянуті інтерфейси, які дозволяють здійснювати синхронізацію в ядрі і вирішувати зазначені проблеми Збройні наступними двома главами, ви зможете підкорити світ

Введення

в синхронізацію виконання коду ядра

додатках, розрахованих на роботу з спільно використовуваної памяттю (shared memory), необхідно подбати про те, щоб спільно використовувані ресурси були захищені від конкурентного доступу Ядро – не виняток Спільно використовувані ресурси вимагають захисту від конкурентного доступу в звязку з тим, що кілька потоків виполненія1 можуть одночасно маніпулювати одними і тими ж даними: ці потоки можуть переписувати зміни, зроблені іншими потоками, а також звертатися до даних, які знаходяться в неузгоджену (суперечливому, неконсістентном) стані Конкурентний доступ до спільно використовуваних даних – це хороший спосіб отримати нестабільність системи, причини якої, як показує досвід, згодом дуже складно виявити і виправити У звязку з цим важливо при розробці відразу зробити все пра-

вильно

Здійснити необхідну защіу спільно використовуваних ресурсів може виявитися важким завданням Багато років тому, коли операційна система Linux не підтримувала симетричну многопроцессорную обробку, запобігти конкурентний доступ до даних було просто Так як підтримувався тільки один процесор, то єдина можливість конкурентного доступу до даних виникала при отриманні переривання або коли виконання коду ядра явно перепланувати, даючи можливість виконуватися іншому завданню Так, раніше жити було простіше

Ці дні закінчилися Підтримка симетричної многопроцессорности була введена в ядрах серії 20, і з тих пір ця підтримка постійно вдосконалюється Підтримка мультипроцессорности припускає, що код ядра може одночасно виконуватися на двох або більше процесорах Отже, без спеціального захисту частини коду ядра, які виконуються на двох різних процесорах, принципово можуть звернутися до спільно використовуваних даних в один і той же момент

1 Термін пото до виконання я увазі будь виполняющійс я код Це включає, наприклад, завдання в ядрі, обробник переривання я або потік простору ядра У цей й главі потік виконання скорочено називається просто потік Слід памятати, що цей термі н увазі будь-який виконується код

часу Починаючи з серії ядер 26 ядро ​​операційної системи Linux є преемптівним (витісняється) Це передбачає, що (за відсутності необхідного захисту) планувальник може витіснити код ядра в будь-який момент часу і запустити на виконання інше завдання Сьогодні є багато сценаріїв, завдяки яким може виникнути конкурентний доступ до даних в ядрі, і всі ці варіанти вимагають захисту даних

У цій главі розглядаються проблеми, повязані з паралельним виконанням коду і синхронізацією виконання коду в ядрі операційної системи У наступному розділі детально розглянуті механізми і інтерфейси, які надає ядро ​​операційної системи Linux для вирішення проблем синхронізації і запобігання стану конкуренції за ресурс (race condition, стан гонок)

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*