Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Glava_10.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
576 Кб
Скачать

272

1 0. Организация работы с файлами

Напомним, что файл представляет собой поименованную область памяти, выделенную на устройстве хранения информации. Чаще всего в настоящее время в качестве такого устройства выступает магнитный диск. Схематично устройство диска представлено на рисунке 10.1. Для того чтобы прочитать с диска какую-либо информацию, необходимо чтобы машина выполнила следующие операции:

1. Включить двигатель, вращающий диск;

2. Включить двигатель, перемещающий считывающее устройство;

3. Установить считывающее устройство на начало нужной магнитной дорожки;

4. Сделав, по крайней мере, один оборот диска, прочитать нужную информацию.

5. Выключить двигатели.

Естественно, не все так просто как мы это здесь написали и, тем более, изобразили1. При реальной работе непосредственно с диском возникает множество проблем. Прежде всего, не стоит забывать, что накопитель на магнитном диске – электро-механическое устройство, следовательно, его быстродействие несопоставимо мало по сравнению с быстродействием процессора, он обладает высокой инерционностью – прежде чем информацию считывать диск необходимо разогнать до нужной скорости, а потом еще и ухитриться точно позиционировать считывающее устройство на нужном месте информационной дорожки1. Вследствие этого потери времени и надежность работы при непосредственной работе с файлом становятся просто неприемлемыми. Работу диска необходимо организовать таким образом, чтобы минимизировать эти риски. Сделать это можно, максимизировав объем информации, считываемой за один оборот. Понятно, что при этом считываться будет не только нужная информация, но и различный мусор, в том числе данные, хранящиеся в других файлах. Эту галиматью необходимо предварительно обработать, следовательно, выделить для нее место в ОЗУ. Схематично такая работа с диском показана на рисунке 10.2. Большая порция информации с диска записывается в специально выделенную область памяти – буфер и полностью заполняет его (см. рис. 10.2а, е). Теперь по мере необходимости информацию можно извлекать из буфера, не обращаясь к диску (рисунок 10.2б, в, г, д, ж, з, и, к). По мере извлечения информации, буфер освобождается2. В тот момент, когда он опустел (рисунок 10.2д, к) при необходимости производится чтение новой порции информации (рисунок 10.2е). И так до тех пор, пока в очередной порции не будет обнаружен признак конца файла.

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

Прежде всего, при работе с файлом ваша программа должна выделить для него буфер. С этой целью в Borland Pascal'е предусмотрено несколько предопределенных типов данных, называемых файловыми.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]