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

ЭВМ обычно имеет несколько дисков. Каждому диску присваивается имя, которое задается латинской буквой с двоеточием. Стандартно принято, что А: и В: — это накопители на гибких магнитных дисках, а С: — жесткий диск. Физический диск может быть разбит на несколько логических дисков, которые для пользователя будут выглядеть на экране так же, как и физически существующие диски. Их имена D:, E:, F: и т.д. Диск, с которым в данный момент работает пользователь, называется текущим или рабочим.

Информация хранится на накопителях, откуда она при необходимости считывается. Вся информация находится в файлах.

Файл – это область на каком-либо диске, содержащая логически объединенную информацию, и снабженная именем.

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

Размер файла – это количество содержащейся в нем информации, измеренное в байтах.

Чтобы программы могли обратиться к файлам, файлы должны иметь обозначение (имя файла). Имя файла обычно состоит из двух частей – собственно имя и расширение, отделенное точкой. Название файла для MS-DOS состоит из не более чем восьми символов; расширение содержит не более чем три символа. Имена файлов могут состоять из прописных и строчных латинских букв, цифр и символов: $ % ” _ @ ! & # ( ) { } ~ ‘. В имени файла прописные и строчные буквы являются эквивалентными.

Расширение файла является необязательным. Но расширение обычно информирует пользователя о содержании файла, поэтому использование расширения весьма удобно. Кроме того, многие программы позволяют по расширению имени файла вызвать соответствующую программу и сразу загрузить в нее данный файл. Это весьма полезно, так как экономит время.

Примеры расширений:

.COM, EXE – исполнимые файлы (готовые к выполнению программы) .BAT — командные файлы .PAS — программы на Паскале .C — программы на Си .BAK — копия файла, создаваемая перед его изменением.

Пример имени файла: progress.rpt

где progress имя, .rpt расширение

Некоторые сочетания символов нельзя использовать в качестве имен файлов, т.к. операционные системы использует их для обозначения устройств. Например, в операционной системе MS DOS для обозначения устройств используются имена:

  • PRN — принтер
  • LPT1- LPT4 — устройства, присоединяемые к параллельным портам 1-4
  • COM1 — COM4 — устройства, присоединяемые к последовательным портам 1-4
  • CON — при вводе — клавиатура, при выводе — экран
  • NUL — “пустое” устройство.

Во многих командах в именах файлов можно употреблять символы * и ? для указания группы файлов. Это так называемые шаблоны файлов (маски).

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

Символ * обозначает любое число символов в имени или расширении файла. Символ ? означает один произвольный символ или отсутствие символа.

Например:

*.* — шаблон, который означает все файлы.
*.bac — все файлы с расширением bac.
a?.pas – имена файлов начинаются с «а» и имеют не более 2 символов, а расширение – pas.

Даже при разбиении винчестера на логические диски, поиск определенного файла был бы трудным, если бы все файлы были «свалены в кучу» на каждом диске. Например, компилятор языка Паскаль состоит более чем из 30 файлов с программами; какая-либо электронная таблица состоит примерно из такого же количества файлов; база данных – более чем из 50 файлов. Если все файлы этих 3 пакетов лежат «вперемешку» на диске С:, то определить, какие файлы к какому пакету относятся, достаточно трудно. Кроме того, одним компьютером, как правило, пользуется несколько человек. Каждый из них создает программы, записывает их в файлы, выбирая для этих файлов имена по своему вкусу. Вполне вероятно, что два разных пользователя выберут одно и то же имя для своих совершенно разных файлов. Если эти пользователи хранят свои программы на одном и том же диске, где все файлы «свалены в кучу», то пользователь, который будет записывать свою программу на диск позже, просто уничтожит программу другого пользователя, находящуюся в одноименном файле. Избежать перечисленных трудностей позволяет объединение файлов в каталоги (директории, папки).

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

Структура размещения файлов следующая. На каждом логическом диске имеется корневой каталог — каталог первого уровня. В нем могут находиться как обычные файлы, так и другие каталоги — подкаталоги или каталоги второго уровня. В каталогах второго уровня также могут храниться файлы и каталоги следующего уровня и т.д. Процесс дробления вложенных каталогов на подкаталоги следующих уровней продолжается до тех пор, пока все подкаталоги не будут состоять только из файлов. Описанная структура напоминает дерево. “Ствол” дерева – это корневой каталог. На нем растут “ветви” – вложенные каталоги и иногда “листья” – файлы. Из каждой “ветви” могут расти другие “ветви” – вложенные каталоги следующего уровня и “листья” – обычные файлы. Самые тонкие “ветви” (каталоги последних уровней) содержат только “листья” – файлы. Именно поэтому говорят, что логическая схема размещения файлов имеет древовидную структуру.

АВС — корневой каталог
АА, АВ, АА1, АА2, АС — подкаталоги
АА2 — родительский для АС.

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

Требования к именам каталогов такие же, как и к именам файлов, но расширение не используется.

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

Например:

A:\ABC\AA1\f1.txt, где А: — имя диска, на котором следует искать файл f1.txt.