5.14.2 Демонтирование файловой системы

5.14.2 Демонтирование файловой системы

Синтаксис вызова системной функции umount:

umount(special filename);

где special filename указывает демонтируемую файловую систему. При демонтировании файловой системы (Рисунок 5.27) ядро обращается к индексу демонтируемого устройства, восстанавливает номер устройства для специального файла, освобождает индекс (алгоритм iput) и находит в таблице монтирования запись с номером устройства, равным номеру устройства для специального файла. Прежде чем ядро действительно демонтирует файловую систему, оно должно удостовериться в том, что в системе не осталось используемых файлов, для этого ядро просматривает таблицу индексов в поисках всех файлов, чей номер устройства совпадает с номером демонтируемой системы. Активным файлам соответствует положительное значение счетчика ссылок и в их число входят текущий каталог процесса, файлы с разделяемым текстом, которые исполняются в текущий момент (глава 7), и открытые когда-то файлы, которые потом не были закрыты. Если какие-нибудь файлы из файловой системы активны, функция umount завершается неудачно: если бы она прошла успешно, активные файлы сделались бы недоступными.

Буферный пул все еще содержит блоки с «отложенной записью», не переписанные на диск, поэтому ядро «вымывает» их из буферного пула. Ядро удаляет записи с разделяемым текстом, которые находятся в таблице областей, но не являются действующими (подробности в главе 7), записывает на диск все недавно скорректированные суперблоки и корректирует дисковые копии всех индексов, которые требуют этого. Казалось, было бы достаточно откорректировать дисковые блоки, суперблок и индексы только для демонтируемой файловой системы, однако в целях сохранения преемственности изменений ядро выполняет аналогичные действия для всей системы в целом. Затем ядро освобождает корневой индекс монтированной файловой системы, удерживаемый с момента первого обращения к нему во время выполнения функции mount, и запускает из драйвера процедуру закрытия устройства, содержащего файловую систему. Впоследствии ядро просматривает буферы в буферном кеше и делает недействительными те из них, в которых находятся блоки демонтируемой файловой системы; в хранении информации из этих блоков в кеше больше нет необходимости. Делая буферы недействительными, ядро вставляет их в начало списка свободных буферов, в то время как блоки с актуальной информацией остаются в буферном кеше. Ядро сбрасывает в индексе системы, где производилось монтирование, флаг «точки монтирования», установленный функцией mount, и освобождает индекс. Пометив запись в таблице монтирования свободной для общего использования, функция umount завершает работу.

алгоритм umount

входная информация: имя специального файла, соответствующего демонтируемой файловой системе

выходная информация: отсутствует

{

 if (пользователь не является суперпользователем) return (ошибку);

 получить индекс специального файла (алгоритм namei);

 извлечь старший и младший номера демонтируемого устройства;

 получить в таблице монтирования запись для демонтируемой системы, исходя из старшего и младшего номеров;

 освободить индекс специального файла (алгоритм iput);

 удалить из таблицы областей записи с разделяемым текстом для файлов, принадлежащих файловой системе;

 /* глава 7ххх */

 скорректировать суперблок, индексы, выгрузить буферы на диск;

 if (какие-то файлы из файловой системы все еще используются) return (ошибку);

 получить из таблицы монтирования корневой индекс монтированной файловой системы;

 заблокировать индекс;

 освободить индекс (алгоритм iput);

 /* iget был при монтировании */

 запустить процедуру закрытия для специального устройства;

 сделать недействительными (отменить) в пуле буферы из демонтируемой файловой системы;

 получить из таблицы монтирования индекс точки монтирования;

 заблокировать индекс;

 очистить флаг, помечающий индекс как «точку монтирования»;

 освободить индекс (алгоритм iput);

 /* iget был при монтировании */

 освободить буфер, используемый под суперблок;

 освободить в таблице монтирования место, занятое ранее;

}

Рисунок 5.27. Алгоритм демонтирования файловой системы

Рисунок 5.28. Файлы в дереве файловой системы, связанные с помощью функции link

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

5.16.1 Целостность файловой системы

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

5.16.1 Целостность файловой системы Ядро посылает свои записи на диск для того, чтобы свести к минимуму опасность искажения файловой системы в случае системного сбоя. Например, когда ядро удаляет имя файла из родительского каталога, оно синхронно переписывает каталог на


5.18 СОПРОВОЖДЕНИЕ ФАЙЛОВОЙ СИСТЕМЫ

Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

5.18 СОПРОВОЖДЕНИЕ ФАЙЛОВОЙ СИСТЕМЫ Ядро поддерживает целостность системы в своей обычной работе. Тем не менее, такие чрезвычайные обстоятельства, как отказ питания, могут привести к фатальному сбою системы, в результате которого содержимое системы утрачивает свою


4.2.4. Проверка файловой системы

Из книги Реестр Windows автора Климов Александр

4.2.4. Проверка файловой системы Для проверки файловой системы используется программа fsck (сокращение от file system check). С помощью данной программы вы можете проверить не только файловые системы Linux, но и Windows-разделы (только vfat). Единственное требование - перед началом проверки


Ускорение файловой системы

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

Ускорение файловой системы Можно ускорить действие файловой системы, (если позволяет оперативная память) увеличив параметр типа DWORD °IoPageLockLimit° от заданных по умолчанию 512 КБ до 4 МБ и более в разделе HKLMSYSTEMCurrentControlSetControlSession ManagerMemory ManagementЭтот параметр представляет


4.13. Обслуживание файловой системы

Из книги Установка и настройка Windows XP. Легкий старт автора Донцов Дмитрий

4.13. Обслуживание файловой системы Обслуживание файловой системы в ОС Linux сводится к двум операциям:1. Проверка.2. Дефрагментация.Проверка и восстановление файловой системы Linux выполняется программой fsck. Перед проверкой файловая система должна быть смонтирована в режиме


18.1.1. Параметры корневой файловой системы

Из книги Новейший самоучитель работы на компьютере автора Белунцов Валерий

18.1.1. Параметры корневой файловой системы Итак, начнем описание параметров, с параметров корневой файловой системы: root=yстройствоУстанавливает корневую файловую систему. Например, root=/dev/hda1. В качестве устройства допустимыми являются:1. /dev/hdaN…/dev/hddN — для


Выбор файловой системы

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Выбор файловой системы Файловая система необходима для систематизации файлов и управления ими. Термин FAT образовался от начальных букв словосочетания File Allocation Table (таблица размещения файлов). Файловая система создается при форматировании жесткого диска, который может


Дефрагментация файловой системы

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

Дефрагментация файловой системы При интенсивной работе на компьютере пользователю часто приходится создавать, копировать, перемещать, удалять большое количество файлов, кроме того, сама операционная система создает и удаляет много временных файлов. Вскоре это может


10.2.3. Идентификатор uid файловой системы

Из книги Операционная система UNIX автора Робачевский Андрей М.

10.2.3. Идентификатор uid файловой системы В очень специальных случаях программе может понадобиться сохранять свои права root для всего, кроме доступа к файловой системе, при котором она использует пользовательский uid. Изначально использовавшийся в Linux NFS-сервер пространства


2.2. Изнанка файловой системы

Из книги Разработка ядра Linux автора Лав Роберт

2.2. Изнанка файловой системы С точки зрения операционной системы, под файловой системой понимается внутренняя управляющая структура, заведующая хранением данных на физическом носителе, их поиском, извлечением и записью по запросам программ. Такие управляющие структуры


Структура файловой системы UNIX

Из книги автора

Структура файловой системы UNIX Использование общепринятых имен основных файлов и структуры каталогов существенно облегчает работу в операционной системе, ее администрирование и переносимость. Эта структура используется в работе системы, например при ее инициализации


Архитектура виртуальной файловой системы

Из книги автора

Архитектура виртуальной файловой системы Как было показано, различные типы файловых систем существенно отличаются по внутренней архитектуре. В то же время современные версии UNIX обеспечивают одновременную работу с несколькими типами файловых систем. Среди них можно


Монтирование файловой системы

Из книги автора

Монтирование файловой системы Прежде чем может состояться работа с файлами, соответствующая файловая система должна быть встроена в существующее иерархическое дерево.Только после этого ядро сможет выполнять файловые операции, такие как создание, открытие, чтение или


Целостность файловой системы

Из книги автора

Целостность файловой системы Значительная часть файловой системы находится в оперативной памяти. А именно, в оперативной памяти расположены суперблок примонтированной системы, метаданные активных файлов (в виде системно-зависимых inode и соответствующих им vnode) даже


Уровень обобщенной файловой системы

Из книги автора

Уровень обобщенной файловой системы Общий интерфейс для всех типов файловых систем возможен только благодаря тому, что в ядре реализован обобщающий уровень, который скрывает низкоуровневый интерфейс файловых систем. Данный обобщающий уровень позволяет операционной