Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы по ОС.doc
Скачиваний:
37
Добавлен:
27.08.2019
Размер:
3.35 Mб
Скачать

13. Планировщик ввода-вывода для дисковых устройств. Алгоритмы планирования ввода-вывода для дискового устройства. Буферизация запросов.

[Лекции]

В то время, когда возникла теория планирования жесткого дика, не было представления о Flesh памяти и SSD. Поэтому будем рассматривать классический жесткий диск (Error: Reference source not found).

Теория планирования диска необходима была, потому что перемещение головки требует времени и усилий, а скорость диска постоянна. Но если мы уже головку переместили, то можно прочесть всю дорожку (читать сектор бессмысленно, так как затраты те же, что и на всю дорожку).

34 Вопрос. Структура системы ввода-вывода

Рисунок 1. Компоненты ядра, задействованные в операции с блочным устройством [Bovet – Chezati]

Основные уровни системы ввода-вывода (Рисунок 1):
  1. Виртуальная файловая система (VFS)

  2. Конкретные реальные файловые системы (они не занимаются поддержкой КЕШэй)

  3. Промежуточное хранилище (КЭШ) – уровень буферов.

  4. Уровень обеспечения связи с контроллером устройства.

  5. Драйвер устройства

  6. Устройство

Процесс выполнения записи на диск (была получена команда write()):

  1. Указатель на данные попадает в ядро системы, а сами данные – в буфер (на концептуальном уровне это запрос)

  2. Далее есть два варианта: выполнить операцию или нет.

Предполагается, что ОС знает о номере головки и дорожки, куда должны быть записаны данные. (У диска также есть КЭШ: 8 Мб). Поэтому примерно известны затраты, необходимые для перехода на новую дорожку. Но так как у нас есть уровень буферизации, на нем можно группировать запросы по дорожкам.

35 Вопрос. Алгоритмы планирования

Далее рассмотрим различные алгоритмы планирования перемещения головки на конкретном примере (Рисунок 2):

  1. Рисунок 2. Обработка запросов к диску (T - номер дорожки)

    SCFS (First Come First Served). Для данного примера не подходит, так как получится нерациональное перемещение (сначала +90, потом -80).
  2. SSPF (Shortest Seek Path First). Переход осуществляется всегда на самую ближайшую дорожку, но траектория при этом не учитывается. При таком подходе объем передаваемых в единицу времени данных максимизирован, но процесс с далекой дорожки будет очень долго ждать (получится большое время отклика операции ввода-вывода). Поэтому в чистом виде данный алгоритм не используется, а еще учитываются и все ожидания.

  3. Элеваторный алгоритм (назван так из-за ассоциации с работой лифта: сначала лифт движется в одном направлении, обрабатывая запросы; затем направление меняет). Движение по жесткому диску осуществляется от края до края. Выполнив очередной запрос, контроллер проверяет бит направления движения и в зависимости от него перемещается к ближайшей дорожке. Если в данном направлении запросов больше нет, значение бита инвертируется. Достоинство элеваторного алгоритма в том, что при любом заданном наборе запросов верхняя граница необходимых перемещений головки для выполнения всех запросов ограничена двойным числом дорожек. Незначительная модификация алгоритма состоит в том, чтобы сканировать диск только в одном направлении. Это обеспечивает меньший разброс по времени отклика. Котроллер так и работает при сбросе жесткого диска [Современные операционные системы_Таненбаум_2002 2-е изд/].

Буферизация запросов – группировка запросов, которые точно нужно выполнить, с целью оптимизации работы с ресурсами (но не обязательно выполнение прямо сейчас).

Процесс буферизации отличается от процесса кэширования данных при чтении диска (КЭШ контроллера обычно содержит блоки, на которые запрос еще не поступал, но которые было удобно прочитать, так как они случайно оказались под головкой при чтении других блоков).

[Bovet D.- CHezati M. YAdro Linux. BHV-SPb.2007] (стр 730)