Основы операционных систем. Практикум


Упрощенное понятие об устройстве файловой системы в UNIX. Полные и относительные имена файлов - часть 2


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

Рис. 1-2.1.  Пример структуры файловой системы

Каждому файлу (регулярному или директории) должно быть присвоено имя. В различных версиях операционной системы UNIX существуют те или иные ограничения на построение имени файла. В стандарте POSIX на интерфейс системных вызовов для операционной системы UNIX содержится лишь три явных ограничения:

  • Нельзя создавать имена большей длины, чем это предусмотрено операционной системой (для Linux – 255 символов).
  • Нельзя использовать символ NUL (не путать с указателем NULL!) – он же символ с нулевым кодом, он же признак конца строки в языке C.
  • Нельзя использовать символ '/'.

От себя добавим, что также нежелательно применять символы "звездочка" – "*", "знак вопроса" – "?", "кавычка" – "\"", "апостроф" – "\'", "пробел" – " " и "обратный слэш" – "\\"(символы записаны в нотации символьных констант языка C).

Единственным исключением является корневая директория, которая всегда имеет имя "/". Эта же директория по вполне понятным причинам представляет собой единственный файл, который должен иметь уникальное имя во всей файловой системе. Для всех остальных файлов имена должны быть уникальными только в рамках той директории, в которую они непосредственно входят. Каким же образом отличить два файла с именами "aaa.c", входящими в директории "b" и "c" на рисунке 1–2.1, чтобы было понятно о каком из них идет речь? Здесь на помощь приходит понятие полного имени файла.

Давайте мысленно построим путь от корневой вершины дерева файлов к интересующему нас файлу и выпишем все имена файлов (т.е. узлов дерева), встречающиеся на нашем пути, например, "/ usr b aaa.c". В этой последовательности первым будет всегда стоять имя корневой директории, а последним – имя интересующего нас файла. Отделим имена узлов друг от друга в этой записи не пробелами, а символами "/", за исключением имени корневой директории и следующего за ним имени ("/usr/b/aaa.c").Полученная запись однозначно идентифицирует файл во всей логической конструкции файловой системы. Такая запись и получила название полного имени файла.




- Начало -  - Назад -  - Вперед -