Главная страница Межпроцессное взаимодействие (состязание) поиска на одном устройстве, контроллер может инициировать поиск на другом устройстве. Многие контроллеры жестких дисков также умеют совмещать операцию чтения или записи на одном диске с поиском на другом или даже нескольких дисках. Однако контроллеры гибких дисков не могут одновременно читать и писать на двух дисководах. (Чтение или запись требуют от контроллера перемещения битов с максимальной скоростью, на которую он рассчитан, поэтому операция чтения или записи отнимает большую часть его вычислительных мощностей.) В случае ШЕ-дисков с их встроенными микроконтроллерами ситуация радикально меняется, поэтому несколько жестких дисков способны одновременно работать в одной системе, по крайней мере, переносить данные между диском и буфером контроллера. Вместе с тем, между контроллером и оперативной памятью в каждый момент времени происходит только одна операция по переносу данных. Способность параллельного выполнения двух или более дисковых операций может существенно снизить среднее время доступа. В табл. 3.5 сравниваются параметры стандартного флоппи-дисковода оригинального компьютера IBM PC с параметрами современного жесткого диска для демонстрации того, насколько сильно изменились магнитные диски за последние два десятилетия. Интересно отметить, что не все параметры улучшились в равной мере. Среднее время поиска дорожки сократилось в семь раз, скорость передачи данных увеличилась в 1300 раз, тогда как емкость диска возросла в 50 ООО раз. Это различие вызвано относительно незначительными усовершенствованиями механической части по сравнению с гораздо более ощутимым прогрессом в области увеличения плотности записи.
Глядя на спецификации современных жестких дисков, следует помнить, что указанная геометрия, используемая программным обеспечением драйвера, может отличаться от физического формата. Например, для показанного в табл. 3.5 жесткого диска рекомендуется устанавливать такие параметры: 1024 цилиндра. 16 головок и 64 сектора в дорожке. Логические номера головок и секторов, которыми оперирует операционная система, преобразуются встроенным в диск контроллером в физические, задействуемые в работе диска. Это еще один пример, как можно обеспечить совместимость новых устройств со старыми системами без изменения встроенных профамм. Разработчики оригинальных IBM PC под счетчик секторов в ПЗУ BIOS выделили только 6 бит, поэтому диски, у которых больше 63 секторов в дорожке, вынуждены работать с искусственным набором логических параметров. В данном случае в спецификации производителя указано, что у диска в действительности 4 головки, таким образом, у него должно быть 252 сектора в дорожке (что и указано в таблице). Это упрощение ситуации, так как у подобных дисков на внешних дорожках секторов больше, чем на внутренних. У описываемого таблицей диска четыре физические головки, но цилиндров в действительности немногим более 3000. Цилиндры сгруппированы в дюжину зон и во внутренней зоне они содержат по 57 секторов на дорожку, а во внешней - 105. Эти параметры нельзя найти в спецификации диска, преобразование координат выполняется контроллером автоматически, что избавляет нас от необходимости знать их. 3.7.2. Программное обеспечение жестких дисков в этом разделе мы изучим некоторые общие вопросы работы драйверов жестких дисков. Прежде всего рассмотрим, сколько времени требуется для считывания блока на диске. Это время складывается из трех слагаемых. 1. Время поиска (перемещение головки на нужный цилиндр). 2. Задержка вращения (время, через которое нужный сектор пройдет под головкой). 3. Время передачи данных. Для большинства дисковых накопителей наибольший вклад в задержку имеет первый фактор, поэтому уменьшение среднего времени поиска принципиально важно для роста производительности системы. Дисковые накопители склонны к ошибкам. В силу этого в каждый сектор диска всегда записывается та или иная проверочная информация, в виде контрольной суммы, иначе циклического избыточного кода (CRC). Даже адреса секторов, которые записываются на диск при форматировании, содержат проверочные данные. Контроллер гибкого диска, обнаружив ошибку, сообщает о ней системе, которая должна решить, как нужно поступить. Контроллеры жестких дисков часто берут на себя значительную часть действий по обработке ошибки. Для жестких дисков последовательное чтение секторов в пределах одной дорожки происходит очень быстро. Поэтому для повышения эффективности работы системы имеет смысл считывать больше секторов, чем запрошено, и кэширо-вать их в памяти. Алгоритмы планирования перемещения головки Если драйвер диска принимает и выполняет запросы по одному в порядке получения, то есть по принципу первым пришел - первым обслужен (FCFS, First Come, First Served), тогда мало что можно сделать для оптимизации времени поиска. Однако при высокой загрузке диска допустимо применение другой стратегии. В этом случае высока вероятность поступления новых запросов от других процессов во время перемещения головки для обработки предыдущего запроса. Многие дисковые драйверы содержат таблицу, индексированную по номерам цилиндров, в которой в единый цепной список собираются все поступившие и ждущие обработки обращения к цилиндрам. С помощью подобной структуры данных можно создать более совершенный алгоритм планирования, чем простое обслуживание в очередности поступления запросов. Рассмотрим, например, диск с 40 цилиндрами. Поступает запрос на чтение блока с цилиндра 11. Во время перемещения головки на 11-й цилиндр делаются новые обращения к цилиндрам 1, 36, 16, 34, 9 и 12. Новые запросы помещаются в таблицу, составленную из отдельных списков для каждого цилиндра. Поступившие запросы помечены крестиками на рис. 3.13. Начальная Необработанные позиция запросы X XX X X 35 Цилиндр Последовательность перемещения головки Рис. 3.13. Алгоритм планирования ближайший цилиндр первым Выполнив первый запрос (обращение к цилиндру 11), драйвер диска должен выбрать на обслуживание следующий запрос. Если обслуживать запросы в порядке поступления, то драйвер должен переместить головку на цилиндр 1, затем на цилиндр 36 и т. д. В результате выполнение этого алгоритма потребует перемещения блока головок на 10, 35, 20, 18, 25 и 3 цилиндра, что в сумме составит 111 цилиндров. Время перемещения головки можно уменьшить, выбирая каждый раз ближайший цилиндр. При той же серии запросов, показанной на рис. 3.13, последовательность их обработки выглядит как ломаная кривая внизу рисунка. При такой последовательности выполнения запросов потребуются перемещения блока головок на 1, 3, 7, 15, 33 и 2 цилиндра, что суммарно равно 61 цилиндру. Применение данного алгоритма, называющегося SSF (Shortest Seek First - ближайший запрос первым ), минимизирует суммарные перемещения головок почти вдвое.
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |