Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
САОД / Группа 630 / ГЛАВА 10_Хранение данных на ВЗУ.docx
Скачиваний:
11
Добавлен:
26.04.2015
Размер:
151.55 Кб
Скачать

10.2. Типы файлов

И РЕЖИМЫ ИХ ОБРАБОТКИ

Существуют следующие типы файловых структур данных: последо­вательный, индексно-последовательный; прямой и библиотечный файлы (принципы организации их рассмотрены в п. 10.3-10.6).

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

Наиболее простым подходом к хранению записей файла является их последовательное размещение. Именно так организуются последователь­ные файлы. Все другие методы организации файлов преследуют следую-126 щие основные цели: уменьшить просматриваемые фрагменты файлов или обеспечить прямой доступ к нужной записи. Поскольку файловые структуры, как и все прочие структуры данных, должны предоставлять возможность включения и удаления записей, их поиска и модификации, то любой из предлагаемых методов организации файлов не должен усложнять эти операции с данными.

Характер файловой структуры и эффективность возможных режи­мов обработки элементов структуры во многом зависят от типа ВЗУ, на котором этот файл предполагается размещать. Последовательные файлы могут создаваться на всех типах внешних носителей, остальные три типа файлов могут создаваться только на носителях с непосредственным доступом: МД, МБ.

Для всех типов файлов возможны три основных режима их обработ­ки: последовательный, произвольный и режим корректировки.

При последовательном режиме обработки записи файла передаются из ВЗУ в ОП и обрабатываются там в той последовательнос­ти, в которой они размещены на носителе. Последовательность обработ­ки при этом никак не зависит от прикладных программ.

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

В режиме корректировки в файл добавляются новые записи, удаляются устаревшие и модифицируются уже имеющиеся. Для осуще­ствления корректировки требуется предварительный поиск нужной записи. При поиске файл может обрабатываться как в последовательном, так и в произвольном режимах.

Эффективность каждого из режимов обработки зависит от типа файла.

10.3. Последовательный файл

При формировании последовательного файла записи располагаются на носителе в порядке их поступления. Каждая очередная запись разме­щается на свободном месте сразу же за последней записью файла. При размещении записей не существует никакой связи между ключом или идентификатором логической записи и ее местоположением на носителе.

Все типы устройства ВП обеспечивают возможность последователь­ной Организации файла. Отдельные устройства предназначены для хране­ния только последовательных файлов. В соответствии с принципом функционирования этих устройств для доступа к отдельным записям

требуется доступ ко всем предыдущим записям файла. К таким устрой­ствам относятся НМЛ, устройства ввода с перфолент и перфокарт, уст­ройства построчной печати. НМД и НМБ допускают использование наряду с последовательным файлом и других типов файлов.

К записям последовательного файла возможен только последова­тельный доступ, осуществляемый через указатель текущей записи, указывающий на ту запись файла, которая читалась или записывалась последней. Операционная система запоминает адрес, по которому была направлена последняя команда записи или чтения, и следующая команда направляется по следующему адресу. Момент завершения просмотра файла обнаруживается по специальному признаку конца файла. В пер-фокарточном файле, например, последняя перфокарта содержит симво­лы / *. Файлы на МЛ и МД содержат концевые метки файла.

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

Рассмотрим более подробно, как осуществляется передача информа­ции из последовательного файла в программу пользователя и наоборот.

В предыдущих параграфах отмечалось, что логические записи при размещении на ВЗУ блокируются, а обмен между ВЗУ и ОП данными проходит через буфер, в котором размещается целиком блок логических записей. При первом выполнении READ-предложения блок записей пере­сылается из ВП в буфер. Затем первая запись блока пересылается в область данных программы. При каждом последующем выполнении опе­рации READ следующая по порядку запись буфера пересылается в об­ласть данных. После того как все записи буфера окажутся исчерпаны, следующее READ-предложение вызывает пересылку нового блока из ВЗУ в буфер. Аналогичные процедуры, только в обратном порядке, производятся при выполнении операции WRITE. При пересылке блока возникает небольшая задержка (порядка нескольких миллисекунд) в выполнении программы. Поэтому в системах, работающих в реальном масштабе времени, используется очередь из нескольких буферов. Осво­бодившийся буфер заполняется в то время, когда происходит обработка записей другого буфера. Затем буферы меняются ролями. При этом за­держка в выполнении программ устраняется.

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

Последовательная обработка эффективна в тех случаях, когда для выполнения всех возможных задач обработки все записи файла обраба­тываются в одной и той же последовательности. Например, при обработ­ке файла "Абитуриенты" для каждого без исключения абитуриента надо иметь определенную совокупность начальных сведений и после каждого экзамена вносить соответствующие корректировки, подсчитывать сред­ний балл и т.д.

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

Произвольная обработка предусматривает передачу при­кладной программе любой записи файла в соответствии с ее ключом. Так как в последовательном файле отсутствует связь между ключом записи и ее местоположением на носителе, то в ОП будут последовательно пере­даваться подряд все записи файла начиная с первой. Просмотр записей будет продолжаться до тех пор, пока не найдется запись с нужным зна­чением ключа, т.е. фактически происходит последовательная обработка файла. Время поиска записи зависит от ее местоположения на носителе; следовательно, произвольная обработка последовательного файла неэф­фективна.

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

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

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