Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответник на госы.docx
Скачиваний:
120
Добавлен:
08.02.2015
Размер:
1.89 Mб
Скачать

4.4. Понятие файла, организация файла, файловой системы. Блок управления файлом.

Файл (англ. file — скоросшиватель) — концепция в вычислительной технике: сущность, позволяющая получить доступ к какому-либо ресурсу вычислительной системы и обладающая рядом признаков:

  • фиксированное имя (последовательность символов, число или что-то иное, однозначно характеризующее файл);

  • определённое логическое представление и соответствующие ему операции чтения/записи.

Может быть любой — от последовательности бит(хотя читаем именно байтами, а точнее словами-группами из байт, по четыре, по восемь, по шестнадцать) до базы данных с произвольной организацией или любым промежуточным вариантом; многомерной базой данных, строго упорядоченной.

Первому случаю соответствуют операции чтения/записи потока и/или массива (то есть последовательные или с доступом по индексу), второму — команды СУБД. Промежуточные варианты — чтение и разбор всевозможных форматов файлов.

В информатике используют следующее определение: файл — поименованная последовательность байтов.

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

На файловую систему в ОС возлагают следующие основные функции по обеспечению:

• Идентификации файлов, посредством связывания их имен с некоторым пространством внешней памяти.

• Распределения внешней памяти между файлами. Для пользователя без- различна информация о местоположении файла на внешнем носителе информации.

• Надежности и отказоустойчивости, так как стоимость информации мо- жет во много раз превышать стоимость компьютера.

• Защиты от несанкционированного доступа.

• Совместного доступа к файлам, чтобы пользователю не приходилось прилагать специальных усилий по обеспечению синхронизации доступа.

• Высокой производительности.

Физическая организация файловой системы

Физическая организация файловой системы на диске показана на рис. 3.10 и включает:

Загрузочный блок - самый первый блок диска (блок 0) содержит ин-формацию, необходимую для первоначальной загрузки ОС. Блок загрузки располагается в начале пространства отведенного под файловую систему, обычно в первом секторе, и содержит программу начальной загрузки, ко-торая считывается в машину при загрузке или инициализации операцион-ной системы. Хотя для запуска системы требуется только один блок за-грузки, каждая файловая система имеет свой (возможно даже пустой) блок загрузки.

Суперблок (super block): Фактически первый блок локальной файловой системы каждого конкретного устройства, который содержит информацию обо всей файловой системе устройства и о точке монтирования файловой системы.

Рис. 3.10. Физическая структура файловой системы

Суперблок состоит из следующих полей:

• размер файловой системы,

• количество свободных блоков в файловой системе,

• список свободных блоков, имеющихся в файловой системе,

• индекс следующего свободного блока в списке свободных блоков,

• размер списка индексов, количество свободных индексов в файловой системе,

• список свободных индексов в файловой системе,

• следующий свободный индекс в списке свободных индексов,

• заблокированные поля для списка свободных блоков и свободных ин- дексов,

• флаг, показывающий, что в суперблок были внесены изменения. I-узлы (i-node): I-узлы представляют собой последовательность блоков,

расположенную за суперблоком, каждый из которых содержит ссылки на просто блоки. В ОС i-узел является также структурой данных в памяти вы-числительной системы, которая необходима ядру для выполнения опера-ций обмена данными с устройствами. Один i-узел может быть использован несколькими процессами. В i-узле хранится вся информация, которая не-обходима ядру для работы с файлом. Дисковые индексные узлы включают в себя следующие поля:

Идентификатор владельца файла. Права собственности разделены между индивидуальным владельцем и "групповым" и тем самым помогают определить круг пользователей, имеющих права доступа к файлу. Супер-пользователь имеет право доступа ко всем файлам в системе.

Тип файла. Файл может быть файлом обычного типа, каталогом, специ-альным файлом, соответствующим устройствам ввода-вывода символами или блоками, а также абстрактным файлом канала (организующим обслу-

живание запросов в порядке поступления, "первым пришел - первым вы-шел"). Вообще говоря, в Unix существуют восемь типов файлов:

• Обычные файлы;

• Каталоги;

• Специальные файлы бит-ориентированных устройств;

• Специальные файлы байт-ориентированных устройств;

• Специальные файлы для работы в сети - сокеты;

• Жесткие ссылки;

• Гибкие ссылки (псевдонимы);

• Каналы (именованные каналы).

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

Календарные сведения, характеризующие работу с файлом: время вне-сения последних изменений в файл, время последнего обращения к файлу, время внесения последних изменений в индекс.

Число указателей на файл, означающее количество имен, используе-мых при поиске файла в иерархии каталогов.

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

Размер файла. Данные в файле адресуются с помощью смещения в бай-тах относительно начала файла, начиная со смещения, равного 0, поэтому размер файла в байтах на 1 больше максимального смещения. Например, если пользователь создает файл и записывает только 1 байт информации по адресу со смещением 1000 от начала файла, размер файла составит 1001 байт. В индексе отсутствует составное имя файла, необходимое для осуще-ствления доступа к файлу.

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

Структура файла обычного типа

Как уже было отмечено, индексный блок включает в себя таблицу адре-сов расположения информации о файле на диске (смотри рис. 3.11).

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

Рис.3.11. Структура файла обычного типа

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

Как уже было отмечено, каждый файл и/или каталог в файловой системе Unix представлен некоторым i-узлом, содержащим указатели на блоки, об-разующие файл. Каждый индексный узел содержит n указателей, причем первые n-3 непосредственно ссылаются на блоки данных файла. Так, если размер блока в файловой системе Unix определен в 512 байт, то для орга-низации файла длиной больше чем (n-3)*512 байт используется n-2 указа-телей i-узла, ссылающийся на косвенный индексный блок из n ссылок

указателей) на блоки данных. Если этого недостаточно для размещения файла, то используется указатель n-1 индексного узла, как указатель на второй косвенный блок. Если же и этого недостаточно, то используется последний n-й указатель на третий косвенный блок. В косвенных блоках возможна такая же система индексной адресации, но без дополнительных косвенных ссылочных блоков, то есть указатели могут быть направлены только на блоки данных.

Посмотрим, какой максимальной длины может достигать файл в файло-вой системе Unix, для чего предположим, что размер блока равен 1 Кбайт, тогда:

Как видно из табл. 3.1, максимальный размер файла в файловой системе Unix при размере дискового блока в 1 Кбайт составляет 16 Гбайт. Несмот-ря на это, для файловой системы Unix время доступа к данным очень мало и не превышает времени, необходимого на "прохождение" через три ин-декса. В то время как в файловой системе FAT время доступа к данным может измеряться прохождением через десятки индексов.

Блок управления файлом представляет собой 36-байтный блок,

pасположенный в памяти машины. Блок разбит на 10 отдельных полей,

описание которых приводится в таблице

ОПИСАНИЕ БЛОКА УПРАВЛЕНИЯ ФАЙЛОМ

------------------------------------------------------------------------

Байты Описание поля

------------------------------------------------------------------------

00 НОМЕР ДИСКОВОДА. Указывается программистом.

0 рабочий дисковод

1 дисковод A

2 дисковод B

3 дисковод С и т.д.

------------------------------------------------------------------------

01-08 ИМЯ ФАЙЛА (который будет создаваться, читаться или куда

будет осуществляться запись). Указывается программистом.

Если имя включает менее восьми символов, поле дополняется

пробелами. Поле может также включать допустимое имя

устройства (разделитель - двоеточие - в этом случае

отбрасывается).

------------------------------------------------------------------------

09-0B РАСШИРЕНИЕ. Указывается программистом. Если расширение

включает менее трех символов, поле дополняется пробелами.

0C-0F НОМЕР ОБРАБАТЫВАЕМОГО БЛОКА. Блок состоит из 128 записей.

Размер записи хранится в байтах 0EH и 0FH блока управления

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

блока файла (номер первого блока файла равен 00). В

процессе операции открытия файла номеру обрабатываемого

блока присваивается значение 0. При операциях

последовательного чтения или записи поиск определенной

записи осуществляется по ее номеру (20Н-ый байт FCB) и

номеру обрабатываемого блока (т.е. запись находится внутри

обрабатываемого блока).

------------------------------------------------------------------------

0E-0F РАЗМЕР ЛОГИЧЕСКОЙ ЗАПИСИ. В процессе операции открытия

файла в поле записывается значение 80Н.

------------------------------------------------------------------------

10-13 РАЗМЕР ФАЙЛА в байтах. В процессе открытия файла его

размер выбирается из директория и помещается в данное поле,

причем младшее слово записывается в байтах 10Н-11Н, а

старшее - в байтах 12Н-13Н. Программист не должен изменять

это значение.

------------------------------------------------------------------------

14-15 ДАТА создания или последней коppектиpовки файла. Значение

даты также выбирается из директория в процессе открытия

файла. Программист не должен изменять данное значение.

Байт: |<-------- 15H --------->| |<-------- 14H ------->|

Бит: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

|<--- Год от 1980 --->| |<- Месяц -->| |<-- День --->|

------------------------------------------------------------------------

16-1F РЕЗЕРВИРУЕТСЯ для системного пользования. Программист не

должен коppектиpовать значение этого поля.

------------------------------------------------------------------------

20 ОТНОСИТЕЛЬНЫЙ НОМЕР обрабатываемой записи. В поле находится

относительный номер записи (0-127) обрабатываемого блока

(байты 0CH-0DH). В процессе открытия файла поле не

обрабатывается.

------------------------------------------------------------------------

21-24 КЛЮЧ. Это поле используется для файлов прямой организации,

когда записи нумеруются в соответствии с их позицией по

отношению к первой записи файла. Ключ первой записи равен 0