sonyps4.ru

Средство просмотра иерархической структуры файловой системы. Управление файлами, типы файлов, файловая система, атрибуты файла

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

Граф, описывающий иерархию каталогов, может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог (Рис. 18, в), и сеть - если файл может входить сразу в несколько каталогов (Рис. 18, б). Например, в MS-DOS и Windows каталоги образуют древовидную структуру, а в UNIX - сетевую. Каталог самого верхнего уровня называется корневым каталогом, или корнем (root).

Рис. 18. Иерархия файловых систем: а)- одноуровневая; б)- сетевая; в)- древовидная

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

Частным случаем иерархической структуры является одноуровневая организация, когда все файлы входят в один корневой каталог Рис. 18,а.

Имена файлов

Все типы файлов имеют символьные имена. В иерархически организованных файловых системах обычно используются три типа имен файлов: простые, составные и относительные.

Простое , или короткое, символьное имя идентифицирует файл в пределах одного каталога. Простые имена присваивают файлам пользователи и программисты. В файловой системе FAT длина имен вначале ограничивались схемой 8.3 (8 символов - собственно имя, 3 символа - расширение имени), это имя файла кодируется кодами ASCII. В современных файловых системах такое имя называется коротким. Однако пользователю гораздо удобнее работать с длинными именами, поскольку они позволяют дать файлам легко запоминающиеся названия, ясно говорящие о том, что содержится в этом файле. Поэтому современные файловые системы поддерживают длинные символьные имена файлов. Имя файла может содержать до 255 символов. Длинное имя кодируется кодом UNICODE. Примеры простых имен файлов: ul.doc; task.exe, лабораторная работа.doc.


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

Полное имя представляет собой цепочку простых символьных имен всех каталогов, через которые проходит путь от корневого каталога до данного файла. Таким образом, полное имя является составным, в котором простые имена отделены друг от друга принятым в ОС разделителем. На Рис.20 в) два файла имеют простое имя main.exe, однако их составные имена \depart\main.ехе и \user\anna\main.exe различаются.

Файл может быть идентифицирован также относительным именем. Относительное имя файла определяется через понятие «текущий каталог». Для каждого пользователя в каждый момент времени один из каталогов файловой системы является текущим, причем этот каталог выбирается самим пользователем. Файловая система фиксирует имя текущего каталога, чтобы затем использовать его как дополнение к относительным именам для образования полного имени файла. При использовании относительных имен пользователь идентифицирует файл цепочкой имен каталогов, через которые проходит маршрут от текущего каталога до данного файла.


^ Иерархическая файловая система.

Все файлы файловой структуры строятся в дерево. Корнем дерева является так называемый корень файловой системы. Если узел дерева является листом, то это файл, который может содержать либо данные, либо являться каталогом. Узлы, отличные от листьев являются каталогами. Соответственно, именование в такой системе может происходить разными способами. Первый - именование фала относительно ближайшего каталога. Если мы посмотрим файлы, которые являются ближайшими для каталога F0 - это файл F1 (он тоже является каталогом) и файл F2. То есть если мы каким-то образом подразумеваем (системным образом), что работаем в каталоге F0, то можем обращаться к файлам в данном каталоге только по их именам (F1 и F2). Соответственно, на одном уровне имена должны быть уникальны (в пределах одного каталога). Так как мы имеем структуру дерева, то можно говорить о полном имени файла, которое составляет путь от корня дерева, до файла. Например, путь к файлу F3 будет выглядеть, как “/F0/F1/F3”. В одно и то же время мы можем работать как с полным, так и с коротким именем файла. А так как по свойству дерева путь к каждому листу однозначен, то мы сразу решаем проблему унификации имен.

Первой такая организация появилась в ОС Multics, которая разрабатывалась в университете Беркли в конце 60х годов. Это было давно, но такое хорошее и красивое решение с тех пор стало появляться во многих ОС.

Соответственно с иерархией каждому файлу можно привязывать некоторые атрибуты, связанные с правами доступа, этими атрибутами могут обладать как файлы, так и каталоги. То есть структурная организация такой файловой системы хороша для многопользовательской системы. Ибо с одной стороны нет проблемы именования, а с другой стороны такая система может сильно и хорошо наращиваться.

Защита данных в ОС

^ Идентификация - возможность ОС распознать определенного пользователя и выполнять в зависимости от определения нужные действия по защите данных и т.п. Например, MS DOS - однопользовательская ОС. Существуют системы, которые позволяют регистрировать пользователей, но эти пользователи никак между собой не связаны (примером могут являться некоторые ОС фирмы IBM для мейнфреймов), а значит их нельзя организовать в группы. Но было бы удобно выделить в отдельную группу - лабораторию, кафедру, учебную группу студентов и т.п.

В иерархической организации пользователей есть понятие группы. А в группе есть реальные пользователи.

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

Раз пользователи разделены на группе, то по аналогии с разделением между конкретными пользователями, можно разделять ресурсы с группой (то есть пользователь может сделать свои файлы доступными для всех членов какой-то группы.

И такое деление на группы может быть также многоуровневым с соответствующим распределением прав и возможностей.

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

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

Лекция 7

ОС Unix

Сегодня мы с вами переходим к началу рассмотрения ОС Unix, поскольку многие решения, которые принимаются в ОС мы будем рассматривать на примере этой ОС.

В середине 60х годов в Bell лаборатории фирмы AT&T проводились исследования и разработка одной из первых ОС в современном ее понимании - ОС Multics. Это ОС разделения времени, многопользовательская, а также в этой системе были предложены фактически решения по организации файловых систем. В частности, была предложена иерархическая древообразная файловая система. Это, ориентировочно, 1965 год. От этой разработки через некоторое время получила начало ОС Unix. Одна из предысторий говорит, что на фирме был ненужный компьютер PDP8 с очень малоразвитым программным обеспечением. А требовалась машина, которая бы позволяла организовывать удобную работу пользователя, в частности, удобный ввод информации. И известная группа людей - Томпсон и Ритчи занялись разработкой на этой машине новой ОС. Другой вариант был таков, что они занимались реализацией новой игры, а те средства, которые имелись были недоступны или неудобны, и они решили поиграться с этой машиной. Результатом стало появление ОС Unix. Особенностью этой системой являлось то, что она являлась первой системной программой написанной на языке, отличном от языка ассемблера. Дляцели написания этого системного программного обеспечения, в частности, ОС Unix, также параллельно проводились работы, которые начинались от языка BCPL, из него был образован язык B, который оперировал с машинными словами, далее абстракция машинных слов - BN и, наконец, язык “C”. И после 1973 года ОС Unix была переписана окончательно на язык “С”. В результате появилась ОС, 90% кода которой было написано на языке высокого уровня, языке, не зависящем от архитектуры машины и системы команд, а 10% было написанона ассемблере, в эти 10% входят наиболее критичные к реализации по времени части ядра ОС.

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

Из таких конструктивных свойств следует отметить то, что “С” сильно построен на работе с указателями. Когда мы пишем программу на ассемблере, то очень часто для достижения требуемого результата нам нужно манипулировать с адресами. Возможность оперировать указателями - первое свойство “С”, которое позволяет эффективно транслировать программу на этом языке в машинный код.

Если мы посмотрим на нормальную программу на ассемблере, то заметим следующее - при программировании каких-то блоков мы часто используем побочный эффект (например, во время вычисления выражения мы можем получать и куда-то откладывать промежуточные результаты), также можно поступать и в языке “С”. Таким образом, понятие выражения в “С” было гораздо шире, чем в других языках того времени. И в выражениях, кроме новых операций, таких как работа с указателем, смещения сдвиги и т.п., появилась принципиально новая операция - операция присваивания. Почему она новая? Потому что во многих языках до “С”, а также и после него не было операции присваивания - был оператор присваивания. Разница в одном - если мы имеем оператор присваивания, во-первых, требуется, чтобы в правой части такой операции уже не было (мы не можем использовать побочный эффект), и второе - левая часть оператора присваивания - это некоторая ссылка на единичную область памяти. Внесение оператора присваивания внутрь выражения позволило решать проблему побочных эффектов (значения подвыражений, которые могут быть использованы во вне - а они в свою очередь сокращают число обменов с ОЗУ), а это средство эффективности.

Эти и, наверное, только эти свойства языка определили его живучесть, пригодность для программирования системных компонентов и возможность оптимальной трансляции кода различных машин. С профессиональной точки зрения, язык “С” - ужасный язык. Основным требованием, которое предъявляется сегодня к языкам программирования является безопасность программирования. То есть средства языка должны минимизировать количество возможных ошибок.

И свойствам таких языков относится следующее:


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

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

    3. Контроль за взаимодействием модулей. Суть этого свойства в том, что много ошибок появляется в том случае, что если функция продекларировала один набор параметров, а обращение к ней идет с другим набором, причем различие может быть как в количестве, так и в типах. Язык “С”, несмотря даже на версию ANSI C, которая пыталась отчасти решить эту проблему - всегда остается возможность обмануть функцию и передать ей параметр другого типа, вместо шести параметров можно передать один параметр.
Вот по этим трем позициям язык “С” является нехорошим языком. Но тем не менее это “менталитет” программистов, который заключается в том, что почему-то наиболее живучими языками являются концептуально плохие языки, к таким языкам помимо “С” можно добавить еще Фортран.

Итак, 1973 год. Появление ОС Unix, причем она уже была написана на языке “С”. Какими основными свойствами уже тогда обладала эта ОС. Первое свойство - концепция файлов, основным объектом, которым оперирует ОС - это файл. Файл - это набор данных, файл с точки зрения Unix - это внешнее устройство, файл - это каталог, который содержит информацию о принадлежащих ему файлах и т.д. На сегодняшний день стратегия файлов распространена в Unix’е практически на все. Второе свойство, которое является продолжением или следствием первого, это то, что ОС построена очень интересно. В отличии от предыдущих ОС, где каждая команда была зашита внутрь, и эту команду нельзя было модифицировать, убрать из системы, создать новую команду - вUnix’е проблемы команд пользователя решены очень элегантно за счет двух моментов. Первый - Unix декларирует стандартный интерфейс передачи параметров извне внутрь процесса. Второй - все команды реализованы в виде файлов, это означает, что можно свободно добавлять новые команды в систему, которые будут доступны либо мне, либо группе пользователей, либо всем, а можно удалять команды.

Давайте начнем рассмотрение конкретных свойств ОС Unix. Первое, что мы будем рассматривать, это файловая система, организация работы с файлами.

Файловая система Unix

Файловая система Unix, это иерархическая, многопользовательская файловая система. Ее можно представить в виде дерева:

В корне дерева находится “корневой каталог”, узлами, отличными от листьев дерева являются каталоги. Листьями могут являться: файлы (в традиционном понимании - именованные наборы данных), пустые каталоги (каталоги, с которыми не ассоциировано ни одного файла). В системе определено понятие имени файла - это имя, которое ассоциировано с набором данных в рамках каталога, которому принадлежит этот файл. Например, каталогу D1 принадлежат файлы: N1, N2, N3; каталогу D0 принадлежат: N4, N5 и D1, последний тоже является файлом, но специальный. Итак, имя - это имя, которое ассоциировано снабором данных в контексте принадлежности каталогу. Кроме того, есть понятие полного имени. Полное имя - это уникальный путь от корня файловой системы до конкретного файла. Первый символ имени - это корневой каталог “/”, а далее через наклонную черту перечислены все каталоги, пока не дойдет до нужного файла. Например, файл N3 имеет полное имя “/D0/D1/N3”. За счет того, что такой путь для каждого файла в любом каталоге уникален, то мы можем именовать одинаковыми именами файлы в различных каталогах. Например, имя N4 присутствует в каталогах D0 и D4, но это разные файлы, так как полные пути к ним различны (/D4/N4, /D0/N4).

Замечание. На самом деле файловая система Unix не является древообразной. Все то, что говорилось выше - правильно, но в системе имеется возможность нарушения красивой и удобной иерархии в виде дерева, так как имеется возможность ассоциировать несколько имен с одним и тем же содержимым файла. И могут возникать такие ситуации, когда, например, “/D4/N3” и “/D0/D1/N1” являются, по сути дела, одним файлом с двумя именами.

Еще одно замечание. В ОС Unix используется трехуровневая иерархия пользователей:

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

1) Владелец файла. Этот атрибут связан с одним конкретным пользователем, который автоматически назначается системой владельцем файла. Владельцем можно стать по умолчанию, создав файл, а также есть команда, которая позволяет менять владельца файла.

2) Защита доступа к файлу. Доступ к каждому файлу (от файла ядра системы до обыкновенного текстового файла) лимитируется по трем категориям:

Права владельца (что может делать владелец с этим файлом, в общем случае - не обязательно все, что угодно);

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

Все остальные пользователи системы;

По этим трем категориям регламентируются три действия: чтение из файла, запись в файл и исполнение файла (в мнемонике системы R,W,X, соответственно). В каждом файле по этим трем категориям определено - какой пользователь может читать, какой писать, а кто может запускать его в качестве процесса.

Это некоторые предварительные данные по файловой системе. Теперь давайте рассмотрим структуру файловой системы на диске.

Сначала определим некоторые понятия:

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

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

В любой системе принято разбиение пространства ВЗУ на некоторые области данных, которые называются блоками. Размер блока (логического блока в ОС) является фиксированным атрибутом. В ОС Unix в различных ее вариациях размер блока был параметром меняющимся в зависимости от варианта ОС. Для простоты и единообразия мы будем считать, что логический блок ВЗУ равен 512 байт.

Итак, рассмотрим структуру файловой системы. Представим адресное пространство системного ВЗУ в виде последовательности блоков.

Будем считать, что этих блоков N+M-1.

Первый блок - это блок начальной загрузки. Размещение этого блока в нулевом блоке системного устройства определяется аппаратурой, так как аппаратной загрузчик всегда обращается к конкретному блоку системного устройства (к нулевому блоку). Это последний компонент файловой системы, который зависит от аппаратуры.

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


    • количестве индексных дескрипторов (ИД) в файловой системе;

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

    • свободных блоках файлов;

    • свободных ИД;

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


    • код привилегии/защиты;


    • длина файла;


Далее идут блоки файлов. Это пространство ВЗУ, в котором размещается вся информация, находящаяся в файлах и о файлах, которая не поместилась в уже перечисленных блоках.

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

Это концептуальная схема структуры файловой системы. Теперь давайте вернемся и рассмотрим некоторые ее части более детально.

Прежде всего интерес вызывают области свободных блоков файлов и свободных ИД. В Unix видно влияние двух факторов: первый - это то, что файловая система разрабатывалась тогда, когда ВЗУ объемом 5-10Мб считалось очень большим и в реализации алгоритмов по работе с системой видны старания автором по оптимизации этого процесса; и второй - это свойства файловой системы по оптимизации доступа, критерием которого является количество обменов, которые файловая система производит для своих нужд, не связанных с чтением или записью информации файлов.

Суперблок содержит список свободных блоков файлов, он состоит из 50 элементов. Суть работы с этим списком заключается в следующем - в буфере, состоящем из 50 элементов (при условии того, что блок - 512 байт, 1 блок - 16 битное слово), в них записаны номера свободных блоков пространства блоков файлов с 2 до 49. В 0 элементе содержится указатель на продолжение массива, а в последнем элементе содержится указатель на свободный элемент в массиве.

Если какому-то процессу для расширения файла требуется свободный блок, то система по указателю N/B (номер блока) выбирает элемент массива, и этот блок предоставляется файлу. Если происходит сокращение файла, то высвободившиеся номера добавляются в массив свободных блоков и корректируется указатель N/B.

Так как размер массива - 50 элементов, то возможны две критические ситуации:


    1. Когда мы освобождаем блоки файлов, а они не могут поместиться в этом массиве. В этом случае из файловой системы выбирается один свободный блок и заполненный полностью массив свободных блоков копируется в этот блок, после этого значение указателя N/B обнуляется, а в нулевой элемент массива, который находится в суперблоке, записывается номер блока, который мы выбрали для копирования содержимого массива. Таким образом, если мы постоянно освобождаем блоки, то образуется список, в котором будут размещены все свободные блоки файловой системы.

    2. Когда мы выбрали все свободные блоки и содержимое элементов массива свободных блоков исчерпалось. Если нулевой элемент массива равен нулю, то это означает, что исчерпано все пространство файловой системы. Если этот элемент нулю не равен, то это означает, что существует продолжение массива. Это продолжение считывается в копию суперблока в оперативной памяти.
Для получения свободного блока и его освобождения в большинстве случаев не требуется дополнительного обмена. Дополнительный обмен требуется тогда, когда исчерпается содержимое 49 блоков. У нас получается хорошая буферизация, которая сокращает накладные расходы ОС.

Список свободных ИД. Это буфер, состоящий из 100 элементов. В нем находится информация о 100 номерах ИД, которые свободны в данный момент. Соответственно, когда нужен новый ИД, то его номер берется из списка свободных ИД, если номер освобождается, то заносится в этот массив. Если же массив переполнен, а освобождается 101 элемент, то это никуда не записывается. Если список ИД переполняется, то система “пробегает” по списку и формирует содержимое этого буфера заново.

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


    1. Больше нет свободных блоков для файлов;

    2. Нет больше новых ИД.
Вот информация о суперблоке. Какие можно сделать выводы и замечания?

    • суперблок всегда находится в ОЗУ;

    • все операции по освобождению блоков, занятию блоков файлов, по занятию и освобождению ИД происходят в ОЗУ (минимизация обменов с диском). Если же содержимое суперблока не записать на диск и выключить питание, то возникнут проблемы (несоответствие реального состояния файловой системы и содержимого суперблока). Но это уже требование к надежности аппаратуры системы.

Лекция 8

Индексные Дескрипторы

Рассмотрим подробнее Индексные Дескрипторы. ^ ИД - это объект Unix, который ставится во взаимнооднозначное соответствие с содержимым файла. То есть для каждого ИД существует только одно содержимое и наоборот, за исключением лишь той ситуации, когда файл ассоциирован с каким-либо внешним устройством. Напомним содержимое ИД:


    • поле, определяющее тип файла (каталоги и все остальные файлы);

    • код привилегии/защиты;

    • количество ссылок к данному ИД из всевозможных каталогов файловой системы;

    • (нулевое значение означает свободу ИД)

    • длина файла в байтах;

    • даты и времена (время последней записи, дата создания и т.д.);

    • поле адресации блоков файла.
Как видно - в ИД нет имени файла. Давайте посмотрим, как организована адресация блоков, в которых размещается файл.

В поле адресации находятся номера первых десяти блоков файла, то есть если файл небольшой, то вся информация о размещении данных файла находится непосредственно в ИД. Если файл превышает десять блоков, то начинает работать некая списочная структура, а именно, 11й элемент поля адресации содержит номер блока из пространства блоков файлов, в которых размещены 128 ссылок на блоки данного файла. В том случае, если файл еще больше - то используется 12й элемент поля адресации. Сутьего в следующем - он содержит номер блока, в котором содержится 128 записей о номерах блоках, где каждый блок содержит 128 номеров блоков файловой системы. А если файл еще больше, то используется 13 элемент - где глубина вложенности списка увеличена еще на единицу.

Таким образом мы можем получить файл размером (10+128+128 2 +128 3)*512.

Если мы зададим вопрос - зачем все это надо (таблицы свободных блоков, ИД и т.д.), то вспомним, что мы рассматриваем взаимосвязь между аппаратными и программными средствами вычислительной системы, а в данном случае подобное устройство файловой системы позволяет сильно сократить количество реальных обменов с ВЗУ, причем эшелонированная буферизация в ОС Unix делает число этих обменов еще меньше.

Рассмотрим следующую область - область сохранения. На схеме она изображена сразу за блоками файлов. На самом же деле она может размещаться по-разному: перед блоками файлов, в каком-нибудь файле или еще где-нибудь, например, на другом ЗУ. Все это зависит от конкретной реализации системы.

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

Мы с вами рассмотрели структуру файловой системы и ее организацию на системном устройстве. Эта структура и алгоритмы работы с ней достаточно простые, это сделано для того, чтобы накладные расходы, связанные с функционированием системы, не выходили за пределы разумного.

Элементы файловой системы:

Каталоги

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

^ Каталог с точки зрения ОС - это файл, обычный файл, в котором размещены данные о всех файлах, которые принадлежат каталогу.

Мы говорим, что в каталоге “А” содержатся файлы: “B”, “C” и “D” - из которых “В” и “С” могут быть как файлами, так и каталогами, а “D” - заведомо каталог.

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

Каталог = { {ИД, Имя}, {ИД,Имя}, ..., {ИД, Имя}}

Что есть номер ИД? - это порядковый номер элемента в списке индексных дескрипторов. Так, первый элемент этого списка - ИД#1 принадлежит корневому каталогу “.”.

В общем случае, в каталоге могут неоднократно встречаться записи, ссылающиеся на один и тот же ИД, но в каталоге не могут встречаться записи с одинаковыми именами. То есть с содержимым файла может быть связано произвольное количество имен. При создании каталога в нем всегда создаются две записи:

{ИД_самого_каталога, “.”} и {ИД_родительского_каталога, “..”}

Так на картинке файл “А” имеет ИД#7, “D” - ИД#5, “F” - ИД#10, “G” - ИД#101. В этом случае файл-каталог D будет иметь следующее содержимое:

{{ 5, “.” },

(Для корневого каталога родитель ссылается на него же самого.)

Чем отличается файл-каталог от обычного файла? Он отличается полем типа в индексном дескрипторе.

Давайте посмотрим, как схематично могут использоваться полные имена и ссылки на каталоги. В системе в каждый момент времени определен для пользователя текущий каталог. То есть каталог, полное имя которого подставляется ко всем файлам, имя которых не начинается с символа “/”. Если текущий каталог “D”, то можно говорить просто о файле “F” или файле “G”, если же текущий каталог “D”, а требуется добраться до файла “B”, то оперировать просто с именем“B” нельзя, так как он не принадлежит каталогу “D”, файл “B” можно достать, указав его полное имя от корня, либо использовать специальный файл “..”, в этом случае файл “B” будет иметь имя: “../B”. Если при открытии мы ссылаемся на “..”

Для того, чтобы в этом случае открыть файл “B”, придется выполнить ряд косвенных операций - взять ИД родитель, и по нему выбирается содержимое файла-каталога “А”, в “А” мы выбираем строку с именем “B” и определяем его ИД. Эта процедура достаточно трудоемка, но так как открытие и закрытие файлов происходит достаточно редко, то “криминала” в этом никакого нету.

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

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

Файлы устройств

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

Это то, что можно сказать о специальных файлах, связанных с внешними устройствами.

Обмен данными с файлами

Следующее из системной организации файловой системы - это организация обменом данными с файлом. Определим понятия, связанные с низкоуровневым вводом/выводом. В Unix определены специальные функции, которые называются системными вызовами. Эти вызовы осуществляют непосредственное обращение к ОС, они выполняют некоторые системные функции. По употреблению они практически не отличаются от использования библиотечных функций, тогда как по реализации и действии их отличие достаточно существенное. Библиотечная функция будет загружена в тело процесса, а системный вызов сразу передает управление ОС, и последняя выполняет заказанное действие. В Unix для обеспечения низкоуровневого (путем системных вызовов) ввода-вывода имеется набор этих функций:

open(...) - для работы с содержимым файла процесс должен зарегистрировать в системе этот факт, параметрами этой функции являются строка, содержащая имя файла и атрибуты на режим работы с файлом (только чтение, чтение-запись и т.п.), а возвращает эта функция некоторое число, которое называется файловым дескриптором (ФД). В теле процесса пользователя, а также данных, ассоциированных с этим процессом, размещается некая служебная информация. В частности, размещается таблица файловых дескрипторов. Она, как и все таблицы в Unix - позиционна, то есть номер строки в таблице соответствует ФД с этим номером. С ФД ассоциировано имя файла и прочие атрибуты. Нумерация ФД - прерогатива процесса, то есть ФД уникальны в пределах одного процесса.

Количество одновременно открытых файлов (точнее, максимальное количество ФД, ассоциированных с файлами) для процесса регламентируется системой.

Итак, функция open(...) - открытие существующего файла.

creat(...) - это функция открытия нового файла, ее параметрами служат: имя файла и некоторые параметры открытия, также как и у open.

read(...)/write(...) - их параметрами являются номер ФД и некоторые параметры доступа. Эти функции служат для чтение/записи из или в файл.

close(...) - завершение работы с файлом. После выполнения этой функции ФД этого файла освобождается.

Все это системные вызовы. Также в Unix можно осуществлять ввод-вывод через библиотечные функции (например, fopen, fread, fwrite, fclose, ...).

Рассмотрим организацию обмена с системной точки зрения в Unix.

При организации обмена система подразделяет все данные на две категории - первая, это данные, ассоциированные с процессом пользователя, и данные, ассоциированные с ОС.

Первая таблица данных, связанных с ОС - это таблица индексных дескрипторов открытых файлов (ТИДОФ), эта таблица содержит записи, каждая из которых содержит копию ИД для каждого открытого в системе файла. Через копию ИД мы осуществляем доступ к блокам файла. Каждая из этих записей содержитполе, характеризующее количество открытых файлов в системе, использующих данные ИД. То есть, если мы открываем один и тот же файлов от имени двух процессов, то запись в ТИДОФ создается одна, но каждое открытие этого ИД увеличивает счетчик на единицу.

Следующее. Таблица файлов - эта таблица содержит информацию об имени открытого файла и имеет ссылку на ИД данного файла в ТИДОФ.

Подробнее эта схема будет рассмотрена на следующей

Практическая задание № 9.

Тема: «Работа с файловой структурой»

Теоретические сведения

Цель работы: изучить структуру построения файловой системы, характеристики файла, функции файловой системы, правила создания имени файла.

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

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

Файл – это поименованная область на диске. Каждый файл имеет следующее обозначение:

Имя файла разделено на две части точкой: собственное имя файла (префикс) и расширение (суффикс), определяющее его тип (программа, данные и т.д.). Собственно имя файлу дает пользователь, а его тип обычно задается программой автоматически.

Полное имя файла строится следующим образом: [имя диска:] [путь\] имя файла. У дисков могут быть имена A:, B: – для гибких дисков (дискет); C:, D:, E: и т.д. вплоть до Z: – для жестких дисков и их логических разделов, электронных (виртуальных) дисков, для лазерных дисков CD-ROM и флешек.

Таблица 1. Расширения в именах файлов

Атрибуты

Характеристики файла, наделяющие файл определенными свойствами. Для наиболее распространенных в настоящее время файловых систем FAT16, FAT32 и NTFS можно выделить следующие файловые атрибуты:

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



"Скрытый" (Hidden) - подразумевается, что файл с данным атрибутом не выводится при показе тех или иных списков файлов. В большинстве программ обработку этого атрибута можно настраивать. Например, стандартный "Проводник" Windows позволяет как прятать, так и показывать файлы с атрибутом "скрытый". Во втором случае иконка файла отображается полупрозрачной.

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

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

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

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

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

Функции файловой системы:

1. Сохранение информации на внешних носителях.

2. Чтение информации из файлов.

3. Удаление файлов, каталогов.

4. Переименование файлов.

5. Копирование файлов и др.

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

Одноуровневая файловая система

Таблица 2. Структура записей в каталоге

Иерархическая файловая система

Над файлами могут производиться различные операции:

  • Копирование (копия файла помещается из одного каталога в другой)
  • Перемещение (сам файл перемещается в другой каталог)
  • Удаление (запись о файле удаляется из каталога)
  • Переименование (изменяется имя файла) и т.д.

Правила создания имени файла:

Нельзя использовать следующие символы, которые зарезервированы для специальных функций:

? : * / \ “ > < |

Расширение указывает на тип информации, хранящейся в файле (тип файла):

· txt, doc, rtf- текстовые документы

· bmp, jpg, gif - графические файлы

Кроме имени и расширения параметрами файла также являются: размер фала, дата и время создания, значок.

Размер файла свидетельствует о том, сколько информации он содержит и, соответственно, сколько места он занимает на диске. Размер файла выражается в единицах измерения объема информации: байт, Кбайт, Мбайт.

Дaтa и время создания файла. Эти параметры тоже характеризуют файл и записываются по определенным правилам. Например, запись 05.03.97 15:30 означает, что файл был создан 5 марта 1997 года, а время его создания - 15 часов 30 минут. Дата и время регистрируются автоматически операционной системой.

Значок - элементарный графический объект. По значку можно узнать, в какой среде создан файл или какого он типа.

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

Действия с файлами и папками:

· закрыть;

· открыть;

· переименовать;

· удалить;

· переместить;

· копировать (создать копию).

Ход работы

Задание 1

Определите полный путь к файлам:

Задание 2

Задание 3

Дано дерево иерархической файловой структуры на диске. Заглавными буквами обозначены имена каталогов, строчными – имена файлов:

Найти ошибки в файловой структуре.

Задание 4

Дано дерево иерархической файловой структуры на диске. Заглавными буквами обозначены имена каталогов, строчными – имена файлов:

Перечислить каталоги 1-го, 2-го, 3-го уровней, если они есть. Указать пути от корневого каталога к каждому из файлов.

Задание 5

C:\Рисунки\Природа\Небо.bmp

C:\Рисунки\Природа\Снег.bmp

C:\Рисунки\Компьютер\Монитор.bmp

C:\Мои документы\Доклад.doc

Задание 6

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

Отобразить файловую структуру в виде дерева.

C:\Рефераты\Физика\Оптические явления.doc

C:\Рефераты\Информатика\Интернет.doc

C:\Рефераты\Информатика\Компьютерные вирусы.doc

C:\Рисунки\Закат.jpg

C:\Рисунки\ Зима.jpg

1. Какая файловая система используется в Windows?

2. Что такое файл?

3. Как хранятся файлы на диске?

4. Как формируется имя файла?

5. Зачем нужно расширение имени файла?

6. Какие стандартные расширения имен файлов вы знаете и что они означают?

7. Что такое путь к файлу?

8. Какие логические имена дисковых устройств вы знаете?

9. Объяснить термины: каталог, папка, файл, ярлык, иконка, меню?

10. Копирование и перемещение файлов. Как это реализуется в Windows?

11. Как переименовать файл или каталог?

12. Как создать новый файл или каталог?

13. Как удалить с диска файл или каталог?

14. Как просмотреть содержимое файла?

15. Как запустить файл на выполнение?

Файлы и файловая система

Все программы и данные хранятся в долговременной (внешней) памяти компьютера в виде файлов.

Файл - это определенное количество информации (программа или данные), имеющее имя и хранящееся в долговременной (внешней) памяти.

Имя файла. Имя файла состоит из двух частей, разделенных точкой: собственно имя файла и расширение, определяющее его тип (программа, данные и так далее). Собственно имя файлу дает пользователь, а тип файла обычно задается программой автоматически при его создании (табл. 4.2).

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

В операционной системе Windows имя файла может иметь длину до 255 символов, причем можно использовать русский алфавит, например: Единицы измерения информации.doc


Файловая система. На каждом носителе информации (гибком, жестком или лазерном диске) может храниться большое количество файлов. Порядок хранения файлов на диске определяется используемой файловой системой.

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

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

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

Начальный, корневой каталог содержит вложенные каталоги 1-го уровня, в свою очередь, каждый из последних может содержать вложенные каталоги 2-го уровня и так далее. Необходимо отметить, что в каталогах всех уровней могут храниться и файлы.

Например, в корневом каталоге могут находиться два вложенных каталога 1-го уровня (Каталог_1, Каталог_2) и один файл (Файл_1). В свою очередь, в каталоге 1-го уровня (Каталог_1) находятся два вложенных каталога второго уровня (Каталог_1.1 и Каталог_1.2) и один файл (Файл_1.1) - рис. 4.21.

Файловая система - это система хранения файлов и организации каталогов.

Рассмотрим иерархическую файловую систему на конкретном примере. Каждый диск имеет логическое имя (А:, В: - гибкие диски, С:, D:, Е: и так далее - жесткие и лазерные диски).

Пусть в корневом каталоге диска С: имеются два каталога 1-го уровня (GAMES, TEXT), а в каталоге GAMES один каталог 2-го уровня (CHESS). При этом в каталоге TEXT имеется файл proba.txt, а в каталоге CHESS - файл chess.exe (рис. 4.22).

Путь к файлу. Как найти имеющиеся файлы (chess.exe, proba.txt) в данной иерархической файловой системе? Для этого необходимо указать путь к файлу. В путь к файлу входят записываемые через разделитель "\" логическое имя диска и последовательность имен вложенных друг в друга каталогов, в последнем из которых содержится нужный файл. Пути к вышеперечисленным файлам можно записать следующим образом:

Путь к файлу вместе с именем файла называют иногда полным именем файла .

Пример полного имени файла:

С \GAMES\CHESS\chess.exe

Представление файловой системы с помощью графического интерфейса. Иерархическая файловая система MS-DOS, содержащая каталоги и файлы, представлена в операционной системе Windows с помощью графического интерфейса в форме иерархической системы папок и документов. Папка в Windows является аналогом каталога MS-DOS

Однако иерархическая структура этих систем несколько различается. В иерархической файловой системе MS-DOS вершиной иерархии объектов является корневой каталог диска, который можно сравнить со стволом дерева, на котором растут ветки (подкаталоги), а на ветках располагаются листья (файлы).

В Windows на вершине иерархии папок находится папка Рабочий стол . Следующий уровень представлен папками Мой компьютер, Корзина и Сетевое окружение (если компьютер подключен к локальной сети) - рис. 4.23.

2. Выбрав один из пунктов меню Вид (Крупные значки, Мелкие значки, Список, Таблица) , можно настроить форму представления содержимого папки.

Папка Сетевое окружение содержит папки всех компьютеров, подключенных в данный момент к локальной сети.

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

3. Для окончательного удаления файлов необходимо ввести команду [Файл-Очистить корзину].

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

  • копирование (копия файла помещается в другой каталог);
  • перемещение (сам файл перемещается в другой каталог);
  • удаление (запись о файле удаляется из каталога);
  • переименование (изменяется имя файла).

Графический интерфейс Windows позволяет проводить операции над файлами с помощью мыши с использованием метода Drag&Drop (перетащи и оставь). Существуют также специализированные приложения для работы с файлами, так называемые файловые менеджеры : Norton Commander, Windows Commander, Проводник и др.

В некоторых случаях возникает необходимость работать с интерфейсом командной строки. В Windows предусмотрен режим работы с интерфейсом командной строки MS-DOS.

Интерфейс командной строки

1. Ввести команду [Программы-Сеанс MS-DOS]. Появится окно приложения Сеанс MS-DOS .

В ответ на приглашение системы можно вводить команды MS-DOS с клавиатуры, в том числе:

  • команды работы с файлами (copy, del, rename и др.);
  • команды работы с каталогами (dir, mkdir, chdir и др.);
  • команды работы с дисками (format, defrag и др.).

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

Например, для получения справки по команде format в ответ на приглашение системы необходимо ввести: С:\WINDOWS>format/?


Вопросы для размышления

1. Какой элемент является вершиной иерархии в файловой системе MS-DOS? В графическом интерфейсе Windows?

Практические задания

4.11. Осуществить копирование файлов с использованием интерфейса командной строки и файлового менеджера.

4.12. Ознакомиться с объемом дисков вашего компьютера, а также объемами занятого и свободного пространства.

4.13. Ознакомиться с форматом команды dir. Просмотреть корневой каталог диска С.

Файловая система позволяет систематизировать программы и данные и организовать упорядоченное управление этими объектами.

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

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

Файловая система – это система управления данными.

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

Файловые системы ОС создают для пользователей некоторое виртуальное представление внешних запоминающих устройств, позволяя работать с ними не на низком уровне команд управления физическими устройствами, а на высоком уровне наборов и структур данных.

Файловая система (назначение):

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

Файловая структура

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

Используется древовидная структура каталогов – дерево каталогов . Заимствована у Unix. Иерархическая структура – структура системы, части (компоненты) которой связаны отношениями включения или подчинения.

Иерархическая структура изображается ориентированным деревом, в котором вершины соответствуют компонентам, а дуги – связям.

дерево каталогов диска G

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

Деревья используются при описании и проектировании иерархических структур.

Корень – начальная позиция, листья – заключительная позиция.

Разделы

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

Раздел – область диска. Под логическим диском(разделом) в компьютере понимается любой носитель информации, с которым операционная система работает как с единым целым объектом.

Имя диска – обозначение логического диска; запись в корневом каталоге.

Логические диски (разделы) обозначаются латинскими буквами A, B, C, D, E, … (32 буквы от A до Z).

Буквы A, B зарезервированы для обозначения дискет.

С – жесткий диск, обычно с которого производится загрузка ОС.

Остальные буквы – логические диски, компакт-диски и т.д. Максимальное количество логических дисков для ОС Windows – бесконечное.

В таблице разделов указывается расположение начала и конца этого раздела и число секторов в этом разделе (место и размер).

Файловая структура логического диска

Чтобы обратиться к информации на диске, находящейся в файле, надо знать физический адрес первого сектора (№ поверхности + № дорожки + № сектора), общее количество кластеров, занимаемое данным файлом, адрес следующего кластера, если размер файла больше, чем размер одного кластера

Элементы файловой структуры:

    стартовый сектор (начальной загрузки, Boot-сектор);

    таблица размещения файлов (FAT – File Allocation Table);

    корневой каталог (Root Directory);

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

Boot -сектор

Boot -сектор – первый (начальный) сектор диска. Находится на 0- стороне, 0-дорожке.

Boot-сектор содержит служебную информацию:

    размер кластера диска (кластер – блок, объединяющий в группу несколько секторов для сокращения размера FAT-таблицы);

    местоположение FAT-таблицы (в вoot-секторе находится указатель на то, где расположена FAT-таблица);

    размер FAT-таблицы;

    количество FAT-таблиц (всегда есть как минимум 2 копии таблицы для обеспечения надежности и безопасности, т.к. разрушение FAT ведет к потере информации и трудно восстанавливается);

    адрес начала корневой директории и ее максимальный размер.

В вoot-секторе находится блок начальной загрузки (загрузчик) – загрузочная запись Boot Record.

Загрузчик – обслуживающая программа, которая помещает выполняемую программу в оперативную память и приводит ее в состояние готовности к исполнению.

FAT (таблица размещения файлов)

FAT (File Allocation Table) – таблица размещения файлов. В ней определено, какие участки диска относятся к каждому файлу.Область данных диска представлена в ОС как последовательность пронумерованных кластеров.

FAT – это массив элементов, адресующих кластеры области данных диска. Каждому кластеру области данных соответствует один элемент FAT. Элементы FAT служат в качестве цепочки ссылок на кластеры файла в области данных.

Структура таблицы размещения файлов:

FAT состоит из элементов длиной 16 /32/64 бита. Всего в таблице может быть до 65520 таких элементов, каждый из них (кроме первых двух) соответствует кластеру диска. Кластер является той единицей, в которой распределяется пространство в области данных на диске для файлов и каталогов. Первые два элемента таблицы (с номерами 0 и 1) зарезервированы, а каждый из остальных элементов таблицы описывает состояние кластера диска с тем же номером. Элемент может указывать, что кластер свободен, что кластер дефектный, что кластер принадлежит файлу и является последним кластером в файле. Если кластер принадлежит файлу и не является его последним кластером, то элемент таблицы содержит номер следующего кластера в этом файле.

FAT – крайне важный элемент файловой структуры. Нарушения в FAT могут привести к полной или частичной потери информации на всем логическом диске. Именно поэтому, на диске хранится две копии FAT. Существуют специальные программы, которые контролируют состояние FAT и исправляют нарушения.

Для разных ОС необходимы разные версии FAT

Windows 95 FAT 16, FAT 32

Windows NT (XP) NTFS

Novell Netware TurboFAT

UNIX NFS,ReiserFS

Логическая структура носителя информации



Загрузка...