Как это ни удивительно, но стратегия выполнения первым самого последнего запроса имеет свои преимущества. В системах обработки транзакций при предоставлении устройства для последнего пользователя должно выполняться лишь небольшое перемещение указателя последовательного файла. Использование преимуществ локализации позволяет повысить пропускную способность и уменьшить длину очереди. К сожалению, если нагрузка на диск велика, существует очевидная возможность голодания процесса.
Три рассмотренные стратегии планирования — 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,г.