Ю. Вахалия - UNIX изнутри (2003) (1114670), страница 96
Текст из файла (страница 96)
Для получения дорожек равной величины, принятой в ГГ5, производители дисков делят все 512-байтовые секторы диска на общее количество дорожек и секторов на дорожку. Такая операция производится из соображений удобства и не изменяет физических характеристик диска. В результате оптимизация вращения в системе ГГЯ не имеет для таких дисков никакого значения и может вообще повлиять на производительность отрицательно. Группировка цилиндров является по- прежнему уместной, поскольку блоки соседних цилиндров обычно расположены в близлежащих дорожках диска.
Если рассматривать в целом, файловая система ГГ5 имеет большое количество преимуществ, позволивших ей получить широкое распространение. Разработчики БУЙ включили поддержку ГГ5 в свой продукт. Более того, многие из нововведений файловой системы ГГ5 были добавлены ими в реализацию з5Ь для 5УКЗ.
Таким образом, система з5Ь стала поддерживать символические ссылки, разделяемую и эксклюзивную блокировку файлов, а также вызов гепагле. Система ГГ5 стала значительным шагом вперед по сравнению с оригинальной з5Ь, но опа еще далека от совершенства. Осталось много нереализованных возможностей увеличения производительности файловых систем. Одним из способов оптимизации является связывание нескольких буферов ядра, цепочки которых затем можно считывать или записывать на диск при проведении одной операции. Однако это потребует внесения изменений во всех дисковые драйверы. Увеличить производительность работы также можно, если быстро растущим файлам выделять сразу несколько блоков предварительно, освобождая неиспользованные блоки после закрытия файла. Еще одно важное средство — структурированные и основанные на расширениях файловые системы, будут описаны в главе 11.
408 Глава 9. Реализации файловых систем Система ЕЕ5 у>ко изначально облалала некоторыми дополнительными качествами, не имевшимися в з5Ь. В операционной системс 4.ЗВЯК стали использоваться два новых метода кэширования, позволившие ускорить получение имен ~141 Изначально файловая система ЕЕВ использовала кэш подстановки имен файлов, основанный на рекомендациях. Эта методика около 70% имен извлекала из каша. При переносе ЕЕ5 на 3Ъ'К4 разработчики сделали колы реализации каша независпмымн от файловой системы, что позволило использовать его как глобальный ресурс, лоступный всем файловым системам. Рекомендации были заменены ссылками на кэшируемые файлы, Более подробно о методиках кэширования имен читайте в разделе 8.10.2.
Вторым способом является кэширование каждым пропессом смещения последнего компонента каталога, являющегося частью нславно преобразованного полного имени. Если следуюшес преобразование будет совершено над файлом, находяшимся в том же каталоге, то поиск на шется именно с этого компонента каталога. Такой подход удобен при послеловательном просмотре содержимого каталога (которое производится в 10 — 15",4 случаев поиска). В реализации файловой системы для ЯЪ'К4 кэшируемое смегцепие стало храниться в памяти. Это позволило кэшировать смешение всех каталогов вместо хранения данных только об одном каталоге для каждого процесса. С лругой сжзропы, если несколько процессов используют один и тот же каталог одновременно, кзшируемое смеШение лучше оставить в покое, 9.10. Временные Файловые системы Многие утилиты и приложения, в особенности компиляторы и оконные системы, нспользу|от для хранения промежуточных результатов работы времснныс файлы.
Такие файлы удаляются сразу после выхода из приложения. Следовательно, времешпяе файлы существуют в течение лишь псбольпзого промежутка времени и не требуют поддержки пх сохранности (гюсле краха системы). Ядро использует для отложенной записи буферный кэш, перед сбросом данных на диск времеппыс файлы обычно удаляются. В результате процедура ввода-вывода для таких файлов является весьма быстродействуюшей и ие требует проведения дисковых операций, Однако создание и удаление временных файлов происходит медленно, так как нуждается в выполнении нескольких асинхронных операций доступа к диску для изменения блоков метаданных и информации о каталоге. Синхронное изменение не требуется для обработки временных файлов, поскольку они нс хранятся в системе долго. срочно.
Однако, в любом случае, для быстрого создания и обеспечения доступа к временным файлам прелпочтительно использовать специализированную файловую систему, предназначенную для этих целей, Проблема временных файлов долгое время решалась посредством КАМ- писков, позволяющих размещать файловые системы полностью в оператив- 9.10. Временные файловые системы 409 ной памяти компьютера.
Такие диски поддерживаются при помощи драйверов устройств, эмулирующих обычный диск. При этом реально данные располагаются в физической памяти и могут быть доступны со скоростью, превышающей скорость обращения к обычным дискам. Технология КАМ- дискон не требует создания специализированного типа файловой системы. После установки ЕЛМ-диска Гцутем запроса непрерывного участка физической памяти) можно использовать его для добавления обычных файловых систем, таких как з56 или РЮ, при помощи обычных утилит, например пе»>1з.
Различия между ЕЛМ-диском и обычными янеками системы видны только на уровне драйверов устройств. Одним из главных недостатком технологии является необходимость выделения больших объемов оперативной памяти компьютера для поддержки КАМ-дисков, что представляется не самым лучшим способом использования системных ресурсов.
Теку>ций объем памяти, необходимый лля поддержки временных файлов, неодинаков и зависит от утилизации ресурсов системы. Память, выделяемая для КАМ-диска, управляется отдельно от памяти ядра, что требует дополнительных операций копирования при изменении метаданных. Становится очевидш>й потребность создаю>я специализированной файловой системы, эффективно использующей память для поддержки временных файлов. Следующие подразделы главы посвящены описанию двух реализаций таких файловых систем. 9.10.1. Метогу ЕИе Зудел Мешогу Ие Яув1еп> (п1)з) разработана в Калифорнийском университете в Ьеркли 1151. Файловая система полностью построена в виртуальном адресном пространстве процесса, обрабатывающего операцию >поцпц Такой процесс не завершает раба>у по возвращению вызова п>овп1, а продолжает оставаться в ядре системы в режиме ожидания зал росоп ввода-вывода к файловой системе, Каждый объект п>Гзпове, являющийся зависимой от файловой системы частью чпос1е, содержит идентификатор Р1ь> прщесса моптировапия, который функционирует как сервер ввода-вывода.
Для того чтобы произвести ввод- вывод, вызывающему процессу неоГ>ходимо поместить запрос в очередь, поддерживаемую структурой п>Гзва1а (содержащей закрьпые данные файловой системы). После этого будится процесс моптирования, а процесс, желающий произвести ввод-вывод, наоборот переходит в режим сна. Процесс монтирования обрабатывает запрос путем копирования данных из соответствующей области своего адресного пространства и затем возобновляет выполнение первого процесса. Так как файловая система полностью располагается в виртуальной памяти процесса монтнрования, управление ее страницамн может осуществляться аналогично механизмам обраГ>отки обычной памяти.
Страницы файлов в>гз находятся, как и другие процессы, в физической памяти. Страницы, не 410 Глава 9. Реализации файловых систем имеющие активных ссылок, переносятся в область свопинга и могут быть использованы другими процессами при необходимости. Такой подход позволяет поддерживать временные файловые системы, имеющие больший объем по сравнению с количеством физической памяти компьютера.
Хотя система шЬ работает намного быстрее, чем обычные дисковые файловые системы, она обладает некоторыми недостатками, большинство из которых является следствием ограничений архитектуры памяти ВЯ0. Использование отдельного процесса для обработки запросов ввода-вывода требует каждый раз двух переключений контекста. Файловая система располагается в отдельном (виртуальном) адресном пространстве, что подразумевает дополнительные операции копирования участков памяти из одного местоположения в другое. Формат файловой системы совпадает с БЕК, хотя для нее не имеют смысла такие методики, как группировка цилиндров.
9.10.2. Файловая система 1шр1в Файловая система гтрк разработана корпорацией Яцп М|сгозузгешэ и совмегцает в себе возможности интерфейса чпобе/чЬ и архитектуры ч'М (виртуальной памяти, ч'1ггца1 Мешогу) [71, предлагая эффективный механизм работы с временными файлами. Средства ч'М, упомянутые в этом разделе, будут более подробно описаны в главе 14.
Файловая система ттрЬ полностью реализована на уровне ядра и не требует выделения для ее обслуживания отдельного серверного процесса. Все метаданные файлов хранятся в памяти, не разбиваемой на страницы, а выделяемой динамически из кучи ядра. Блоки данных располагаются постранично и представлены в ядре при помощи средства анонимных страниц (апопушоцз раде) подсистемы ч'М. Данные о размещении каждой страницы хранятся в анонимном обьекте (структуре алов), описывающей расположение страницы в физической памяти или области свопинга. Зависящий от файловой системы объект 1шрлоое содержит указатель на анонимную карту файла (структуру апоп вар).