Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СППО-Вопросы к экзамену-2014 (Восстановлен).doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆
  1. Логическая организация файлов: файлы с последовательной организацией и индексированные файлы. Поиск на внешних устройствах, b-деревья: определение и построение, выполнение операций. Примеры.

Логическая организация файлов. Логическая организация файлов – это организация данных, размещенных на внешних устройствах, с точки зрения прикладной программы, работающей с этими данными, выполняющей операции над ними. Простейший способ организации – файл представляет собой неструктурированную последовательность байтов. В этом случае программу при выполнении операций над файлами «не интересует» содержимое файла. Такой подход в ОС UNIX и Windows. Плюсы: обеспечивает максимальную простоту файловой системы и файловая система может обеспечить считывание данных «побайтно» или блоками заданного размера. «Смысл» байтам «присваивается» конкретными программами, создающими файлы и обрабатывающими размещенную в них информацию. Существует несколько способов организации файлов: файлы с последовательной организацией, файлы с прямой организацией, файлы с индексной организацией (прямой доступ по ключу) и библиотечные файлы. Еще один способ организации файлов – древовидная организация, при которой файл представляет собой дерево записей, упорядоченных по ключу, записанному в определенной фиксированной позиции каждой записи. Такой способ организации файлов обеспечивает быстрый поиск данных по заданному ключу.

При работе на мэйнфреймах способ доступа к файлу указывается при его создании в описании файла, что позволяет ОС применять различные методы хранения на внешних устройствах файлов разных классов (Принципиальное отличие от UNIX и Windows).

Последовательная организация. При последовательной организации файл представляет собой «массив», в котором в каждый момент содержится определенное число записей (от 0 и более): R0 R1 ... R(i-1) Ri R(i+1) ... Rn. Для того чтобы прочитать запись Ri необходимо прочитать все предшествующие ей записи, т.е. запись Ri может быть прочитана только после записи Ri–1. Записи в файле могут иметь переменный размер. Тогда каждой записи должно предшествовать поле, содержащее ее длину: L0 R0 L1 R1 ... L(i-1) R(i-1) Li Ri L(i+1) R(i+1) ... Ln Rn. Поле длины может располагаться и после записи, тогда допустимо считывание записей и при «обратном» – с конца – просмотре файла. Файлы с такой организацией могут размещаться на любых внешних устройствах. Эта организация удобна, когда обрабатывается весь массив записей. Если необходимо обработать только определенные записи, то этот способ неудобен, т.к. в худшем случае для поиска нужной записи необходимо выполнить n сравнений.

Файлы с прямой и индексной организацией. Многие системы допускают возможность прямого доступа к записи в файле по ее номеру. Минус в том, что программист должен сам «помнить» номера записей, содержащих нужную информацию. Для этого он должен построить специальный файл, содержащий эту информацию, причем записи в этом файле могут быть упорядочены для ускорения поиска нужной информации. Обычно ускорение происходит еще и за счет того, что записи вспомогательного значительно короче, чем записи основного файла, содержащего полную информацию. Если система сама берет на себя задачу организации таких вспомогательных файлов (таблиц), то говорят об индексной организации файлов. Файлы с индексной организацией имеют более сложную организацию: кроме основного файла, представляющего собой массив записей, строится вспомогательная таблица (индекс), содержащая ключевую информацию для поиска, а также данные о местоположении записи в основном файле (смещение начала файла); кроме того, если записи могут иметь переменную длину, в каждой строке (элементе, записи) индекса содержится и размер записи. Записи в основном файле не упорядочиваются, хранятся в нем в том порядке, в каком были созданы. Записи в индексе обычно упорядочиваются для ускорения поиска. Ключи могут быть составными, например, могут состоять из фамилии, имени и отчества. Ключи могут быть и внешними по отношению к соответствующей записи. Индексы могут быть многоуровневыми. Строится «индекс для индекса»: индекс второго уровня. Для его создания таблица индексов первого уровня разбивается на блоки, содержащие определенное количество элементов. Каждый блок идентифицируется ключом (обычно это ключ последнего элемента в блоке). Тогда индексная организация файла с индексами двух уровней может выглядеть следующим образом.