Старый механизм BH
Старый механизм BH
Хотя старый интерфейс BH, к счастью, уже отсутствует в ядрах серии 2.6, тем не менее им пользовались очень долгое время — с первых версий ядра. Учитывая, что этому интерфейсу удалось продержаться очень долго, он, конечно, представляет собой историческую ценность и заслуживает большего, чем просто беглого рассмотрения. Этот раздел никаким образом не касается ядер серии 2.6, но значение истории переоценить трудно.
Интерфейс BH очень древний, и это заметно. Каждый обработчик BH должен быть определен статически, и количество этих обработчиков ограничено максимальным значением 32. Так как все обработчики BH должны быть определены на этапе компиляции, загружаемые модули ядра не могли напрямую использовать интерфейс BH. Тем не менее можно было встраивать функции в уже существующие обработчики BH. Со временем необходимость статического объявления и максимальное количество обработчиков нижних половин, равное 32, стали надоедать.
Все обработчики BH выполнялись строго последовательно — никакие два обработчика BH, даже разных типов, не могли выполняться параллельно. Это позволяло обеспечить простую синхронизацию, но все же для получения высокой производительности при многопроцессорной обработке это было не очень хорошо. Драйверы, которые использовали интерфейс BH, очень плохо масштабировались на несколько процессоров. Например, страдала сетевая подсистема.
В остальном, за исключением указанных ограничений, механизм BH был похож на механизм тасклетов. На самом деле, в ядрах серии 2.4 механизм BH был реализован на основе тасклетов. Максимальное количество обработчиков нижних половин, равное 32, обеспечивалось значениями констант, определенных в заголовочном файле <linux/interrupt.h>. Для того чтобы отметить обработчик BH как ожидающий на выполнение, необходимо было вызвать функцию mark_bh() с передачей номера обработчика BH в качестве параметра. В ядрах серии 2.4 при этом планировался на выполнение тасклет BH, который выполнялся с помощью обработчика bh_action(). До серии ядер 2.4 механизм BH существовал самостоятельно, как сейчас механизм отложенных прерываний.
В связи с недостатками этого типа обработчиков нижних половин, разработчики ядра предложили механизм очередей заданий (task queue), чтобы заменить механизм нижних половин. Очереди заданий так и не смогли справиться с этой задачей, хотя и завоевали расположение большого количества пользователей. При разработке серии ядер 2.3 были предложены механизмы отложенных прерываний (softirq) и механизм тасклетов (tasklet), для того чтобы положить конец механизму BH. Механизм BH при этом был реализован на основе механизма тасклетов. К сожалению, достаточно сложно переносить обработчики нижних половин с использования интерфейса BH на использование механизм тасклетов или отложенных прерываний, в связи с тем что у новых интерфейсов нет свойства строгой последовательности выполнения[40].
Однако при разработке ядер серии 2.5 необходимую конвертацию все же сделали, когда таймеры ядра и подсистему SCSI (единственные оставшиеся системы, которые использовали механизм BH) наконец-то перевели на использование отложенных прерываний. И в завершение, разработчики ядра совсем убрали интерфейс BH. Скатертью дорога тебе, интерфейс BH!
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Старый способ: дополнительная разметка
Старый способ: дополнительная разметка Как это сделать? В начале 2008 года в статье для Think Vitamin Пол Аннетт написал о приемах, которые он использовал для создания эффекта параллакса именно на сайте Silverback (http://bkaprt.com/css3/10/)[13].Чтобы наслоить отдельные PNG одну поверх другой, нужно
Старый механизм очередей заданий
Старый механизм очередей заданий Так же как и в случае интерфейса BH, который дал начало интерфейсам отложенных прерываний (softirq) и тасклетов (tasklet), интерфейс очередей действий возник благодаря недостаткам интерфейса очередей заданий (task queue). Интерфейс очередей заданий
Страничный механизм
Страничный механизм При реализации виртуальной памяти, основанной только на сегментации, весь сегмент целиком может либо присутствовать в оперативной памяти, либо отсутствовать (точнее, находиться во вторичной памяти или в исполняемом файле процесса). Поскольку размер
(7.19) Как завести под W2k старый CD рекордер? Например, CD-recorder Yamaha CDR-100 (SCSI) определяется, но никаких драйверов на него не ставится.
(7.19) Как завести под W2k старый CD рекордер? Например, CD-recorder Yamaha CDR-100 (SCSI) определяется, но никаких драйверов на него не ставится. Для этого достаточно выбрать драйвер вручную, из списка. Вполне подойдёт стандартный драйвер CD-ROM. Привод будет виден в Explorer, и записывающий CD-R софт
1.2.3. Поисковый механизм
1.2.3. Поисковый механизм Начиная выполнять поиск с помощью Яндекса, мы может в явном виде указать, в какой базе (коллекции документов, типе документов) следует выполнять поиск. Если мы не указываем этого, то на основе анализа запроса Яндекс самостоятельно делает допущение о
Старый продающий текст
Старый продающий текст Прежняя домашняя страница Джона почти не содержала информации о пользе предлагаемых услуг, зато на ней было много слов о достоинствах компании. Но главная проблема заключалась даже не в этом. Вот как выглядел продающий текст раньше: Навсегда
R.18.3.2 Старый стиль задания инициализатора базового класса
R.18.3.2 Старый стиль задания инициализатора базового класса В конструкции инициализатор-памяти (§R.12.6.2) можно не указывать имя-класса, обозначающее базовый класс при условии, что существует только один прямой (непосредственный) базовый класс. Поэтому в описанииclass B
Механизм UAC
Механизм UAC Существует несколько возможностей настройки работы механизма UAC операционной системы Windows Vista. Все они основаны на использовании параметров REG_DWORD-типа ветви реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem.• ConsentPromptBehaviorAdmin – позволяет определить режим
Механизм предвыборки
Механизм предвыборки Механизм предвыборки позволяет ускорить загрузку часто используемых при работе пользователя в операционной системе программ. Это достигается предварительным помещением в оперативную память данных таких программ. При этом механизм предвыборки
Старый друг лучше
Старый друг лучше Автор: Козловский ЕвгенийИзобретение позапрошлого века (в нынешнем году ей исполняется ни много ни мало – 110 лет), детище немецкого физика Карла Фердинанда Брона, представляет собой колбу, из которой откачан воздух и передняя поверхность которой
Механизм освобождения
Механизм освобождения Другой важной процедурой класса MEMORY является dispose (не путайте с тезкой Pascal, которая освобождает память). Она связана с важной практической проблемой, иногда называемой финалом или окончательным завершением (finalization). Если сборщик мусора утилизирует
Механизм исключений
Механизм исключений Из предшествующего анализа следует механизм исключений, наилучшим образом соответствующий ОО-подходу и идеям Проектирования по Контракту.Для обеспечения основных свойств введем в язык два новых ключевых слова. Для случаев, в которых необходим
Механизм решения
Механизм решения И снова запись механизма решения напрямую вытекает из анализа поставленной проблемы. Введем новую форму присваивания, назвав ее попыткой присваивания (assignment attempt):target ?= sourceЗнак вопроса указывает на предварительный характер операции. Пусть сущность target
Статический механизм
Статический механизм Устранить последнее неясности в понимании закрепленного объявления поможет следующее замечание: это чисто статический механизм, не предполагающий никаких изменений объектов в период выполнения. Все ограничения могут быть проверены в период