Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л. Клопа.docx
Скачиваний:
3
Добавлен:
26.09.2019
Размер:
53.22 Кб
Скачать

Планирование запросов

При использовании не блокирующегося системного вызова может оказаться, что нужное устройство уже занято выполнением некоторых операций. В этом случаи не блокирующийся вызов может немедленно вернуться не выполнив запрошенных команд. При организации запроса на совершение операции ввода/вывода с помощью блокирующегося и асинхронного вызова занятость устройства приводит к необходимости постановки в очередь запроса к данному устройству. В результате с каждым устройством оказывается связан список неудовлетворенных запросов процессов находящихся в состоянии ожидания и запросов выполняющихся в асинхронном режиме. Состояние ожидание расщепляется на набор очередей процессов, дожидающихся различных устройств ввода/вывода. После завершения выполнения текущего запроса, ОС должна решить какой из запросов в списке должен быть удовлетворен следующим и инициировать его исполнение. Здесь необходимо осуществлять планирование применения устройств, пользуясь каким – либо алгоритмом этого планирования. Задача планирования использования устройства обычно возлагается на базовую подсистему ввода/вывода. Однако для некоторых устройств лучшие алгоритмы планирования могут быть тесно связаны с деталями их внутреннего функционирования. В таких случаях операция планирования переносится внутрь драйвера соответствующего устройства, т.к. эти детали скрыты от базовой подсистемы. Для этого в интерфейс драйвера добавляется еще одна специальная функция, которая осуществляет выбор очередного запроса – функция strategy.

Алгоритм планирования запросов к жесткому диску Строение жесткого диска и параметры планирования

При планировании использования жесткого диска параметром планирования является время, которое потребуется для выполнения очередного запроса.

Время, которое необходимо для чтения или записи определенного сектора на определенной дорожке определенного цилиндра можно разделить на 2 составляющих:

  1. Время обмена информации между магнитной головкой и компьютером, который не зависит от положения данных и определяется скоростью их передач, называется transfer speed

  2. Время необходимое для позиционировании головки над заданным сектором, называется positioning time

Время позиционирования в свою очередь состоит из времени необходимого для перемещения головок над нужными цилиндрами seek time (время поиска) и времени, которое нужно для того чтоб новый сектор повернулся под головку rotational latency (задержка на вращения)

Времена поиска пропорциональны разнице между номера цилиндра предыдущего и планируемого запроса. Задержка на вращение определяется довольно сложным соотношениями между номерами цилиндров и секторов предыдущего и планируемого запросов и скоростями вращения диска и перемещения головок, поэтому набор параметров планирования сокращается до времени поиска различных запросов, определяемого текущим положением головки и номера требуемых цилиндров, разницей в задержках на вращении пренебрегают.

Алгоритм first come, first served

Простейший алгоритм является алгоритм первым пришел, первым обслужен. Все запросы организуются в очередь FIFO и обслуживаются в порядке поступления. Алгоритм прост в реализации, но может приводить к длительному общему времени обслуживания запросов. Пример: на диске из ста цилиндров существует следующая очередь запросов: 23, 67, 55, 14, 31, 7, 84, 10. В настоящий момент головка находится на 63 цилиндре, тогда положение головок будет меняться следующим образом: 63, 23, 67,55,14,31,7, 84, 10. Всего головки переместятся на 329 цилиндров. Не эффективность алгоритма хорошо иллюстрируется двумя последними перемещениями 7 цилиндра через весь диск на 84 цилиндр и затем опять через весь диск на 10 цилиндр. Простая заменяя порядка двух последних перемещений (с 7 на 10 – 84) позволило бы существенно сократить общее время обслуживания запросов.