<<
>>

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

Есть два системных вызова, оказывающих влияние на файловую систему в целом, это mount и umount. При помощи этих вызовов можно «склеивать» воедино отдельные файловые системы на различных дополнительных устройствах, образуя общую древовидную структуру.
Как можно было видеть на рис. 5.33, при монтировании файловой системы ее суперблок и корневой индексный узел считываются, и в суперблоке устанавливаются два указателя. Первый из них ссылается на точку монтирования (то есть индексный узел, к которому присоединена смонтированная файловая система), а второй указывает на корневой индексный узел новой файловой системы. Эти два указателя и сцепляют файловые системы вместе.

Означенные указатели устанавливаются в строках 26819-26820 функцией do_ mount из файла mount. с. Две страницы кода, которые предшествуют этому моменту, практически целиком относятся к проверке различных ошибок, ожидаемых при монтировании файловых систем:

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

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

♦ у монтируемой файловой системы неправильная сигнатура;

♦ монтируемая файловая система некорректна (то есть нет индексных узлов);

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

♦ не хватает памяти для битовых карт монтируемой файловой системы;

♦ не хватает памяти для суперблока монтируемой файловой системы;

♦ не хватает памяти для корневого индексного узла монтируемой файловой системы.

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

Томас Эдисон сделал одно замечание, которое применимо и к нашему случаю. Он сказал, что гений — это 1 % вдохновения и 99 % труда. Различие между хорошей и посредственной системой состоит не в превосходном алгоритме планирования, а в том внимании, которое уделено деталям.

Демонтировать файловую систему проще, чем монтировать. Эту задачу в два этапа решает функция do_umount (строка 26828). Она убеждается, что вызов был сделан суперпользователем, преобразует имя в номер устройства, а затем обращается к подпрограмме unmount (строка 26846), завершающей операцию. Единственная проблема в том, что все файлы на демонтируемой файловой системе должны быть закрыты, и ни у одного процесса не должно быть текущего каталога на ней. Проверка осуществляется тривиально: сканируется вся таблица индексных узлов на предмет поиска в памяти хотя бы одного индексного узла, принадлежащего демонтируемой файловой системе. Если да, umount рапортует об ошибке.

Последняя подпрограмма в файле mount .с носит имя name_to_dev (строка 26893). Она определяет главный и вспомогательный номера устройства по передаваемому ей имени специального файла. Эти номера хранятся в самом индексном узле, там, где у обычных файлов хранится информация о первой зоне. Это место пустует, поскольку у специальных файлов нет зон.

<< | >>
Источник: Э. ТАНЕНБАУМ, А. ВУДХАЛЛ. ОПЕРАЦИОННЫЕ СИСТЕМЫ Разработка и реализация 3-е издание. 2007

Еще по теме Монтирование файловых систем:

  1. § 39 Классификация договоров в отдельных видах. – Римская классификация. – Система прусского закона, французского и австрийского кодекса. – Система русского свода. – Система настоящего изложения.
  2. Тема 15 Правова система і система права. Система законодавства та систематизація нормативно-правових актів
  3. Глава 4. Система права и система законодательства
  4. §5. Система военных судов в РФ как часть системы судов общей юрисдикции
  5. Единство и взаимосвязь правовой системы и системы правового общества
  6. § 1.3. Система трудового права і система трудового законодавства
  7. § 33 Общее правило о переходе наследства к детям. – Отличие отделенных от неотделенных. – Право представления. – Право родительское. – Право боковых родственников. – Римская система определения прав по классам и степеням. – Германская система определения прав по линиям и коленам.
  8. § 14 Отношения супругов по имуществу. – Германское начало общения имуществ в браке и римская система приданого. – Особое имущество жены. – Разнообразные системы западных законодательств. – Раздел имуществ по прекращении брака. – Ограничения брачных договоров и сделок между супругами. – Английский закон об отношениях супругов по имуществу.
  9. § 34 Смешанные системы в новейших законодательствах. – Происходящее от различия сих систем различие в порядке раздела и в допущении права представления. – Ограничение наследственного права пределами родства. – Ограничение женщин. – Разделение наследства между родами. – Возвращение подаренного родителями. – Наследование супругов и незаконных детей и родителей. – Закон наследования в Англии.
  10. Э. ТАНЕНБАУМ, А. ВУДХАЛЛ. ОПЕРАЦИОННЫЕ СИСТЕМЫ Разработка и реализация 3-е издание, 2007
  11. СИСТЕМА
  12. СИСТЕМА НЕРВНАЯ
  13. Тема 20. Смешанные правовые системы
  14. СИСТЕМА ТЕЙЛОРА
  15. 3. Система законодавства
  16. СИСТЕМА ЭРРАТИЧЕСКАЯ