Назад

Содержание

Вперед


1.4. Файловая система.

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

    Физически файловая система располагается на устройствах ввода-вывода с прямым доступом. Обычно это магнитные диски. Каждый из них имеет свой специальный файл, посредством которого производятся операции обмена данными на уровне ядра. Диски в системе UNIX относятся к так называемым блочно-ориентированным устройствам. Это означает, что операции ввода-вывода для них выполняются порциями (блоками). Их размер, как правило, равен или кратен 512 байтам. Таким образом, система рассматривает диск как набор блоков, пронумерованных от 0 до N, где N зависит от размера устройства.

    Файловая система позволяет разделять дисковое пространство между наборами данных, имеющими различные имена, размеры и другие атрибуты. При ее создании на диске первый блок (номер 0) отводится для программы начальной загрузки ОС, даже если диск не будет содержать ядро UNIX. Следующий блок называется суперблоком. Он содержит информацию о размере файловой системы, указатель на список свободных блоков и указатель на список свободных индексных узлов. Индексный узел представляет собой структуру данных, хранящуюся на диске, и содержащую информацию, необходимую для поиска блоков, относящихся к конкретному файлу.

    Следом за суперблоком располагаются списки самих индексных узлов и свободных блоков. Место для них резервируется при создании файловой системы, далее располагаются блоки, занятые данными файлов, и свободные блоки.

    На логическом уровне файловая система UNIX организована, как иерархическая последовательность каталогов (директорий), содержащих сами файлы. Директория самого верхнего уровня называется "корневой" и имеет имя "/" (косая черта). Она создается в момент установки ОС на компьютер. Все остальные файлы и директории входят в корневую директорию или в ее подкаталоги. Указание ее местоположения на диске содержится в суперблоке.

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

    Доступ процесса к любому набору данных производится путем поиска его в директориях файловой системы. Для этого необходимо задавать вместе с именем файла перечень имен входящих друг в друга директорий, указывающих его положение в иерархии. Этот список образует полное имя файла (или, как говорят, путь к нему). Части в этом имени разделяются символом '/'.

    Например, если надо указать полное имя файла "prog.c", содержащегося в директории "src", которая, в свою очередь, входит в "корневую" директорию, то полное имя (путь) в системе UNIX будет выглядеть следующим образом:

/src/prog.c

    Если в имя файла входит точка ('.'), то часть имени файла, стоящую после нее, называют "расширением". Файлы, имеющие одинаковое назначение или принадлежащие одному типу, имеют одинаковое расширение. Так, программы на языке Си имеют расширение ".с", файлы, содержащие объектный код, расширение ".о", и т.д.

  1. Соединение многих файловых систем в одну ("монтирование").
  2. Работа с каталогами.
  3. Создание и уничтожение файлов. Получение информации о файлах.
  4. Ввод-вывод данных.