Электронный учебник:


Курс лекций:


Дополнительно:

Практикум:



Наши хостеры:

Каталоги

Каталог, с точки зрения файловой системы, - это файл, который необходим для связи между именами файла и его информацией. На этом базируется весь скелет ФС.

Каталог состоит из элементов, которые содержат два поля. Первое поле - номер индексного дескриптора,  второе поле - это имя файла, для которого отводится некоторое количество позиций. При создании каталога в нем по умолчанию образуются 2 специальных файла: “.”, “..”. Имя файла “.” - связано с самим каталогом, а “..” - с родительским каталогом.

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

                        root

Image
 

Связь файлов с каталогами.

Рассмотрим фрагмент ФС

Image Image
 

Image

 11         .

  1         ..

 25      IVAN

 19       bin

 34       lib

 28       ter.c

 
ImageImage1

.

ImageImage1

..

ImageImage28

tmp

ImageImage11

USR

Image3

Unix

Image76

bin

Image14

dln

Ид с №1 содержит атрибуты корневого каталога. Соответственно файлы “.”, “..” ссылаются на ИД с №1. Имена tmp и ter.c ссылаются на один и тот же ИД, (в соответствующем поле счетчик = 2). Если выполняется команда удаления файла ter.c, то реальное удаление файла не произойдет, но счетчик ИД уменьшится на 1. Строка пропадет, если удалить еще и файл tmp, тогда ИД с №28 присоединится к списку свободных и доступ к информации, хранящихся в файлах, прекратится. Путь, который задает полное имя представляет собой соответствие между каталогами и ИД. Рассмотрим имя вида: “../c/b”. Оно представляет из себя путь из текущего каталога в родительский каталог(т.е. наверх). И в подкаталоге С к файлу с именем B. Затем появляется контекст процесса. В процессе необходимо найти имя. Из контекста процесс выбирает ИД (из текущего каталога). Используя информацию ИД, в текущем каталоге ищется имя ‘..’ и определяется номер его ИД. Далее выбирается ИД файла ‘..’. Используя информацию из этого ИД, в родительском каталоге ищется файл “c” и определяется номер его ИД. Берем информацию из ИД, проводим поиск каталога “С”. Затем ищем файл “b” и определяем номер его ИД.

предыдущаяследующая