- •Глава 11
- •Глава 12. Управление файлами
- •Глава 11 Управление вводом-выводом и дисковое планирование
- •11.1. Устройства ввода-вывода
- •11.2. Организация функций
- •11.3. Вопросы проектирования операционных систем
- •11.4 Буферизация операций ввода-вывода
- •11.5. Дисковое планирование
- •Выбор в соответствии с источником запроса
- •Выбор в соответствии с содержимым запроса
- •11.6. Raid
- •Буфер кэша
- •Очередь символов
- •Небуферизированный ввод-вывод
- •11.9. Ввод-вывод в windows 2000
- •Асинхронный и синхронный ввод-вывод
- •11.10. Резюме, ключевые термины и контрольные вопросы
- •Ключевые термины
- •Рекумендуемая литература
- •11.12. Задачи
- •Приложение. Дисковые устройства Магнитный диск
- •Оптическая память
Выбор в соответствии с источником запроса
RSS Случайное планирование Для анализа и моделирования
FIFO "Первым вошел — первым вышел" Наиболее беспристрастный метод
PRI Приоритет процесса Очередь запросов к диску
управляется извне
LIFO "Последним вошел — первым Максимизация локализации и
вышел" использования ресурса
Выбор в соответствии с содержимым запроса
SSTF Выбор самого короткого времени Высокая степень использования,
обслуживания малые очереди
SCAN Перемещение вперед и назад Лучшее распределение обслужи-
по диску вания
C-SCAN Однонаправленное перемещение Низкая изменчивость
с быстрым возвратом обслуживания
N-step-SCAN SCAN с N записями в одном пакете Гарантия обслуживания
FSCAN N-step-SCAN, где N — размер оче- Чувствительный к загрузке
реди в начале цикла SCAN
Приоритеты
В системе с использованием приоритета (PRI) управление планированием является внешним по отношению к программному обеспечению управления диском. Такой подход не имеет отношения к оптимизации использования диска, но зато удовлетворяет некоторым другим целям операционной системы. Коротким пакетным заданиям, а также интерактивным заданиям часто присваивается более высокий приоритет, чем длинным заданиям, требующим более длительных вычислений. Эта схема позволяет быстро завершить большое количество коротких заданий в системе и обеспечивает малое время отклика. Однако при использовании этого метода у больших заданий оказывается слишком длительным ожидание выполнения дисковых операций. Кроме того, такая стратегия может привести к противодействию со стороны пользователей, которые будут разделять свои задания на малые подзадания. Не подходит эта стратегия и для работы с базами данных.
Последним вошел — первым вышел
Как это ни удивительно, но стратегия выполнения первым самого последнего запроса имеет свои преимущества. В системах обработки транзакций при предоставлении устройства для последнего пользователя должно выполняться лишь небольшое перемещение указателя последовательного файла. Использование преимуществ локализации позволяет повысить пропускную способность и уменьшить длину очереди. К сожалению, если нагрузка на диск велика, существует очевидная возможность голодания процесса.
Три рассмотренные стратегии планирования — FIFO, PRI и LIFO — основаны исключительно на атрибутах очереди или запрашивающего процесса. Однакоесли планировщику известна текущая дорожка, то появляется возможность использования стратегии планирования, основанной на содержимом запроса.
SSTF
Стратегия выбора наименьшего времени обслуживания (Shortest Service Time First — SSTF) заключается в выборе того дискового запроса на ввод-вывод, который требует наименьшего перемещения головок из текущей позиции. Следовательно, мы минимизируем время поиска. Естественно, постоянный выбор минимального времени поиска не дает гарантии, что среднее время поиска при всех перемещениях будет минимальным, но тем не менее эта стратегия обеспечивает лучшую по сравнению с FIFO производительность дисковой системы. Поскольку головки могут перемещаться в двух направлениях, то при равных расстояниях для принятия решения может быть использован случайный выбор направления.
На рис. 11.8,6 и в табл. 11.2,6 показана производительность стратегии SSTF для той же последовательности запросов, что и при рассмотрении стратегии FIFO.
SCAN
Все стратегии, описанные к настоящему времени (за исключением FIFO), могут оставить некоторый запрос невыполненным до тех пор, пока не освободится вся очередь — т.е. при работе всегда могут иметься новые запросы, которые будут выбраны до уже имеющегося в очереди. Избежать такого рода голодания можно при использовании стратегии SCAN.
При использовании этого алгоритма перемещение головки происходит только в одном направлении, удовлетворяя те запросы, которые соответствуют выбранному направлению. После достижения последней дорожки в выбранном направлении (или когда исчерпаются возможные запросы), направление изменится на противоположное.
Стратегия SCAN представлена на рис. 11.8,в и в табл. 11.2,6. Как видите, стратегия SCAN ведет себя почти так же, как и стратегия SSTF. Фактически, если предположить, что изначально головка перемещается в сторону меньших номеров дорожек, то схема планирования окажется идентичной для SSTF и SCAN. Однако это статический пример, в котором в очередь не добавляется ни один запрос. Однако даже при динамическом изменении очереди стратегии SCAN и SSTF выглядят, как правило, очень похоже.
Нетрудно увидеть, что стратегия SCAN оказывает предпочтение тем заданиям, чьи запросы относятся к дорожкам, находящимся ближе всего к центру либо наиболее удаленным от него, а также отдает предпочтение запросам, поступившим последними. Первой проблемы можно избежать путем применения стратегии C-SCAN; вторая же проблема решается с помощью стратегии N-step-SCAN.
C-SCAN
Стратегия C-SCAN (циклическое сканирование) ограничивает сканирование только одним направлением. Когда обнаруживается последняя дорожка в заданном направлении, головка возвращается в противоположный конец диска, и сканирование начинается снова. Это уменьшает максимальную задержку, вызванную новыми запросами. Если при использовании стратегии SCAN ожидаемое время сканирования от внутренней к внешней дорожке равно t, то ожидаемый интервал обслуживания секторов, находящихся на периферии, будет равен 2t. При использовании стратегии C-SCAN этот интервал будет порядка t+smax, где smax — максимальное время поиска.
Поведение стратегии C-SCAN показано на рис. 11.8,г и в табл. 11.2,г.
N-step-SCAN и FSCAN
При использовании стратегий SSTF, SCAN и C-SCAN может оказаться возможной ситуация, когда один или несколько процессов с высокой частотой обращений к одной дорожке монополизируют устройство за счет многочисленных повторений запросов к одной и той же дорожке. Наиболее характерна эта особенность для многоповерхностных дисков с большой плотностью записи. Для предотвращения такого "залипания головки" очередь дисковых запросов может быть сегментирована, причем за один прием полностью выполняется весь сегмент заданий. Примерами такого подхода являются стратегии N-step-SCAN и FSCAN.
Стратегия N-step-SCAN позволяет произвести сегментацию очереди дисковых запросов на подочереди длиной N. Каждая подочередь обрабатывается за один прием с использованием стратегии SCAN. В ходе обработки очереди к некоторой другой очереди могут добавляться новые запросы. Если в конце текущего сканирования доступными оказываются менее N запросов, то все они обрабатываются в следующем цикле сканирования. При больших значениях N выполнение алгоритма N-step-SCAN похоже на выполнение SCAN; предельный случай N=1 соответствует стратегии FIFO.
FSCAN — стратегия, использующая две подочереди. С началом сканирования все запросы находятся в одной из очередей; другая при этом остается пустой. Во время сканирования первой очереди все новые запросы попадают во вторую очередь. Таким образом, обслуживание новых очередей откладывается, пока не будут обработаны все старые запросы.