Блог → Что такое файлы - и как они появились в информатике?

Сегодня мы немного поговорим о том, что такое файл и откуда вообще взялось это слово. Скажем прямо - оно настолько глубоко вошло в обиход, что безусловно, знакомо каждому, кто имеет хоть какое-то отношение к компьютерам (а ныне - и различным околокомпьютерным девайсам, таким как планшеты и смартфоны). Давайте же немного углубимся в историю, и посмотрим, откуда же берут начало наши "файлы". Вообще термин "файл" происходит от английского слова file, что дословно переводится на русский язык как "дело" или "досье". В информатике (как науке о компьютерах) под файлом понимают совокупность в некотором смысле однородных данных, характеризующих какой-либо процесс или некоторый объект. Как правило, мы имеем дело с программными файлами, состоящими из одной или нескольких именованных программ, а также с файлами данных.

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

Компоненты программного файла называют модулями или сегментами. Один из них считается основным, именно он в первую очередь загружается в оперативную память и управляет всем процессом обработки информации. В частности, основной модуль по мере надобности проводит автоматическую подгрузку в память других сегментов файла. Именем файла считается имя его основного модуля. Нужно иметь в виду, что при небольших размерах программного файла разбивать его на модули нецелесообразно.

Особенный интерес представляют два вида файлов данных: прямого доступа и последовательного доступа. Компоненты файла прямого (или как его ещё называют, случайного доступа) - это отдельные нумерованные группы значений, называемые записями. Запись может быть считана с внешнего носителя в буфер оперативной памяти и наоборот - сформирована в буфере, и лишь затем переписана во внешнюю память. Иными словами, буфер является своеобразным окном, через которое можно "рассматривать" файлы данных. Обращение к конкретной записи осуществляется прямым заданием её номера.

Компоненты файла последовательного доступа называются строками, каждая из них имеет специальную концевую метку и, как и запись, состоит из отдельных значений. Однако строки не нумерованы, и обрабатывать их можно лишь последовательно - друг за другом. Причём запись организуется от начала или конца файла, а чтение - только от его начала. Заметим, что отдельные сегменты программных файлов - это, вообще говоря, специфические файлы данного последовательного доступа.

Оба рассмотренных вида файлов с успехом могут быть использованы в рамках расширенного BASIC при работе с дисководом, в качестве внешних носителей в этом случае применяются магнитные диски (гибкие или жёсткие). Последовательные файлы могут использоваться с любым, в том числе и нерасширенным, Бейсиком. Здесь устройством обмена является магнитофон, а внешним носителем - магнитная лента.

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

В расширенном Бейсике предусмотрены группы команд и функций, с помощью которых организуется работа отдельно с программными файлами, файлами данных прямого доступа и файлами данных последовательного доступа. Однако, эта версия языка BASIC имеет и ряд средств, пригодных для работа с файлами любого типа, к ним относятся следующие команды и функции:
- FILES (LFILES) - команда вывода на экран (принтер) списка имен файлов,
- DSKF - функция, имеющая значением размер в байтах свободной части диска,
- NAME... AS - команда изменении имени файла на диске,
- COPY... ТО - команда создания дубликата файла на диске,
- KILL — команда стирания файла на диске.

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

Для работы с 3,5-дюймовым дисководом MSX-компьютера используются двухсторонние диски MF2-DD и односторонние диски MFl-DD (или же их аналоги). Такой диск, заключенный в пластмассовый кожух, имеет переключатель защиты от записи и скользящую шторку для прикрытия окна, через которое организуется собственно чтение и запись информации. Вставлять диск в щель (карман) дисковода и извлекать его оттуда можно лишь при включенном устройстве.

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

Итак, для подготовки диска к работе с командами и функциями BASIC необходимо осуществить специальную разметку поверхности диска, называемую форматированием. Для этого диск вставляется в карман дисковода и выполняется команда CALL FORMAT. При вводе команды слово CALL (переводится с англ. как "вызывать") можно заменить символом подчеркивания "_". Выполнение команды CALL FORMAT вызывает индикацию на экране запроса:

DRIVE NAME? (A, B).


Ответом на него должен быть ввод одной из букв A или B, в зависимости от имени устройства, в котором находится диск. На появившуюся подсказку: DOUBLE SIDES (1) или SINGLE SIDES (2), пользователь должен отреагировать вводом цифры 1, если диск двухсторонний, либо 2, в том случае, если диск односторонний. Далее, по указанию:

STRIKE A KEY WHEN READY


необходимо нажать любую клавишу (при появлении сообщения "INSERT DISKETTE FOR DRIVE..." требуется произвести нажатие ещё одной клавиши, это приведет к смене имени устройства). После этого и начинается процесс форматирования, т.е. размещение на диске управляющих меток. При этом вся ранее имевшаяся там информация разрушается. Имейте в виду, что форматирование новых дисков обязательно! Правильное завершение этого процесса вызывает индикацию следующего сообщения:

FORMAT COMPLETE
OK


Ниже я привожу некоторые характеристики диска типа MF2-DD:
- Ёмкость при записи: всего - 720 Кбайт, для файлов пользователя - 713 Кбайт.
- Плотность при записи: 8717 бит/дюйм.
- Среднее время доступа: 95 мс.
- Максимальное количество файлов: 112.

При создании на диске любого нового файла ему необходимо присвоить определенное имя. Оно должно быть уникальным, т.е. не совпадать ни с одним из уже имеющихся имён файлов, сформированных на данном диске ранее. Имя файла служит для их идентификации и строится из последовательности символов алфавита и цифр. При этом должны учитываться следующие обстоятельства:
- Количество символов имени не может превосходить 11. Попытка сформировать имя большей длины ни к чему не приводит. Правые лишние знаки отбрасываются.
- Соответствующие большие и малые латинские буквы, используемые в имени, равнозначны.
- Соответствующие большие и малые буквы русского алфавита, используемые в имени, не равнозначны.
- В имени не должно быть специальных знаков: :,"+=[]*/\?
- Символ двоеточие ":" используется только при задании составных имен для разделения их на две части, первая из которых идентифицирует устройство, а вторая - файл. В этом случае при записи файла на диск фиксируется лишь вторая часть имени.
- Нельзя задавать имя, состоящее из одних пробелов, начинающееся с пробела или содержащее неконцевые пробелы.
- Имя не должно начинаться со знака точки ".". В нём не может быть более одного такого символа и не более 8 знаков перед ним.

При задании имени "с точкой" компьютер интерпретирует её в качестве символа девятой позиции. Тем самым имя разделяется на две зоны: основная часть (до точки) и расширение (после точки). Иногда расширение имени файла называют его индексной частью. Номер начальной позиции основной части - 1, а расширения - 10. Если пользователь фиксирует имя без точки с количеством символов, большим 8, то операционная система автоматически разбивает его на основную и индексную части, вставляя в требуемое место точку.

Ниже описаны средства для перемещения программ из оперативной памяти на диск, и в обратном направлении. Речь идёт о командах SAVE, LOAD, RUN и MERGE:
- SAVE - команда записи программ на диск.
- LOAD, RUN - команды чтения программ с диска.
- MERGE - команда подгрузки в память программы, записанной на диске в формате ASCII.

По команде SAVE i[,А], где: SAVE (от англ. save - "сохранить"), А - служебные слова; i - имя файла, программа из оперативной памяти под именем i записывается на диск. В зависимости от наличия, либо отсутствия параметра А, запись проводится соответственно или в формате ASCII, или в форме внутреннего представления. Если данная программа впоследствии будет подгружаться в память для слияния с другими модулями (команда MERGE), то её необходимо записывать в формате ASCII.

При наличии на диске программного файла или файла данных с именем i и записи на него новой программы под тем же именем старый файл пропадает, и происходит пересчёт размера свободной чести диска в соответствии с новыми размерами i. Замечу, что формат ASCII приводит к увеличению в несколько раз времени записи программ из оперативной памяти на диск, а также их чтения с диска в память. К тому же для их размещения на диске требуется приблизительно на 30% больше места, чем для соответствующих программ во внутреннем представлении.