Представление данных на внешних носителях
Граф
Дерево или иерархияявляется примером нелинейной структуры. В ней элемент каждого уровня (за исключением самого верхнего) входит в один и только один элемент следующего (более высокого) уровня. Элемент самого высокого уровня называется корнем, а самого нижнего уровня - листьями.
Дерево
Отдельные элементы могут быть однородными или нет. Примером подобной организации служат файловые структуры на внешних запоминающих устройствах компьютера.
В иерархической структуре адрес каждого элемента определяется путем доступа (маршрутом), ведущим от вершины структуры к данному элементу.
Достоинства иерархических структур данных:
ü они не создают проблем с обновлением данных;
ü их легко развивать путем создания новых уровней.
Недостатки иерархических структур:
- относительная трудоемкость записи адреса элемента данных;
- упорядочение по форме сложнее, чем линейные и табличные структуры.
Часто методы упорядочения в таких структурах основываются на предварительной индексации – присвоению каждому элементу данных уникального индекса, который можно использовать при поиске, сортировке и т.п. После такой индексации данные легко разыскиваются по двоичному коду индекса. Пример, книга имеет иерархическую структуру, где каждый уровень и каждый элемент имеет индекс. Оглавление является списком индексов. Поэтому найти нужную страницу можно, не прибегая к просмотру всего содержимого.
Часто отношения между данными представляются в виде графа -совокупности точек и линий, в которой каждая линия соединяет две точки. В информатике точка получает смысл элемента структуры (системы, данных и пр.), а линии - смысл отношения между элементами.
f f 1
2 d 3 4 a
a c e e d
1 4 5 2
b g c b
а) б)
Примеры графов: а) неориентированный; б) ориентированный.
По рассмотренной ранее классификации граф является упорядоченной, нелинейной, неоднородной структурой. Понятие графа благодаря его наглядности и высокой общности в информатике выступает в качестве основного средства описания структур данных, систем, порядка выполнения действий. Примером может служить блок-схема программы.
Таблица
Она относится к упорядоченной, линейной, неоднородной структуре. Отдельная строка таблицы называется записью (логической записью).
Логическая запись- поименованная совокупность элементарных данных, имеющая смысловую завершенность.
Смысловая завершенность означает, что данные характеризуют некоторую систему или объект, а не являются разрозненными по смыслу. Запись в целом отражает различные свойства (атрибуты) системы.
Логическая запись имеет многоуровневую структуру. Элементами самого нижнего уровня являются элементарные данные - символы, числа, логические данные. Совокупности элементарных данных, имеющих определенный смысл, но не обладающих смысловой завершенностью, образуют поля, каждое из которых соответствует одному атрибуту системы. Поле характеризуется типом элементарных данных, из которых оно строится, а также информационным размером (т.е. указанием количества байт, которое отводится для представления данного поля в записи).
Поля записи связаны между собой. Связи между ними могут носить функциональный характер (значение одного поля посредством некоторого преобразования (правила) определяет значение другого; например, две первые цифры поля «Номер зачетной книжки» равны двум последним поля «Год поступления»), либо связи могут быть причинно-следственными (например, поле «Год рождения» определяется значением поля «Фамилия»).
Логические записи сами могут объединяться и образовывать структуры, которые определяются моделью данных. Например, совокупность записей для всех студентов, обучающихся в одной группе, образуют массив, который называется базой данных (реляционного (описательного) типа). Обращение к базе при сохранении и использовании осуществляется по ее идентификатору (ГРУППА 101). Возможны и более высокие структурные объединения. Например, структуры, элементами которых будут базы данных (объединение баз данных по всем группам факультета). Программные системы, позволяющие создавать и использовать базы данных, называются системами управления базами данных (СУБД).
Логическая запись имеет собственный идентификатор, по которому можно обратиться к записи в целом (например, порядковый номер студента в группе). Поля также имеют идентификаторы, по которым они становятся доступны для просмотра или изменения значения. Идентификатор поля строится из идентификатора базы, идентификатора записи и собственно имени поля, например, ГРУППА_101(13). Фамилия.
Таким образом, существует иерархическая многоуровневая структура данных. Каждый выше расположенный уровень содержит низлежащие в качестве составных элементов. В этой иерархии запись является первым элементом структуры, обладающим смысловой завершенностью и, следовательно, самостоятельностью. Более высокие структуры образуются повторением записей с одинаковой и неизменной структурой.
Структура информационного массива определяется один раз на этапе его создания и в процессе использования уже не изменяется. В языках программирования это достигается описанием структуры в блоке описаний программы; в СУБД - установлением перечня и последовательности полей записи на начальном этапе создания базы данных. Всякое изменение структуры (например, введение дополнительного поля записи или удаление имеющегося) эквивалентно созданию новой структуры. Что же касается количества записей в структурированном информационном массиве, то при представлении его в ОЗУ компьютера возможны две ситуации: либо под него выделяется область ОЗУ фиксированного размера, либо размер области при необходимости может меняться.
Многоуровневая иерархическая структура данных:
В первом варианте в начале работы программы происходит резервирование областей ОЗУ для хранения информационных массивов. С этой целью в тексте программы указывается, какого типа и размера информационные массивы будут в дальнейшем использованы. В процессе выполнения программы могут меняться значения элементов информационного массива, но не его размер. По этой причине в случае, если размер (число элементов) массива не известен заранее (например, количество учеников в классе), приходится осуществлять избыточное резервирование, что, безусловно, приводит к нерациональному использованию памяти компьютера. Именно таким образом происходит резервирование памяти при описании массивов и других структурных данных в языке PASCAL. Отсутствие возможностей динамического описания массивов (т.е. введение новых массивов или изменение размеров имеющихся в процессе выполнения программы) считается одним из существенных недостатков языка программирования.
При хранении данных в больших массивах памяти решаются две задачи:
1) как сохранить данные в наиболее компактном виде;
2) как обеспечить к ним удобный и быстрый доступ (если доступ не обеспечен, то это не хранение).
Хранить данные в мелких единицах, таких как бит или байт, не удобно и не выгодно – адресные данные будут занимать слишком большой объем памяти.
Использование в качестве единиц хранения килобайт, мегабайт приведет к не рациональному использованию памяти – данные будут не полностью занимать отведенное для хранения пространство.
Поэтому в качестве единицы хранения данных принят объект переменной длины, называемый файлом.
Основными информационными единицами при сохранении данных на внешних носителях являются:
• логическая запись;
• физическая запись;
• файл;
• каталог (папка).
Логическая запись при хранении на внешних носителях является той же информационной единицей, что и при хранении в ОЗУ. Отличие состоит в том, что при хранении на внешнем носителе запись является минимальным и неделимым элементом представления данных. Это означает, что после размещения записи на носителе отсутствует доступ к ее отдельным элементам, а операции переноса на носитель и считывание с него производятся целиком со всей записью. Поскольку обработка записей при их хранении не происходит, не требуется и различия типов данных, т. е. запись может состоять из одного элементарного данного, группы данных или содержать структурированные данные. Единственной характеристикой отдельной записи является ее длина, а допустимыми операциями – перенос на носитель и считывание с него.
После размещения данных на носителе они превращаются в физическую запись.
Физическая запись– элемент поверхности носителя, на котором в соответствии с физическими принципами функционирования носителя размещаются данные, составляющие логическую запись.
Объединение физических записей образует файл.
Файл- определенным образом оформленная совокупность физических записей, рассматриваемая как единое целое и имеющая описание в системе хранения информации.
Оформленная совокупность записей означает наличие у файла имени (идентификатора) и признака конца файла EOF (End-Of-File). По имени файл отыскивается на носителе, а от признака EOF устанавливается ближайшее свободное место, в которое можно вести запись следующего файла, а при пересылке данных с носителя в ОЗУ по нему определяется граница информационного массива. Имя файла фактически является адресом данных. Кроме функций, связанных с адресацией, имя файла может хранить и сведения о типе данных, заключенных в нем. Требование уникальности имени очевидно – без этого невозможно гарантировать однозначность доступа к данным.
Как единое целое означает, что при обращении к файлу отсутствует доступ к отдельным его записям
Описание в системе означает сохранение на носителе не только самих файлов, но и сведений о них и их размещении. Эти сведения используются в операциях с файлами. Любые файлы содержат данные, закодированные с помощью двоичного алфавита. Однако способы кодирования и назначение файлов могут быть различными. По этой причине файлам приписывается еще одна характеристика – тип. Тип входит в идентификатор файла и указывается в виде расширения имени, например, Глава_7.doc, proba.pas или calc.exe. Принципиально различными по типам следует считать программные (исполняемые) файлы и файлы данных.
Программные файлы содержат тексты программ в машинном коде; они могут быть загружены в ОЗУ и исполняться. Программные файлы имеют расширение com или ехе; к этой же категории относятся так называемые командные файлы (bath – файлы; расширение .bat), содержащие в текстовом формате команды MS DOS, которые могут последовательно выполняться как программа.
Файлы данных формируются в результате работы какой-либо программы; они не являются исполняемыми и служат только в качестве хранилищ данных. Многие программные системы при формировании файлов данных приписывают им вполне определенные расширения – по ним можно установить, какой программой файл создан. Например, расширения txt, doc, rtf имеют файлы, подготовленные в текстовых редакторах, bmpjpg, gif, cdr-графические файлы, pas, bas, с – файлы с текстами программ и т. д. Тип файла, как и его собственное имя, являются частью описания файла и сохраняются системой, ведающей размещением файлов на носителе.
Самым верхним уровнем представления данных на внешних носителях являются структуры файлов - каталоги (в операционных системах с Windows-95 и более поздних принят термин папки) – в них помещаются файлы, объединенные каким-то признаком, например, принадлежности к одной программной системе или одной информационной базе. Как правило, каталоги допускают образование вложенных структур, т.е. подкаталогов (или, что то же самое, каталогов в каталогах). Каталоги образуют иерархическую структуру, поэтому правомочно использование термина дерево каталогов. При этом каталог, располагающийся на вершине иерархии, называется корневым.
Создает и поддерживает файловые структуры, определяет максимальный уровень вложенности каталогов, а также производит все операции с файлами и каталогами часть операционной системы компьютера – файловая система.
Таким образом, при обращении к внешней памяти компьютера за определенным файлом перед его именем необходимо указывать путь к нему – логическое имя диска; после которого следует двоеточие и обратная косая черта; далее имя корневого каталога и обратная косая черта; далее аналогичным образом все подкаталоги до того, где хранится нужный файл; последним в перечне пути будет имя файла – после последней обратной косой черты указывается полное имя файла.
Итак, если после имени МД стоит :\ – двоеточие и обратная косая черта, то путь к файлу начинается с корневого каталога; например C:\ означает, что используется корневой каталог диска С. За именем корневого каталога может следовать одно или несколько имен каталогов нижнего уровня. Перед каждым из них должна быть \ – обратная косая черта.
Устройства, выполняющие операции, связанные с сохранением и считыванием данных на внешнем материальном носителе, называются внешними запоминающими устройствами(ВЗУ) или устройствами внешней памяти.
Любое ВЗУ реализует один из двух возможных принципов размещения информации – последовательный доступ или прямой доступ. Первый вариант используется при сохранении информации на ленточных носителях, например, магнитной или бумажной ленте – в этом случае записи размещаются одна за другой, т.е. последовательно. Считывание записей также производится последовательно, и для того, чтобы отыскать нужную запись, требует просмотреть все предыдущие, подобно поиску кадра на кинопленке.
Для реализации прямого доступа на носителе должны быть обозначены (пронумерованы) области для записи информации – такие области называются блоками. Блок, подобно ячейке ОЗУ, служит контейнером для размещения данных. Обратиться к данным для записи-считывания можно по номеру (идентификатору) блока. Операция разбиения поверхности носителя на блоки называется форматированием – она производится в обязательном порядке и предшествует использованию носителя. Блок обычно имеет строго определенную для данного носителя информационную емкость, например, для сменного магнитного диска емкостью 1,44 Мб - 512 байт. Блок может содержать только целое число физических записей - из-за этого часть блока длиной меньше, чем размер записи, оказывается пустой и не используется. Например, при длине записей по 150 байт в один блок размером 512 байт поместятся 3 записи, а 62 байта останутся свободными. На носителях большой емкости, например, жестких магнитных дисках (винчестерах) блоки объединяются в группы – кластеры (например, на современных компьютерах IBM кластер охватывает 8 блоков) – запись файлов производится в них и применяется адресация по номерам кластеров (это уменьшает общее количество адресов и, следовательно, ускоряет поиск и доступ к файлу).
На дисковых носителях имена файлов хранятся отдельно от физических записей. В определенном месте диска при его форматировании создается специальная область, в которой располагается таблица размещения файлов –FAT (File Allocation Table). В эту таблицу заносятся имена и атрибуты файлов (дата и время создания, размер, атрибуты доступа), а также номер кластера, с которого начинается размещение файла. Таким образом, обращение к файлу происходит в два этапа: сначала с помощью файловой таблицы по имени файла находится номер кластера, а затем считывающее – записывающая головка ВЗУ устанавливается над ним и производит операции. Содержание файловой таблицы можно просмотреть с помощью команд операционной системы.
При обмене между ВЗУ и ОЗУ данные пересылаются не отдельными записями, а блоками, размер которых совпадает с размером блока ВЗУ -512 байт. Для организации обмена в ОЗУ выделяется специальная область – буфер обмена; размер буфера устанавливается при конфигурировании операционной системы компьютера. При пересылке из ОЗУ в ВЗУ данные (записи, входящие в файл) сначала из ОЗУ пересылаются в буфер, пока он не заполнится, затем целым блоком отправляются в подготовленный блок ВЗУ. Считывание идет обратным путем. Обмен может происходить минуя центральный процессор – в этом случае одновременно с обменом может производиться обработка данных (поступивших или иных).
Следует заметить, что, хотя организация прямого доступа к данным на ВЗУ весьма напоминает организацию произвольного доступа к ячейкам ОЗУ (то и другое производится по адресу; время доступа не зависит от адреса), между этими способами имеется различие. Из ячеек ОЗУ могут быть извлечены отдельные данные (например, элементы полей логической записи); кроме того, ОЗУ непосредственно связано с устройством обработки данных (центральным процессором). При желании использовать данные с ВЗУ, во-первых, сначала весь информационный массив должен быть перенесен в ОЗУ (с ВЗУ никакой обработки не ведется); во-вторых, нужные данные в этом массиве отыскиваются последовательным образом.