Главная » Ядро Linux » Очереди запросов

0

Дляблочныхустройствподдерживаютсяочередизапросов(requestqueue),вкоторых хранятся ожидающие запросы на  выполнение операций блочного ввода-вывода. Очередь  запросов представляется с помощью структуры  request_queue , которая определена в файле   <linux/blkdev.h> .  Очередь  запросов  содержит двухсвязный список запросов и соответствующую управляющую информацию.  Запросы добавляются  в очередь  кодом  ядра  более  высокого уровня, таким  как  файловые системы. Пока  очередь  запросов не  пуста, драйвер  блочного устройства, связанный с очередью, извлекает запросы из  головы  очереди  и отправляет их на соответствующее блочное устройство. Каждый элемент списка запросов очереди—  это один  запрос, представленный с помощью структуры  struc t   request .

Запросы

Отдельные запросы представляются с помощью структуры  struc t   request , которая  тоже  определена в файле  <linux/blkdev.h> . Каждый запрос  может  состоять из более  чем одной  структуры  bio , потому  что один  запрос  может  содержать обращение  к нескольким смежным дисковым блокам. Обратите внимание, что хотя блоки на диске  и должны  быть смежными, данные  этих блоков  не обязательно должны быть  смежными в физической памяти—  каждая  структура  bi o может  содержать несколько сегментов (вспомните, сегменты — это непрерывные участки памяти, в которых хранятся данные  блока), а запрос  может  состоять  из нескольких структур  bio .

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

По теме:

  • Комментарии