
Подсистема ввода-вывода.ppt
- Количество слайдов: 52
Система управления вводом -выводом
Общие сведения • Функционирование любой вычислительной системы обычно сводится к выполнению двух существенно различных видов действий: обработке информации и вводу-выводу данных. • Поскольку все действия вычислительной системы инициируются выполняющимися процессами, то именно процессы обрабатывают информацию и реализуют операций ввода-вывода. • В общем случае содержание понятий «обработка информации» и «операции ввода-вывода» зависит от точки зрения, с которой они рассматриваются – процесса или операционной системы. • Основное различие заключается в отношении к данным временно выгруженным на диск в результате действия механизмов свопинга или замещения страниц. • В дальнейшем предполагается, что все процессы полностью располагаются в памяти, и понятие «операция ввода-вывода» с точки зрения ОС и процесса интерпретируется одинаково
Подсистема ввода-вывода • Принципы организации ввода-вывода существенно отличаются от методов организации обработки данных. • Основной проблемой, возникающей при организации вводавывода, является разнообразие внешних устройств. • Внешние устройства различаются; – – конструктивными особенностями; методами управления; быстродействием; способами представления и обработки данных и т. д. • Решение проблемы управления внешними устройствами требует применения как программных, так и аппаратных средств. • Программные компоненты и соответствующие структуры данных включаются в состав подсистемы ввода-вывода. • Аппаратные средства по большей части сводятся к стандартизации и распределению управляющих действий за счет использования контроллеров.
Модель передачи информации • Взаимодействовать с процессором и памятью могут разнообразные устройства: жесткие диски, клавиатура, дисплеи, модемы и т. д. • Конкретный набор устройств и способы их подключения определяются целями функционирования вычислительной системы. • Несмотря на многообразие устройств, управление их работой и обмен информацией с ними строятся на относительно небольшом количестве общих процедур, реализация которых требует аппаратной и программной поддержки. • Главной особенностью всех устройств является то, что все они могут служить потенциальными источниками или приемниками данных и, соответственно, для их работы требуется связь с процессором и памятью.
Принципы стандартизации • Любое внешнее устройство можно рассматривать как потенциальный источник или приемник данных. • Базовые операции, которые должны выполняться с внешним устройством – это операции чтения или записи данных. • При реализации базовых операции, можно определить общие действия для всех устройств (обмен данными между памятью и устройством) и специфические действия, обусловленные конструкцией внешнего устройства. • Специфику устройства можно скрыть, если для него детальное управление будет выполняться не процессором, а контроллером. • Специфику контроллера также можно скрыть, если использовать для всех контроллеров сходный интерфейс подключения. • Детали интерфейса подключения контроллера обусловлены конструктивными особенностями линий связи компьютера.
Аппаратная поддержка передачи данных • В простейшем случае процессор, память и внешние устройства связаны множеством электрических соединений ‑ линий, которые в совокупности принято называть локальной магистралью компьютера. • Внутри локальной магистрали линии, служащие для передачи сходных сигналов и выполняющие сходные функции, принято группировать в шины. • Шина включает: – набор линий для передачи электрических сигналов; – поддерживающее оборудование (приемники и передатчики шины, арбитр, тактовый генератор и т. д. ), – интерфейсы для подключения устройств; – набор правил, определяющих порядок передачи информации (протокол шины).
Компоненты локальной магистрали • В современных компьютерах локальная магистраль содержит, как минимум, три шины: – шину данных, служащую для передачи информации между процессором и памятью, процессором и устройствами вводавывода, памятью и внешними устройствами; – адресную шину, служащую для задания адреса ячейки памяти или указания устройства ввода-вывода, участвующих в обмене информацией; – шину управления, состоящую из линий управления по которым передаются команды управления устройствами и самой локальной магистралью. • Количество линий, входящих в состав шины, принято называть разрядностью этой шины. Разрядность шины определяет максимальный объем информации, который за один прием может быть передан по ней. • Шина, содержащая несколько линий для одновременной передачи данных, называется параллельной. • Если шина содержит одну линию, то она называется последовательной.
Порядок обмена данными Операции обмена данными выполняются при одновременном участии всех шин. Например, в простейшем случае для записи информации из процессора в память необходимы следующие действия: – на адресной шине процессор выставляет сигналы, соответствующие адресу ячейки, в которую будет осуществляться передача данных; – на шину данных выставляются сигналы, соответствующие информации, которая должна быть записана в память; – на шину управления выставляются сигналы, соответствующие операции записи в память и информация заносится по требуемому адресу.
Подключение внешних устройств • • • В отличие от памяти внешние устройства разнесены пространственно и подключаются к локальной магистрали в нескольких точках, получивших название портов ввода-вывода. Порты ввода-вывода можно взаимно однозначно отобразить в соответствующее адресное пространство ввода-вывода, тогда обмен информацией инициируется специальными командами ввода-вывода. Если адресное пространство памяти задействовано не полностью, то часть портов ввода-вывода может быть отображена непосредственно в адресное пространство памяти, в этом случае передача информации и управляющих команд в эти порты выполняются с помощью обычных команд доступа к памяти. Занесение информации в память является окончанием операции записи, в то время как занесение информации в порт зачастую является инициализацией реальной операции ввода-вывода. Детальные действия устройств, в ответ на полученную информацию, определяется контроллерами.
Особенности работы с устройствами ввода-вывода С точки зрения принципов работы вычислительных систем важными является следующие моменты: – устройства ввода-вывода подключаются к системе через порты. – могут существовать два адресных пространства: памяти и вводавывода; – порты, как правило, отображаются в адресное пространство вводавывода и, иногда, непосредственно в адресное пространство памяти; – вид адресного пространства определяется типом команды или ее операндов; – управление устройством ввода-вывода осуществляется контроллером устройства.
Принципы действия контроллера устройства • Контроллеры устройств ввода-вывода весьма различны как по своему внутреннему строению, так и по реализации. • Контроллер может непосредственно управлять отдельным устройством, например, контроллер диска или несколькими устройствами, связываясь с их контроллерами посредством специальных шин ввода-вывода (шина SCSI и т. д. ). • Для организации интерфейса контроллер снабжается, по крайней мере, пятью регистрами: – – – адреса; состояния; управления; входных данных; выходных данных. • Единообразие подключения внешних устройств к вычислительной системе позволяет добавлять к ней новые устройства без изменения конфигурации всей системы.
Регистр адреса • Регистр адреса соединен с шиной адреса. • Служит для временного хранения адреса, который процессор выставляет на шине. • Устройство определяет необходимость выполнения команды, сравнивая адрес, находящийся в регистре, с адресом, хранящимся в конфигурационной памяти.
Регистр состояния • Регистр состояния содержит биты, значение которых определяется текущим состоянием устройства ввода-вывода, и которые доступны только для чтения вычислительной системой. • Эти биты могут указывать: – на завершение выполнения текущей команды на устройстве (бит занятости); – наличие очередного значения в регистре выходных данных (бит готовности данных); – возникновения ошибки (бит ошибки) и т. д.
Регистр управления • Регистр управления получает данные, которые записываются вычислительной системой для инициализации устройства ввода -вывода, выполнения очередной команды или изменения режима работы устройства. • Часть битов в этом регистре может быть отведена под код выполняемой команды, другая часть определять режим работы устройства. • Бит готовности команды свидетельствует о том, что можно приступить к ее выполнению.
Регистры входных и выходных данных • Регистр выходных данных служит для помещения в него данных читаемых вычислительной системой. • Регистр входных данных используется для размещения информации, выводимой на устройство. • Обычно емкость этих регистров не превышает разрядности линии данных. • Некоторые контроллеры могут использовать в качестве регистров очередь для буферизации поступающей информации.
Взаимодействие процессора и котроллера • • Модель интерфейса контроллера позволяет определить порядок взаимодействия внешнего устройства и процессора. Рассмотрим, например, обработку команды записи на внешнее устройство. Упрощенная последовательность действий: – процессор определяет возможность выполнения операции, читая информацию из порта регистра состояний и проверяет значение бита занятости. – если бит занятости установлен, то устройство не завершило предыдущую операцию; – если бит занятости сброшен, то устройство свободно; – процессор записывает код команды вывода в порт регистра управления; – размещает данные в порт регистра входных данных; – устанавливает бит готовности команды.
продолжение • В следующих шагах процессор не задействован. • Контроллер: – определяет, что бит готовности команды установлен, и устанавливает бит занятости; – анализирует код команды в регистре управления и обнаруживает, что это команда вывода. – берет данные из регистра входных данных и инициирует выполнение команды; – после завершения операции контроллер обнуляет бит готовности команды; – в зависимости от результата операции контроллер устанавливает бит ошибки в регистре состояния; – сбрасывает бит занятости.
Опрос устройств • Если процессору требуется проконтролировать правильность вывода данных, то он в цикле читает информацию из регистра состояния, дожидаясь завершения выполнения команды, после чего анализирует состояние бита ошибки. • В рамках рассмотренной схемы взаимодействия процессор ожидает освобождения устройства, непрерывно опрашивая значение бита занятости. • Такой способ взаимодействия процессора и контроллера называется опросом устройств. • Если скорость работы устройства существенно меньше скорости процессора, то рассмотренная методика снижает производительность системы.
Прерывания • Для исключения циклического ожидания процессором готовности устройства и создания возможности переключения его на выполнение другой работы, необходимо, чтобы устройство само сигнализировало процессору о готовности. • Технический механизм, который позволяет внешним устройствам оповещать процессор о завершении выполнения команд вывода или ввода, называется механизмом прерываний. • В простейшем случае для реализации механизма прерываний необходимо к шинам локальной магистрали добавить еще одну линию, соединяющую процессор и устройства ввода-вывода – линию прерываний. • Выполнив операцию, внешнее устройство выставляет на эту линию специальный сигнал, получив который процессор вместо выполнения очередной команды программы частично сохраняет содержимое своих регистров и переходит на выполнение программы обработки прерывания, расположенной по заранее оговоренному адресу.
(продолжение) • При наличии единственной линии прерываний обработчик прерываний должен опросить состояние всех устройств вводавывода, чтобы определить источник прерывания (опрос прерываний), а затем выполнить необходимые действия и сообщить устройству, что прерывание обработано. • В современных компьютерах процессор полностью освобождается от необходимости опроса внешних устройств. • Устройства сообщают о своей готовности процессору не напрямую, а через специальный контроллер прерываний, который соединяется с процессором и устройствами шиной прерываний.
Принципы программной поддержки ввода-вывода • Аппаратная схема подключения устройств позволяет в значительной мере стандартизовать аппаратные интерфейсы и организацию подключения устройства к шине. • Стандартная схема подключения в значительной мере обеспечивает возможность стандартизации управляющих действий, которые реализуются программными средствами. • Возможность такой стандартизации очевидна, поскольку все внешние устройства являются потенциальными источниками и/или приемниками информации и базовые действия с ними сводятся к выполнению двух операций: – чтение данных с устройства; – запись данных на устройство. • Детали выполнения этих операций, однако, могут различаться для разных устройств.
Структура подсистемы ввода-вывода • Унификация программного обеспечения основана на разделении устройств на относительно небольшое число типов, отличающихся по набору операций. • Для каждого типа определяются интерфейсы между ОС, осуществляющим общие функции ввода-вывода, и программами, непосредственно управляющими устройствами. • Эти программы называют драйверами. • При организации ввода-вывода используется принцип многоуровневой структуры. • Два нижних уровня составляет аппаратура: сами устройства и их контроллеры. • Следующий уровень образуют драйверы, скрывающие особенности функционирования конкретных устройств и обеспечивающие четко определенный интерфейс между контроллером и подсистемой ввода-вывода • Подсистема ввода-вывода обеспечивает интерфейс между драйверами и остальной частью операционной системы.
Многоуровневая структура Программы пользователя Системный вызов (п. п. ) Файловая система Системный вызов (с. п. ) Подсистема ввода-вывода Функции драйвера Драйверы Команды контроллера Контроллеры Управляющие сигналы Аппаратура
Интерфейс между подсистемой вводавывода и драйверами • Интерфейс драйвера с подсистемой ввода-вывода строится на основе определения фиксированного набора функций, которые должен выполнять драйвер. • Конкретный набор функций определяется спецификой внешних устройств, поэтому в большинстве случаев целесообразно разделить их на два множества: общие функции для всех устройств и специфические функции для каждого устройства. • Реализация общих функций существенно упрощается, если устройства разделены на типы по преобладающему виду интерфейса. Например, можно выделить следующие типы устройств: – символьные (клавиатура, модем, терминал и т. д. ); – блочные (магнитные и оптические диски и ленты, и т. д. ); – все остальные (таймеры, графические дисплеи и т. д. ); • На базе рассмотренной классификации определяются функций драйверов и интерфейс между ними и базовой подсистемой ввода-вывода.
Символьные и блочные устройства • Символьные устройства – это устройства, которые передают данные последовательно байт за байтом. • К символьным устройствам обычно относятся устройства ввода информации, которые асинхронно генерируют входные данные: клавиатура, манипулятор мышь. • К ним также относятся и устройства вывода информации, для которых характерно представление данных в виде линейного потока байт (модем, принтер). • Символьные устройства выполняют две общих операции: ввести символ (байт) и вывести символ (байт) – get и put. • Блочные устройства – это устройства, которые передают множество байт (блок) как единое целое (магнитные и оптические диски, флеш-накопители). • Для блочных устройств естественными являются операции чтения и записи блока информации – read и write.
Операции драйверов • Основными операциями драйверов являются get и put для символьных устройств, а также read и write для блочных. • Драйверы символьных и блочных устройств должны предоставлять базовой подсистеме ввода-вывода функции для осуществления общих операций. • Помимо общих операций некоторые устройства могут выполнять специфические действия, свойственные только им, например звуковые карты могут изменять громкость звучания. • Для выполнения специфических действий в интерфейс между драйвером и базовой подсистемой ввода-вывода обычно входит еще одна функция, позволяющая непосредственно передать драйверу устройства произвольную команду с произвольными параметрами. • В операционной системе UNIX такая функция получила название ioctl (от input-output control).
Дополнительные функции • Дополнительные функции драйверов: – – open – инициализация работы драйвера и устройства; close – завершение работы с устройством; poll – опрос состояния устройства. halt – остановка драйвера при завершении работы операционной системы или выгрузке драйвера из памяти; – seek – поиск блока для блочных устройств. • Приведенные выше названия функций являются условными и могут меняться от одной операционной системы к другой.
Функции подсистемы вводавывода • Базовая подсистема ввода-вывода служит посредником между процессами вычислительной системы и набором драйверов. • Главной задачей подсистемы является трансформация системных вызовов, выполняемых процессами для осуществления операций ввода-вывода, в вызовы функций необходимого драйвера устройства. • Для решения этой задачи базовая подсистема осуществляет: – – поддержку механизма системных вызовов; буферизацию и кэширование данных; управление внешними устройствами; обработку ошибок и прерываний, возникающих при операциях ввода-вывода; – планирование последовательности запросов на выполнение операций ввода-вывода.
Поддержка механизма системных вызовов Все системные вызовы, связанные с осуществлением операций ввода-вывода, можно разбить на три группы по способам реализации взаимодействия процесса и устройства ввода-вывода: – блокирующие системные вызовы; – неблокирующие системные вызовы; – асинхронные системные вызовы.
Блокирующие системные вызовы • Применение такого вызова приводит к блокировке инициировавшего процесса, т. е. процесс переводится операционной системой из состояния исполнение в состояние "ожидание". • Завершив выполнение всех операций ввода-вывода, предписанных системным вызовом, операционная система переводит процесс из состояния "ожидание" в состояние "готов". • После того, как процесс будет снова выбран для исполнения, в нем произойдет окончательный возврат из системного вызова. • Типичным примером применения блокирующего вызова является случай, когда процессу требуется получить от устройства определенный объем данных, без которых он не может продолжать работу.
Неблокирующие системные вызовы • Их название не совсем точно отражает специфику работы. • В простейшем случае, процесс, применивший неблокирующий вызов, не переводится в состояние "ожидание" вообще. • Системный вызов возвращается немедленно, выполнив предписанные ему операции ввода-вывода полностью, частично или не выполнив совсем, в зависимости от текущей ситуации (состояния устройства, наличия данных и т. д. ). • В более сложных ситуациях процесс может блокироваться, но условием его разблокирования является не завершение всех необходимых операций, а окончание некоторого промежутка времени. • Типичным случаем применения такого системного вызова может являться периодическая проверка на поступление информации с клавиатуры.
Асинхронные системные вызовы • Процесс, использовавший асинхронный системный вызов, никогда в нем не блокируется. • Системный вызов инициирует выполнение операций вводавывода и немедленно возвращает управление процессу. • Об завершения операции ОС информирует процесс путем изменения значений переменных, передачей сигнала или сообщения, или каким-либо другим способом. • Асинхронно выполняется отложенная запись на диск. • Существенное различие между неблокирующими и асинхронными вызовами заключается в следующем: – неблокирующий системный вызов для операции read вернется немедленно, но может прочитать запрошенное количество байт, меньшее количество или вообще ничего. – асинхронный системный вызов для этой операции также вернется немедленно, но требуемое количество байт рано или поздно будет прочитано в полном объеме.
Буферизация • Под буфером обычно понимается некоторая область памяти для запоминания информации при обмене данных между двумя устройствами, двумя процессами или процессом и устройством. • В подсистеме ввода-вывода рассматривается использование буферов в том случае, когда одним из участников обмена является внешнее устройство. • Существуют три основных причины, приводящие к использованию буферов в базовой подсистеме ввода-вывода.
Различие скоростей приема и передачи информации • Буфер требуется для компенсации разных скоростей приема и передачи информации, которыми обладают участники обмена. • Например, пусть поток данных от клавиатуры передается на модем. Скорость, с которой поставляет информацию клавиатура, обычно существенно меньше скорости передачи данных модемом. • Введенную информацию целесообразно накапливать в буфере и отсылать ее через модем только после заполнения буфера. • Это позволяет использовать модем нескольким процессам одновременно.
Различие объемов данных • Объемы данных, которые могут быть приняты или отправлены участниками обмена единовременно могут существенно различаться для разных устройств. • Например, пусть информация принимается модемом и записывается на жесткий диск. • Модем является символьным устройством и выдает данные побайтно. • Диск является блочным устройством и для проведения операции записи для него целесообразно накопить необходимый блок данных в буфере.
Временное хранения информации • Информация, выводимая приложением, должна временно сохраняться для предотвращения ее нежелательной модификации. • Например, пусть некоторый процесс выводит информацию из своего адресного пространства на внешнее устройство, выполняя системный вызов write. • Если внешнее устройство временно занято, то к моменту его освобождения содержимое области памяти, содержащей выводимые данные, может оказаться испорченным, например, при использовании асинхронной формы системного вызова. • Чтобы избежать возникновения подобных ситуаций, можно в начале работы системного вызова скопировать необходимые данные в буфер ядра операционной системы, постоянно находящийся в оперативной памяти.
Кэширование • Близкой по реализации к функции буферизации, но отличающейся по назначению является функция кэширования. • Под словом кэш понимается область быстрой памяти, которая содержит копию данных, расположенных в более медленной памяти. • Поддержка кэширования для внешних устройств часто возлагается на базовую подсистему ввода-вывода. • Часто для кэширования данных используется совокупность буферов (буферный кэш). • Одна и та же область памяти может использоваться для буферизации и кэшировании, например, буфер, предназначенный для копирования данных из пользовательского пространства процесса при выводе на диск, может в свою очередь использоваться как кэш для этих данных при модификации и повторном чтения соответствующего блока. • Функции буферизации и кэширования обычно распределены по уровням подсистемы ввода-вывода и аппаратуры.
Управление устройствами • Одной из функций базовой подсистемы ввода-вывода является общее управление устройствами. • Эта функция подразумевает организацию взаимодействия процессов и внешних устройств. • Задача управления устройствами решается на базе одного из следующих принципов: – разделение; – закрепление; – эмуляция.
Разделение • Принцип разделения подразумевает возможность одновременного использования устройства несколькими процессами. • Реализуется на базе механизма буферизации (спулинга). • Спулинг поддерживается двумя компонентами системы: – программой, называемой диспетчером устройства; – буфером, предназначенном для хранения информации, которой процессы обмениваются с устройством. • Диспетчер монополизирует доступ к устройству и обслуживает соответствующие запросы процессов. Для этого: – создает и обслуживает во внешней памяти очередь, состоящую из буферов, в которых временно хранятся данные, предназначенные для обработки устройством; – организует обмен между буфером и внешним устройством. • Механизм спулинга, позволяет процессам обращаться к неразделяемым внешним устройствам так, как будто они являются разделяемыми.
Закрепление • • • В тех случаях, когда организация спулинга для неразделяемого устройства невозможна или нецелесообразна, применяется механизм закрепления устройств за процессами. Закрепление реализуется путем монопольного захвата процессом требуемого устройства на весь промежуток времени его использования. В рамках механизма предполагается, что если устройство свободно, то один из процессов может получить его в монопольное распоряжение. При этом все другие процессы при попытке осуществления операций с данным устройством будут либо блокированы, либо получат информацию о невозможности выполнения операции. Для поддержки механизма базовая подсистема ввода-вывода связывает с каждым устройством соответствующую структуру данных, которая позволяет определить его состояние, а также содержит перечень блокированных процессов, ожидающих его освобождения, и использует хранящиеся в ней данные для предоставления устройства процессу, а также блокирования или извещения процессов.
Эмуляция • Если запрашиваемое программой устройство отсутствует в составе вычислительной системы, то его наличие, если возможно, имитируется программными средствами. • Такой подход принято называть эмуляцией устройства. • Эмуляция подразумевает, что при выполнении соответствующих системных вызовов их обработчики вместо обращения к требуемому устройству возвращают программе ожидаемые ей данные. • Часто эмулировался, например, сопроцессор для чисел с плавающей запятой.
Обработка прерываний и ошибок • При получении сигнала прерывания процессор передает управление программе обработки прерывания (обработчик прерывания). • Обработчик прерывания: – определяет устройство, инициировавшее прерывание; – зная устройство, обработчик определяет процесс, который инициировал выполнение соответствующей операции. – проверяет значение бита ошибки в регистре состояния устройства и, если возможно, предпринимает корректирующие действия; – в противном случае извещает об этом процесс, запросивший выполнение операции, специальным кодом возврата из системного вызова; – если процесс был заблокирован до выполнения завершившейся операции, то он переводится в состояние готовности. • При наличии других неудовлетворенных запросов к освободившемуся устройству может инициироваться выполнение следующего запроса. • На этом обработка прерывания заканчивается.
Очереди запросов • В многозадачной среде несколько процессов могут одновременно обращаться к одному устройству и при выполнении некоторым процессом системного вызова может оказаться, что требуемое устройство уже занято обработкой полученных ранее команд. • В зависимости от вида вызова системе требуется выполнение различных действий, обеспечивающих корректную обработку возникшей ситуации. • Если устройство занято, то: – неблокирующий системный вызов немедленно возвращает управление процессу, не выполнив запрошенных команд; – для блокирующего или асинхронного вызовов выполнение команд обязательно, поэтому запрос ставится в очередь к данному устройству. • В результате с каждым устройством будет связан список неудовлетворенных запросов процессов, находящихся в состоянии ожидания, и запросов, выполняющихся в асинхронном режиме.
Планирование запросов • Процессы, находящиеся в состояние ожидание распределяются на очереди процессов, дожидающихся различных устройств ввода-вывода. • После завершения выполнения текущего запроса операционная система должна решить, какой из запросов в списке должен быть удовлетворен следующим, и инициировать его исполнение. • Следовательно, необходимо выполнить планирование использования устройства, пользуясь каким-либо алгоритмом планирования. • Критерии и цели такого планирования мало отличаются от критериев и целей планирования процессора, а параметры планирования зависят от специфики устройства. • Задача планирования работы устройства обычно возлагается на базовую подсистему ввода-вывода и/или драйвер соответствующего устройства.
Алгоритмы планирования запросов к жесткому диску
Параметры планирования • Положения блока данных, подлежащего считыванию или записи, определяется значением номера цилиндра, дорожки и сектора. • Время считывания (записи) включает: – время перемещения блока головок в нужную позицию; – время ожидания разворота диска в требуемое положение; – время выбора сигнала от соответствующей головки. • Основной параметр – время перемещения блока головок, пропорциональное разности номеров цилиндров, соответствующих исходному и конечному положению блока головок.
Алгоритм FCFS • Простейшим алгоритмом является алгоритм First Come First Served (FCFS) – первым пришел, первым обслужен. • Все запросы организуются в очередь и обслуживаются в порядке поступления. • Алгоритм прост в реализации, но может приводить к достаточно большим общим временам обслуживания запросов.
Пример • Пусть для диска из ста цилиндров (от 0 до 99) существует очередь запросов к следующим цилиндрам: 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) позволила бы существенно сократить общее время выполнения операций.
Алгоритм SSTF • Как мы видели, достаточно разумным является первоочередное обслуживание запросов, данные для которых лежат рядом с текущей позицией головок, а уж затем далеко отстоящих. Алгоритм, учитывающий длину перемещения блока головок, называется Short Seek Time First (SSTF) – короткое время поиска первым. • В рамках алгоритма для очередного обслуживания выбирается запрос, данные для которого лежат наиболее близко к текущему положению магнитных головок. Естественно, что при наличии равноудаленных запросов, решение о выборе между ними может приниматься из различных соображений, например по алгоритму FCFS.
Пример • Для предыдущего примера алгоритм даст следующую последовательность положений головок: – 63→ 67→ 55→ 31→ 23→ 14→ 10→ 7→ 84 • Всего головки переместятся на 141 цилиндр. • Алгоритм SSTF может приводить к длительному откладыванию выполнения какого-либо запроса, поскольку запросы в очереди могут появляться в любой момент времени. • Если, например, все запросы, кроме одного, постоянного группируются в области с большими номерами цилиндров, то этот один запрос может находиться в очереди неопределенно долго. • Легко видеть, что алгоритм SSTF не является оптимальным. Если перенести обслуживание запроса 67 цилиндра в промежуток между запросами 7 и 84 цилиндров, можно уменьшить общее время обслуживания.
Алгоритмы сканирования • В простейшем из алгоритмов сканирования – SCAN головки постоянно перемещаются от одного края диска к другому, обслуживая все встречающиеся запросы. По достижении другого края направление движения меняется, и все повторяется снова. Пусть в предыдущем примере в начальный момент времени головки двигаются в направлении уменьшения номеров цилиндров. Тогда получим следующий порядок обслуживания запросов: • 63→ 55→ 31→ 23→ 14→ 10→ 7→ 0→ 67→ 84. • Всего головки переместятся на 147 цилиндров. • Если известно, что обслужен последний попутный запрос в направлении движения головок, то можно не доходить до края диска, а сразу изменить направление движения на обратное: • 63→ 55→ 31→ 23→ 14→ 10→ 7→ 67→ 84 • Всего головки переместятся на 133 цилиндра. Полученная модификация алгоритма SCAN получила название LOOK.
Алгоритмы сканирования • • • Допустим, что к моменту изменения направления движения головки в алгоритме SCAN, т. е. когда головка достигла одного из краев диска, у этого края накопилось большое количество новых запросов, на обслуживание которых будет потрачено достаточно большое время. Тогда запросы, относящиеся к другому краю диска и поступившие раньше, будут ждать обслуживания несправедливо долгое время. Для сокращения времени ожидания запросов применяется другая модификация алгоритма SCAN – циклическое сканирование. Когда головка достигает одного из краев диска, она без чтения попутных запросов (иногда существенно быстрее, чем при выполнении обычного поиска цилиндра) перемещается на другой край, откуда вновь начинает свое движение. Для этого алгоритма, получившего название C-SCAN, последовательность перемещений будет выглядеть так: 63→ 55→ 31→ 23→ 14→ 10→ 7→ 0→ 99→ 84→ 67. По аналогии с алгоритмом LOOK для алгоритма SCAN можно предложить и алгоритм C-LOOK для алгоритма C-SCAN: 63→ 55→ 31→ 23→ 14→ 10→ 7→ 84→ 67
Подсистема ввода-вывода.ppt