Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 42
Текст из файла (страница 42)
Когда некоторой программе требуется считать с диска толькоодин сектор, программа кэширования читает несколько дополнительных блоковданных. При этом, как известно, операции последовательного'чтения несколькихсекторов фактически несущественно замедляют операцию чтения затребованногосектора с данными. Поэтому, если программа вновь обратится к диску, вероятностьтого, что нужные ей данные уже находятся в кэше, будет достаточно высока. Поскольку передача данных из одной области памяти в другую происходит во многораз быстрее, чем чтение их с диска, кэширование существенно сокращает времявыполнения операций с файлами.Итак, путь информации от диска к прикладной программе пролегает как черезбуфер, так и через дисковый кэш.
Когда приложение запрашивает с диска данные,программа кэширования перехватывает этот запрос и читает вместе с необходимыми секторами еще и несколько дополнительных. Затем она помещает в буфертребующуюся задаче информацию и ставит об этом в известность операционнуюсистему. Операционная система сообщает задаче, что ее запрос выполнен, и данные с диска находятся в буфере.
При следующем обращении приложения к дискупрограмма кэширования прежде всего проверяет, не находятся ли уже в памятизатребованные данные. Если это так, то она копирует их в буфер, если же их в кэшенет, то запрос на чтение диска передается операционной системе. Когда задача изменяет данные в буфере, они копируются в кэш.Важно заметить, что простое увеличение объема памяти, отводимого под кэширование файлов, может и не привести к росту быстродействия системы. Другимисловами, наблюдается далеко не прямо пропорциональная.зависимость ускоренияопераций с файлами от размера кэша.
Кривая этой зависимости достаточно скороперестает расти, а затем и вовсе эффективность кэширования начинает снижаться. Объяснение этому заключается в том, что поиск нужного фрагмента данныхв буферах кэша осуществляется путем их полного перебора. Поэтому с ростом числабуферов кэша затраты на их перебор становятся значительными.
И поскольку невозможно обеспечить 100-процентного кэш-попадания искомых данных, то естественно наступает момент, когда среднее время доступа к данным перестает снижаться с увеличением кэша. Очевидно, что оптимальный размер дискового кэша[Лаширование операций ввода-вывода159от очень многих факторов, в том числе и от частоты повторных обращевИСИТний к недавно прочитанным данным, и от среднего объема обрабатываемых файлов, и от разницы в быстродействии центральной части компьютера и дисковойподсистемы.В ряде операционных систем имеется возможность указать в явном виде параметры кэширования, в то время как в других за эти параметры отвечает сама операционная система.Так, в системах семейства Windows 9x мы можем указать и объем памяти, отводимый для кэширования, и объем порции (chunk 1 ) данных, из которых набираетсякэш, и предельное количество имен файлов, и параметры кэширования каталогов.В файле SYSTEM.INI, расположенном в основном каталоге такой операционной системы (обычно это каталог Windows), в секции [vcache] есть возможность прописать,например, следующие значения:[vcache]MinFileCache=4096MaxFileCache=32768ChunkSize=512Здесь указано, что минимально под кэширование данных зарезервировано 4 Мбайтоперативной памяти, максимальный объем кэша может достигать 32 Мбайт, а размер данных, которыми манипулирует менеджер кэша, равен одному сектору.
Следует заметить, что поскольку в современных компьютерах нередко устанавливаетсябольшой объем оперативной памяти, порой существенно превосходящий 256 Мбайт,то для обеспечения корректной работы подсистемы кэширования обязательно нужно указывать в явном виде значение MaxFUeCache. Оно ни в коем случае не должнопревышать величину 262 144 Кбайт. Это ограничение следует из-за особенностейпрограммной реализации подсистемы кэширования 2 — при превышении этого значения происходят нарушения в работе подсистемы памяти и вычислительные процессы могут быть разрушены.Во всех операционных системах от Microsoft принята стратегия активного кэширования файлов, при которой для кэширования отводится вся свободная память.Поэтому без явного ограничения объема памяти, отводимой под кэширование файлов, мы можем столкнуться с ситуацией, когда рост дискового кэша приводит к значительному росту числа страниц памяти, «сброшенных» в файл подкачки.
Последнее может привести к заметному замедлению работы системы, несмотря на точто кэширование имеет целью именно ускорение в работе дисковой подсистемы.В операционных системах Windows NT 4.0, Windows 2000 и Windows XP такжеимеется возможность управлять некоторыми параметрами кэширования. Правда,сделать это можно только путем редактирования реестра.Например, если в разделе [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControLSet\Control\Ses10nManager\Memory Management] реестра найти параметр IOPageLockLimit и присво1ТЬ емУ значение 163777216, то это будет означать, что 16 384 Кбайт будут отведе! ^ О с ловно - «кусочек».Раивер VCACHE разрабатывался в то время, когда объем памяти в 256 Мбайт казался недостижимым.160Глава 5.
Управление вводом-выводом в операционных системауны в физической памяти для хранения буферов дискового кэша. Эта память неможет быть выгружена в файл подкачки. Дело в том, что, к большому сожалениюразработчики из Microsoft приняли решение, согласно которому кэшируемые файлы отображаются на виртуальное адресное пространство, а не на физическую память компьютера, как это сделано в других операционных системах. Это означаетчто некоторые страничные кадры этого виртуального адресного пространства могут быть отображены не на реальную оперативную память компьютера, а размещены во внешней памяти (попасть в страничный файл подкачки). Очевидно, что этоможет сильно замедлять работу рассматриваемой подсистемы. Поэтому блокирование некоторого числа страниц файлового кэша от перемещения их во внешнююпамять должно приводить к повышению эффективности кэширования. В качестверекомендации можно заметить, что упомянутое значение в 16 Мбайт можно выделять для компьютеров с объемом памяти более 128 Мбайт.В других операционных системах можно указывать больше параметров, определяющих работу подсистемы кэширования (см., например, раздел «Файловая система HPFS» в главе 6).Помимо описанных действий, связанных с кэшированием файлов, операционнаясистема может оптимизировать перемещение головок чтения/записи данных, связанное с выполнением запросов от параллельно выполняющихся задач.
Время,необходимое на получение данных с магнитного диска, складывается из времениперемещения магнитной головки на требуемый цилиндр и времени поиска заданного сектора; а временем считывания найденного сектора и временем передачи этихданных в оперативную память мы можем пренебречь. Таким образом, основныезатраты времени уходят на поиск данных. В мультипрограммных операционныхсистемах при выполнении многих задач запросы на чтение и запись данных могутидти таким потоком, что при их обслуживании образуется очередь. Если выполнять эти запросы в порядке поступления их в очередь, то вследствие случайногохарактера обращений к тому или иному сектору магнитного диска потери временина поиск данных могут значительно возрасти. Напрашивается очевидное решение: поскольку переупорядочивание запросов с целью минимизации затрат времени на поиск данных можно выполнить очень быстро (практически этим временем можно пренебречь, учитывая разницу в быстродействии центральной частикомпьютера и устройств ввода-вывода), то необходимо найти метод, позволяющий выполнить такое переупорядочивание оптимальным образом.
Изучение этойпроблемы позволило найти наиболее эффективные дисциплины планирования.Перечислим известные дисциплины, в соответствии с которыми можно перестраивать очередь запросов на операции чтения/записи данных [11].Q SSTF (Shortest Seek Time First — запрос с наименьшим временем позиционирования выполняется первым). В соответствии с этой дисциплиной при позиционировании магнитных головок следующим выбирается запрос, для которого необходимо минимальное перемещение с цилиндра на цилиндр, даже еслиэтот запрос не был первым в очереди на ввод-вывод. Однако для этой дисциплины характерна сильная дискриминация некоторых запросов, а ведь они м°'гут идти от высокоприоритетных задач. Обращения к диску проявляют те! -Контрольные вопросы и задачи161денцию концентрироваться, в результате чего запросы на обращение к самымвнешним и самым внутренним дорожкам могут обслуживаться существеннодольше, и нет никакой гарантии обслуживания.