1.7. Особенности хранения данных
в ЭВМ
1.7.1. Понятие о файлах и файловых
системах.
Хранение данных в ЭВМ предполагает использование файлов. С точки
зрения прикладной программы, файл - это именованная область внешней
памяти, в которую можно записывать и из которой можно считывать
данные. Правила именования файлов, способ доступа к данным,
хранящимся в файле, и структура этих данных зависят от конкретной
системы управления файлами и , возможно от типа файла. Система
управления файлами (файловая система) принимает на себя
распределение внешней памяти, отображение имен файлов в
соответствующие адреса во внешней памяти и обеспечение доступа к
данным.
1.7.2. Особенности работы с данными на внешних носителях.
Исторически сложилось, что первыми развитыми устройствами внешней
памяти являлись магнитные диски с подвижными головками. Такие
магнитные диски представляют собой пакеты магнитных пластин
(поверхностей), между которыми на одном рычаге двигается пакет
магнитных головок. Шаг движения пакета головок является дискретным.
И каждому положению пакета головок соответствует цилиндр магнитного
диска. На каждой поверхности цилиндр «высекает» дорожку, так что
каждая поверхность содержит число магнитных дорожек, равное числу
цилиндров. При разметке магнитного диска каждая дорожка размечается
на одно и то же количество блоков таким образом, что в каждый блок
можно записать по максимуму одно и тоже число байтов. Таким образом,
для проведения обмена с магнитным диском на уровне аппаратуры нужно
указать номер цилиндра, номер поверхности, номер блока на
соответствующей дорожке и число байтов, которое нужно записать или
прочитать от начала этого блока. Однако, эта возможность
обмениваться с магнитными дисками порциями меньше объема блока, в
настоящее время не используется в файловых системах. Это связано с
двумя обстоятельствами. Во-первых, при выполнении обмена с диском
аппаратура выполняет три основных действия: подвод головок к нужному
цилиндру, поиск на дорожке нужного блока и собственно обмен с этим
блоком. Из всех этих действий в среднем наибольшее время занимает
первое. Поэтому существенный выигрыш в суммарном времени обмена за
счет считывания или записывания только части блока получить
практически невозможно. Во-вторых, для того, чтобы работать с
частями блоков, файловая система должна обеспечить соответствующего
размера буфера оперативной памяти, что существенно усложняет
распределение оперативной памяти. В некоторых файловых системах
базовый уровень доступен пользователю, но более часто прикрывается
некоторым более высоким уровнем, стандартным для пользователей.
Распространены два основных подхода. При первом подходе,
пользователи представляют файл как последовательность записей.
Каждая запись - это последовательность байтов постоянного или
переменного размера. Записи можно читать или записывать
последовательно или позиционировать файл на запись с указанным
номером. Второй подход состоит в том, что любой файл представляется
как последовательность байтов. Из файла можно прочитать указанное
число байтов, либо начиная с его начала, либо предварительно
произведя его позиционирование на байт с указанным номером. Для
обоих подходов можно обеспечить набор преобразующих функций,
приводящих представление файла к некоторому другому виду.
Все современные файловые системы поддерживают многоуровневое
именование файлов за счет поддержания во внешней памяти
дополнительных файлов со специальной структурой каталогов. Каждый
каталог содержит имена каталогов и файлов, содержащихся в данном
каталоге. Таким образом, полное имя файла состоит из списка имен
каталогов плюс имя файла в каталоге, непосредственно содержащем
данный файл. Разница между способами именования файлов в разных
файловых системах состоит в том, с чего начинается эта цепочка имен.
Поскольку файловые системы являются общим хранилищем файлов,
принадлежащих, вообще говоря, разным пользователям, целесообразно,
чтобы системы управления файлами обеспечивали авторизацию доступа к
файлам (такие файловые системы называют многопользовательскими).
Прежде всего, конечно, файлы применяются для хранения текстовых
данных: документов, текстов программ и т.д. Такие файлы обычно
образуются и модифицируются с помощью различных текстовых
редакторов. Структура текстовых файлов обычно очень проста: это либо
последовательность записей, содержащих строки текста, либо
последовательность байтов, среди которых встречаются специальные
символы.
Файлы с текстами программ используются как входные тексты
компиляторов, которые в свою очередь формируют файлы, содержащие
объектные модули. С точки зрения файловой системы, объектные файлы
также обладают очень простой структурой. Они являются
последовательностью записей или байтов.
Таким образом, файловые системы обычно обеспечивают хранение слабо
структурированной информации, оставляя дальнейшую структуризацию
прикладным программам, в том числе и СУБД. Если оперировать
терминами, принятыми в теории МД и БД, то фактически файловые
системы работают на уровне модели плоских файлов. Более того,
эффективная реализация даже этой простейшей модели, как будет
показано в главе 6, предполагает реализацию некоторых дополнительных
механизмов, прежде всего связанных с индексацией данных.
|