Очереди отложенных действий

Очереди отложенных действий

Очереди отложенных действий (work queue) — это еще один способ реализации отложенных операций, который отличается от рассмотренных ранее. Очереди действий позволяют откладывать некоторые операции для последующего выполнения потоком пространства ядра — отложенные действия всегда выполняются в контексте процесса. Поэтому код, выполнение которого отложено с помощью постановки в очередь отложенных действий, получает все преимущества, которыми обладает код, выполняющийся в контексте процесса. Наиболее важное свойство — это то, что выполнение очередей действий управляется планировщиком процессов и, соответственно, выполняющийся код может переходить в состояние ожидания (sleep).

Обычно принять решение о том, что необходимо использовать: очереди отложенных действий или отложенные прерывания/тасклеты, достаточно просто. Если отложенным действиям необходимо переходить в состояние ожидания, то следует использовать очереди действий. Если же отложенные операции не могут переходить в состояние ожидания, то воспользуйтесь тасклетами или отложенными прерываниями. Обычно альтернатива использованию очередей отложенных действий — это создание новых потоков пространства ядра. Поскольку при введении новых потоков пространства ядра разработчики ядра обычно хмурят брови (а у некоторых народов это означает смертельную обиду), настоятельно рекомендуется использовать очереди отложенных действий. Их действительно очень просто использовать.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Глава 22 Автоматизация действий

Из книги Adobe Photoshop CS3 автора Завгородний Владимир

Глава 22 Автоматизация действий Adobe Photoshop содержит возможности автоматизации действий, которые можно и нужно использовать в тех случаях, когда вы сталкиваетесь с повторением одинаковых (или почти одинаковых) операций или когда требуется обработать большое количество


Роль отложенных классов

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Роль отложенных классов В определении эффективного класса должна присутствовать полная информация о реализации (пункты E2 и E3). Если она хоть в чем-то неполна, то класс является отложенным.Чем более "отложенным" является класс, тем он ближе к АТД, одетому в некоторую


Задание семантики отложенных компонентов и классов

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

Задание семантики отложенных компонентов и классов Хотя у отложенного компонента нет реализации, а у отложенного класса либо нет реализации, либо он реализован частично, часто требуется задать их абстрактные семантические свойства. Для этой цели можно использовать


Роль отложенных классов

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Роль отложенных классов Отложенные классы являются одним из важнейших связанных с наследованием механизмов, предназначенных для решения описанных в начале книги проблем конструирования


Роль отложенных классов при анализе и глобальном проектировании

Из книги Инфобизнес за один день автора Ушанов Азамат

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


7.7 Просмотр действий в ICMP

Из книги автора

7.7 Просмотр действий в ICMP Ниже показана часть отчета о статистике протоколов команды netstat. Приведенный фрагмент посвящен протоколу ICMP. В отчете отражены операции ICMP, выполненные после последней инициализации.> netstat -sicmp: 1075 calls to icmp_error Output histogram:  echo reply: 231  destination unreachable:


Триггеры действий пользователя

Из книги автора

Триггеры действий пользователя Есть прекрасная возможность написания собственных триггеров для выполнения дополнительных действий по поддержке ссылочной целостности. Хотя автоматические триггеры достаточно гибкие для того, чтобы предусмотреть большинство


6. План действий на месяц

Из книги автора

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


7. План действий на неделю

Из книги автора

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


8. План действий на день

Из книги автора

8. План действий на день Задач у нас немного, сразу скажем – на день, максимум четыре. Самые важные из них мы стремимся сделать с утра до обеда. Потому что, когда после обеда основные дела сделаны, можно спокойно заниматься мелочами, бытовыми делами, а вечером вы свободны –


Механизм отложенных прерываний (softirq)

Из книги автора

Механизм отложенных прерываний (softirq) Обсуждение существующих методов обработки нижних половин начнем с механизма softirq. Обработчики на основе механизма отложенных прерываний используются редко. Тасклеты — это более часто используемая форма обработчика нижних половин.


Реализация отложенных прерываний

Из книги автора

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


Использование отложенных прерываний

Из книги автора

Использование отложенных прерываний Отложенные прерывания зарезервированы для наиболее важных и критичных ко времени выполнения обработчиков нижних половин в системе. Сейчас только две подсистемы — подсистема SCSI и сетевая подсистема — напрямую используют механизм


Реализация очередей отложенных действий

Из книги автора

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


Использование очередей отложенных действий

Из книги автора

Использование очередей отложенных действий Использовать очереди действий просто. Сначала мы рассмотрим рабочие потоки, используемые по умолчанию, — events, а затем опишем создание новых типов рабочих потоков.Создание отложенных действийПервый этап — это создание самого