Ю. Вахалия - UNIX изнутри (2003) (1114670), страница 97
Текст из файла (страница 97)
Карта является массивом указателей на анонимные объекты каждой страницы файла. Связь между структурами показана на рис. 9.9. Так как страницы сами по себе размещаются в страничной памяти, они могут быть перенесены в область свопинга страничной подсистемой и использованы как физическая память другими процессами, так же как и в файловой системе шЬ. Анонимные объекты и карты используются также подсистемой ч'М для описания страниц в адресном пространстве процесса.
Это позволяет процессам отображать файл гшрЬ в свое адресное пространство напрямую, востребуя для этой цели интерфейс системного вызова пипар. Такое отображение реализовано при помощи совместного использования структуры апов л1ар файлом и процессом, Соответственно процесс обладает прямым доступом к такому файлу без необходимости копирования его в собственное адресное пространство. 9.11. Файловые системы для специальных целей 411 Область овопинга Структура тарпобе труктура аппп Страница в памяти Рис. 9.9.
Размещение страниц в файловой системе тгпр1в Файловая система гшрЬ решила некоторые проблемы, имеющиеся в шЬ, Система не использует выделенный сервер ввода-вывода, что помогает избавиться от необходимости лишних контекстных переключений. Хранение метаданных в куче дает возможность не производить операции копирования из одного участка памяти в другой, а также защищает от некоторого избытка дискового ввода-вывода. Поддержка карт памяти позволяет осуществлять быстрый прямой доступ к данным файла. Еще одна разновидность временных файловых систем описана в 117]. Система поддерживает дополнительную опцию задержки г1е1ау вызова глопп1, устанавливающую соответствующий флаг в закрытом объекте чЬ оа1а для цЬ. Большинство процедур пЬ, которые производят синхронные изменения на диске (обычно после изменения метаданных), были усовершенствованы.
Теперь перед началом действий они проверяют наличие флага. Если флаг установлен, процедуры откладывают запись, маркируя при этом буфер как гйг1у (агрязный»). Такой подход имеет несколько преимуществ. Система не использует отдельный КАМ-диск, что экономит адресное пространство и не требует копирования блоков в память. Показатели производительности этого решения просто впечатляют. Его основным недостатком является необходимость переписывания процедур цЬ, а не просто внесения добавлений в ядро без правки исходного кода.
В системах, использующих несколько типов файловых систем, каждая реализация должна быть соответственно изменена для поддержки опции задержки. 9.11. Файловые системы для специальных целей Изначальной целью интерфейса тпог)е/уЬ была поддержка на одной машине сразу нескольких файловых систем, как локальных (например, з5Ь или ГЕ5), так и удаленных (например, КГ5 или )ЧГЯ, о них см. подробнее в главе 10). Через некоторое время после появления этого интерфейса было разработано несколько специализированных файловых систем, использующих его мощ- 412 Глава 9. Реализации файловых систем ность и универсальность. Некоторые из этих систем стали частью стандартной версии э'ч'К4, другие поставлялись отдельно как компоненты, добавляемые производителями.
В следующих подразделах будут рассмотрены некоторые интересные примеры специализированных файловых систем. 9.11.1. Файловая система арестов Файловая система зресЬ предлагает стандартный интерфейс взаимодействия с файлами устройств. Она невидима на прик.ладном уровне и не может быть смонтирована как обычная система, а также используется как общий интерфейс для любой файловой системы, поддерживающей специальные файлы. Основной целью зресЬ является перехват вызовов ввода-вывода и трансляция их в вызовы процедур драйвера соответствующего устройства.
Эта задача кажется простой, так как идентификация файла устройства происходит по полю ч ~уре, а минимальный и максимальный номера устройства указываются в поле ч Меч. Независимый от файловой системы код должен обладать возможностью вызывать драйверы устройств напрямую, используя переключения блочных и символьных устройств. Проблемы возникают в том случае, когда несколько файлов относятся к одному и тому же устройству. Если несколько пользователей пытаются одновременно получить доступ к устройству при помощи отличающихся друг от друга имен, ядру системы необходимо синхронизировать такой доступ.
Для блочных устройств оно должно отследить существование копий блоков в буферном кэще. Становится очевидным, что ядру системы требуется обладать информацией, какие объекты чподе в текущий момент времени представляют одно и то же устройство. На уровне зресЬ для каждого файла устройства создается теневой обьеки опойе (зпадочч люде), представля1ощий собой зависимую от файловой системы структуру данных эпосе. теперь все операции поиска файла устройства будут возвращать ссылку не на дейсглвительпый, а на теневой объект чподе.
Если это необходимо, действительный чподе может быть получен при помощи операции чор геаЬр. Структура злобе содержит поле з согпгпопчр, указывающее на обилий объект плоде (ассоциированный с другой злобе) для этого устройства. Для каждого устройства существует только один общий объект чпос1е. Оп идентифицируется номером и типом устройства. На такой объект могут ссылаться сразу несколько объектов злобе. Все операции, требующие синхронизации, а также ввод-вывод блочных устройств производятся через общий объект чпобе. Более подробно о файловой системе ьресЬ можно прочесть в разделе 16А, 9.11.2.
Файловая система /ргос Файловая система /ргос ~5~ предлагает элегантный и мощный интерфейс доступа к адресному пространству любого процесса. Система изначально раз- 9.11. Файловые системы для специальных целей 413 Файл (доступный только для чтения) содержит информацию о статусе процесса. его формат определен структурой рматщ, которая хранит идентификатор процесса, идентификаторы группы и сеанса, размеры и местонахождение стека и кучи, а также некоторые другие данные Файл (доступный только для чтения) содержит информацию, необходимую для команды рз(1). Его формат определен структурой рз)л(о, включающей в себя некоторые поля файла статуса, а также дополнительную информацию, в том числе размер образа и идентификатор устройства контролируемого терминала Иа(щ ййл(о Файл (доступный только для записи) позволяет пользователям производить операции управления Процессом посредством записи форматированных сообщений в этот файл.
Некоторые операции управления будут подробнее описаны ниже сб Файл (доступный только для чтения) представляет собой карту виртуальных адресов процесса. Он содержит массив структур рплар, каждый элемент которого описывает один непрерывный диапазон адресов процесса. Карты виртуальных адресов будут подробно рассмотрены в разделе 14.4 3 Файл (доступный как для чтения, так и для записи) является картой виртуального адресного пространства процесса. Любой адрес может быть доступен при помощи операции (зеек, осуществляющей позиционирование в файле, и последующего вызова ~еа4 или ипте Файл (доступный только для чтения) содержит информацию об обработке сигналов.
9 нем находится массив структур пвасбсл (см. раздел 4,5), по одной для каждого сигнала вар ат т)сас( рабатывалась как средство отладки, которое должно было заменить собой р1гасе, но переродилось в общий интерфейс к модели процессов. Файлгнтая система/ргос позволяет приложениям читать и изменять данные в адресном пространстве других процессов, а также управлять им, используя стандартный интерфейс файловой системы и системных вызовов. Из этого следует, что управление доступом к адресному црострацству осуществляется цри ноиоши обычных привилегий на чтение, запись и выполнение. По умолчанию запись и чтение файлов /ргос разрешены только для их владельцев.
В ранних реализациях системы каждый процесс представлялся в виде файла, расположенного в каталоге /ршс. Имя файла определялось десятичным значением идентификатора процесса, а его размер соответствовал его пользовательскому адресному пространству. Доступ к любому адресу осуществлялся путем открытия соответствующего файла /ршс и применения системных вызовов (зее(т, геаб и угг(1е.
Различные операции управления процессом выполнялись нри помощи набора команд юс1( в отношешш файла. Позже реализация /ргос претерпела большие изменения. Здесь описывается вариант, представленный в Я)Вчг.2. В этой операционной системе каждый процесс представлен в виде отдельного каталога, расположенного внутри /ргос.
Имя каталога является десятичным значением идентификатора процесса. В каждом таком каталоге имеются следу|ощие файлы и подкаталоги: 414 Глава 9. Реализации файловых систем Файл (доступный только для чтения) содержит пользовательские полномочия процесса. Его формат определяется структурой ргсгеб Этот каталог соотносит по одному файлу на каждый объект, отображенный в адресном пространстве процесса (см.
раздел ! 4.2). Пользователь может получить файловый дескриптор для такого объекта путем открытия соответствующего файла егер оЦест Каталог содержит по одному подкаталогу для каждого СУУР (см. главу 3) процесса. В каждом подкаталоге находится по три файла: (ириаьцд (ирин(о и (турст(, предлагающих набор статусных и управляющих операций, сходных описываемым в файлах Маьзд рк(п(о и ст( соответственно (ар Важно упомянуть о том, что перечисленные файлы не являются обычными файлами, физически расположенными на дисках. Они используются только в качестве интерфейса доступа к процессу, Операции над такими файлами преобразуются системой /ргос в соответствующие действия над процессом либо его адресным пространством. Один и тот же файл /ргос могут открывать одновременно сразу несколько пользователей. Рекомендательная блокировка при открытии файлов аз, СО( или!врет( устанавливается флагом О ЕХЕЕ.
Файлы с0 и (турс1( позволяют производить некоторые статусные и управляющие операции, в том числе: Остановку всех СУУР процесса Ожидание остановки всех СУУР процесса РС5ТОР РСВ5ТОР РСЙЦМ Возобновление выполнения приостановленных СУУР. При помощи необязательных флагов могут быть заданы некоторые дополнительные действия, как, например, РаС516 для сброса текущего сигнала или Ра5ТЕР для пошагового выполнения процесса Отправку процессу указанного сигнала РСК1СС Рс5ейтау Указание СУУР на необходимость остановки перед началом выполнения определенных системных вызовов Указание СУУР на необходимость остановки после выхода из определенных системных вызовов РС5ЕХ1Т В системе не предусмотрена поддержка контрольных точек.