Файловая система персонального компьютера наиболее. Файлы и файловая система

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

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

Обычно в отдельном файле хранят данные, относящиеся к одному типу. В этом случае тип данных определяет тип файла.

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

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

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

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

Имена внешних носителей информации. Диски, на которых хранится информация в компьютере, имеют свои имена - каждый диск назван буквой латинского алфавита, а затем ставится двоеточие. Так, для дискет всегда отводятся буквы А: и В: . Логические диски винчестера именуются, начиная с буквы С: . После всех имен логических дисков следуют имена дисководов для компакт-дисков. Например, установлены: дисковод для дискет, винчестер, разбитый на 3 логических диска и дисковод для компакт-дисков. Определить буквы всех носителей информации. А: - дисковод для дискет; С: , D: , Е: - логические диски винчестера; F: - дисковод для компакт-дисков.

Логический диск или том (англ. volume или англ. partition ) - часть долговременной памяти компьютера, рассматриваемая как единое целое для удобства работы. Термин «логический диск» используется в противоположность «физическому диску», под которым рассматривается память одного конкретного дискового носителя.

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

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

По этой же причине форматирование и дефрагментация каждого логического диска не затрагивает другие.

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

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

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

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

Путь к файлу - это имя носителя (диска) и последовательность имен каталогов, в ОС Windows разделенных символом «\» (в ОС линии UNIX используется символ «/»). Этот путь задает маршрут к тому каталогу, в котором находится нужный файл.

Для указания пути к файлу используют два различных метода. В первом случае каждому файлу дается абсолютное имя пути (полное имя файла), состоящее из имен всех каталогов от корневого до того, в котором содержится файл, и имени самого файла. Например, путь С:\Abby\Doc\otchet.doc означает, что корневой каталог диска С: содержит каталог Abby , который, в свою очередь, содержит подкаталог Doc , где находится файл otchet.doc . Абсолютные имена путей всегда начинаются от имени носителя и корневого каталога и являются уникальными. Применяется и относительное имя пути. Оно используется вместе с понятием текущего каталога. Пользователь может назначить один из каталогов текущим рабочим каталогом. В этом случае все имена путей, не начинающиеся с символа разделителя, считаются относительными и отсчитываются относительно текущего каталога. Например, если текущим каталогом является С:\Abby , тогда к файлу с абсолютным путем С:\Abby\ можно обратиться как Doc\otchet.doc .

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

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

Основное поисковое средство Windows XP запускают из Главного меню командой Пуск > Найти > Файлы и папки . Не менее удобен и другой вариант запуска - из любого окна папки (Вид > Панели обозревателя > Поиск > Файлы и папки или клавиша F3 ).

Локализовать сферу поиска с учетом имеющейся информации об имени и адресе файла позволяют элементы управления, представленные на панели поиска. При вводе имени файла разрешается использовать подстановочные символы «*» и «?» . Символ «*» заменяет любое число произвольных символов, а символ«?» заменяет один любой символ. Так, например, поиск файла с именем *.txt завершится с отображением всех файлов, имеющих расширение имени.txt , а результатом поиска файлов с именем *.??t станет список всех файлов, имеющих расширения имени.txt, .bat, .dat и так далее.

При поиске файлов, имеющих «длинные» имена, следует иметь в виду, что если «длинное» имя содержит пробелы (а это допустимо), то при создании задания на поиск такое имя следует заключать в кавычки, например: «Текущие paбoты.doc».

На панели поиска имеются дополнительные скрытые элементы управления. Они отображаются, если щелкнуть на раскрывающей стрелке, направленной вниз.

· Вопрос Когда были произведены последние изменения? позволяет ограничить сферу поиска по дате создания, последнего изменения или открытия файла.

· Вопрос Какой размер файла? позволяет при поиске ограничиться файлами определенного размера.

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

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

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

19.Сжатие данных и архивация файлов.

Характерной особенностью большинства «классических» типов данных, с которыми традиционно работают люди, является определенная избыточность. Степень избыточности зависит от типа данных. Кроме того, степень избыточности данных зависит от принятой системы кодирования. Так, например, можно сказать, что кодирование текстовой информации средствами русского языка (с использованием русской азбуки) дает в среднем избыточность на 20-30% больше, чем кодирование адекватной информации средствами английского языка.
При обработке информации избыточность также играет важную роль. Однако, когда речь заходит не об обработке, а о хранении готовых документов или их передаче, то избыточность можно уменьшить, что дает эффект сжатия данных.
Если методы сжатия информации применяют к готовым документам, то нередко термин сжатие данных подменяют термином архивация данных, а программные средства, выполняющие эти операции, называют архиваторами.
В зависимости от того, в каком объекте размещены данные, подвергаемые сжатию, различают:
- уплотнение (архивацию) файлов;
- уплотнение (архивацию) папок;
- уплотнение дисков.
Если при сжатии данных происходит изменение их содержания, метод сжатия необратим и при восстановлении данных из сжатого файла не происходит полного восстановления исходной последовательности. Такие методы называют также методами сжатия с регулируемой потерей информации. Они применимы только для тех типов данных, для которых формальная утрата части содержания не приводит к значительному снижению потребительских свойств. В первую очередь, это относится к мультимедийным данным: видеорядам, музыкальным записям, звукозаписям и рисункам. Методы сжатия с потерей информации обычно обеспечивают гораздо более высокую степень сжатия, чем обратимые методы, но их нельзя применять к текстовым документам, базам данных и, тем более, к программному коду. Характерными форматами сжатия с потерей информации являются:
- JPG для графических данных;
- .MPG для видеоданных;
- . М РЗ для звуковых данных.
Если при сжатии данных происходит только изменение их структуры, то метод сжатия обратим. Из результирующего кода можно восстановить исходный массив путем применения обратного метода. Обратимые методы применяют для сжатия любых типов данных. Характерными форматами сжатия без потери информации являются:
- .GIF, TIP,. PCX и многие другие для графических данных;
- .AVI для видеоданных;
- .ZIP, .ARJ, .BAR, .LZH, .LH, .CAB и многие другие для любых типов данных.
«Классическими» форматами сжатия данных, широко используемыми в повседневной работе с компьютером, являются форматы.ZIP и.ARJ. В последнее время к ним добавился популярный формат.RAR.
К базовым функциям, которые выполняют большинство современных диспетчеров архивов, относятся:
- извлечение файлов из архивов;
- создание новых архивов;
- добавление файлов в имеющийся архив;
- создание самораспаковывающихся архивов;
- создание распределенных архивов на носителях малой емкости;
- тестирование целостности структуры архивов;
- полное или частичное восстановление поврежденных архивов;
- защита архивов от просмотра и несанкционированной модификации.
Самораспаковывающиеся архивы.. Самораспаковывающийся архив готовится на базе обычного архива путем присоединения к нему небольшого программного модуля. Сам архив получает расширение имени.ЕХЕ, характерное для исполнимых файлов.
Распределенные архивы. Некоторые диспетчеры (например WinZip) выполняют разбиение сразу на гибкие диски, а некоторые (например WinRAR и WinArj) позволяют выполнить предварительное разбиение архива на фрагменты заданного размера на жестком диске. Впоследствии их можно перенести на внешние носители путем копирования.
При создании распределенных архивов диспетчер WinZip обладает неприятной особенностью: каждый том несет файлы с одинаковыми именами. В результате этого нет возможности установить номера томов, хранящихся на каждом из гибких дисков, по названию файла Диспетчеры архивов WinArj и WinRAR маркируют все файлы распределенного архива разными именами и потому не создают подобных проблем.
Защита архивов. В большинстве случаев защиту архивов выполняют с помощью пароля, который запрашивается при попытке просмотреть, распаковать или изменить архив.
К дополнительным функциям диспетчеров архивов относятся сервисные функции, делающие работу более удобной. Они часто реализуются внешним подключением дополнительных служебных программ и обеспечивают:
- просмотр файлов различных форматов без извлечения их из архива;
поиск файлов и данных внутри архивов;
установку программ из архивов без предварительной распаковки;
проверку отсутствия компьютерных вирусов в архиве до его распаковки;
криптографическую защиту архивной информации;
декодирование сообщений электронной почты;
«прозрачное» уплотнение исполнимых файлов.ЕХЕ и.DLL;
создание самораспаковывающихся многотомных архивов;
выбор или настройку коэффициента сжатия информации.

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

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

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

Имя файла состоит из двух частей: собственно имени и расшире­ния (типа). Тип может отсут­ствовать. Имя отделяется от типа символом точки. В ОС Windows файлам можно присваивать имена длиной до 255 символов. Тип указывает вид и назначение файла, некоторые из них являются стандартными, например:

· .СОМ и.ЕХЕ - исполняемые файлы;

· .ВАТ - командный пакетный файл;

· .ТХТ - текстовый файл произвольного типа;

· .MDB - файл базы данных Access;

· .XLS - электронная таблица Excel;

· .DOC - текстовый файл редактора Microsoft Word;

· .ZIP - упакованный файл архиваторов Winzip/PkZip.

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

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

На каждом физическом или логическом диске существует корневой (головной) каталог, который нельзя создать, удалить или переименовать средствами пользователя. Он обозначается символом ‘\’ (в некоторых операционных системах можно использовать также ‘/’). В головном каталоге могут быть зарегистрированы другие каталоги и файлы. Вложенные каталоги могут, в свою очередь, включать каталоги более низкого уровня. Такая структура называется иерархической системой или деревом каталогов, в котором главный каталог образует корень дерева, а остальные каталоги подобны ветвям.

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

Для того чтобы ОС могла обратиться к файлу, необходимо ука­зать:

· путь по дереву каталогов;

· полное имя файла.

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

[диск:][путь]имя файла[.тип]

Квадратные скобки означают, что соответству­ющую часть спецификации можно опустить. В этом случае используется значение по умолчанию.

Если диск не указан, то используется текущий диск. Текущий диск - это диск, с которым в настоящий момент работает опера­ционная система.

Путь -последовательность папок, которые необходимо пройти к искомому файлу. Имена в пути записываются в по­рядке уменьшения их старшинства и разделяются символом «\». Ката­лог, в который входит текущий каталог, называется родительским.

Довольно часто возникает необходимость обработать одной командой сразу несколько файлов. Например, удалить все файлы резервных копий, имеющие расширение BAK, или переписать несколько файлов-документов с именами doc1.txt, doc2.txt и т. д. В этих случаях используют специальные символы-маски , позволяющие описать одним именем группу файлов. Масок всего две:

· символ * в имени или расширении файла заменяет любое допустимое количество любых символов;

· символ? в имени или расширении файла заменяет любой символ или отсутствие символа.

Нашим примерам будут соответствовать маски *.bak (все файлы с расширением bak) и doc?.txt (все файлы с расширением txt и именем из 4 символов, начинающимся с doc).

Вопросы по теме, выносимые на зачет:

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

2. Графический интерфейс пользователя, его основные компоненты (окна, средства диалога, стандартное управление окнами и средствами диалога).

3. Работа с клавиатурой и «мышью» в Windows. Стандартные комбинации клавиш и операции с «мышью».

4. Работа с файлами и папками в Windows - основные операции и возможности. Программы «Мой компьютер» и «Проводник».

5. Поиск информации в Windows.

6. Создание ярлыков приложений и документов.

7. Панель управления и ее основные компоненты.

8. Обработка сбоев в Windows.

9. Настройка DOS-приложений под Windows.

ВВЕДЕНИЕ

В настоящее время наиболее распространенными являются персональные компьютеры (ПК) на базе процессора Pentium. На большинстве этих ПК устанавливается операционная система (ОС) Windows 95 или Windows 98 (Windows 9x или просто Windows). Windows является фактически стандартом для 32-разрядных персональных компьютеров. К настоящему времени разработано уже несколько версий системы.

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

Отличительными чертами современных операционных систем, в том числе Windows 9x, являются:

Развитый пользовательский интерфейс, то есть средства и методы взаимодействия с пользователем;

Многозадачность – способность обеспечивать выполнение нескольких программ «одновременно»;

Использование всех возможностей, предоставляемых современными микропроцессорами;

Устойчивость в работе и защищенность.

Windows 9x является преемницей и результатом слияния двух систем Windows 3.1x и MS-DOS. Разработчикам пришлось принять ряд компромиссов для обеспечения ее совместимости с названными системами:

Windows 9x начинает функционирование в реальном режиме, и лишь затем переходит в защищенный режим;

В основе Windows 9x лежит обновленная MS-DOS;

В Windows 9x имеется достаточное количество 16 – разрядных компонентов (модулей и драйверов устройств).

В основе ОС Windows 9x лежит объектно-ориентированный подход. Объектами являются документы, приложения, папки, файлы, ярлыки, диски и т. д. Открытие объекта –одно из основных понятий в системе. Выполняемые при этом действия зависят от разновидности объекта:

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

- открытие приложения - запуск его в работу;

- открытие папки состоит в отображении на экране ее содержимого, что позволяет осуществить любые действия с находящимися в ней объектами;

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

- открытие ярлыка во многих случаях равносильно открытию того объекта, для которого он создан.

При обработке документа можно использовать как процедурный, так и объектно-ориентированный подход. В первом случае необходимо знать, каким приложением следует обрабатывать документ. В другом случае при двойном щелчке на документе или созданном для него ярлыке запускается проассоциированное с ним приложение. Если Windows «не знает», какое приложение должно обрабатывать данный документ, предложит связать документ с определенным приложением.


КОМПОНЕНТЫ ФАЙЛОВОЙ СИСТЕМЫ

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

Файл - это поименованная совокупность однородной информации на внешнем носителе (например, на магнитном диске).

В имени файла (ОС Windows 9x) могут использоваться почти все печатаемые символы, но имеется ряд ограничений:

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

Имя файла не может начинаться с точки и ею заканчиваться;

В имени файла нельзя применять следующие символы: /, \, :, ?, ’’, <, >, |, так как они зарезервированы для других целей;

Длина имени файла не должна превышать (в общем случае) 255 символов.

Такие имена называются длинными. Например, Лабораторная работа №1 по дисциплине операционные системы.

Для каждого файла Windows 9x автоматически генерирует короткое имя, которое формируется, исходя из требований ОС MS-DOS, и используется для обеспечения совместимости операционных систем. Оно содержит не более 8 символов. Кроме символов, запрещенных в длинных именах, не допускается использовать символы;, +, [, ], =, «точка», «запятая», «пробел». Короткое имя начинается, как и длинное, далее следует символ ~ и порядковый номер (всего не более 8 символов). При этом запрещенные символы опускаются, строчные буквы перекодируются в прописные. Например, PRIMER~1 может соответствовать длинному имени файла, начинающемуся буквами Primer. Если есть еще такой файл, то его короткое имя будет PRIMER~2.

Запрещенными являются имена, зарезервированные для устройств ввода-вывода: PRN (принтер), CON (консоль, т.е. клавиатура и монитор), NUL (фиктивное устройство), LPT1 –LPT3 (первый – третий параллельный порт), COM1 – COM3 (первый – третий последовательный порт). Символами латинского алфавита A:, B:, C:, D: и т.д. именуются внешние запоминающие устройства.

Если в имени файла присутствует хоть одна точка, то считается, что оно снабжено расширением, в соответствии с характером хранимой информации. Расширением имени файла является последовательность символов, находящаяся после последней заданной в имени точки. Точка рассматривается как разделитель имени и расширения. Задание расширения осуществляет либо сам пользователь, либо программа, порождающая файл. Лучше использовать стандартные 1 – 3х символьные расширения, так как становится понятным тип файла, например:

ВАТ для командных файлов;

DOC для файлов, содержащих различные документы в формате редактора Microsoft Word;

PAS для программ, написанных на языке PASCAL; -

PCX для файлов с иллюстрацией в формате растрового графического редактора Publishers Paintbrush;

ВАК для файлов с предыдущей версией документа (резервные файлы);

ЕХЕ для файлов, с готовой к выполнению программой

СОМ для файлов, с готовой к выполнению программой только в среде MS-DOS.

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

Пример файла: COMMAND.COM, COMMAND - имя файла, СОМ – расширение.

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

Атрибуты файла;

Дата и время его создания;

Дата и время модификации файла;

Дата последнего доступа к файлу (по чтению или записи);

Длина, или размер файла (в байтах).

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

Read-Only [R] (Только чтение) - устанавливает защиту файла от записи, файл не может быть удален, перемещен или изменен без специальных мер;

Archive [A] (Архивный) - устанавливает для файла архивный статус, устанавливается автоматически при создании или модификации файла, снимается средствами архивирования или резервирования;

Hidden [H] (Скрытый) – скрытые файлы, если не предпринять специальных мер, в папках не показываются.

System [S] (Системный) – атрибут, которым снабжаются системные файлы.

С каждым файлом в среде Windows 9x связывается пиктограмма, которая соответствует типу файла. Пиктограмма – это маленькая иллюстрация, помогающая быстро идентифицировать объект, с которым она связана.

Часто для обозначения сразу нескольких файлов или для сокращения записи имен файлов используется шаблон имени файла. Шаблоном имени является имя, в котором употребляются символы - заменители "*" и "?". Позиция, в которой стоит знак "?" , может содержать любой символ. "*" означает,что ту позицию,в которой стоит "*", и все последующие могут занимать любые символы.

*.ТХТ - все файлы типа ТХТ;

А?.* - все файлы, имена которых начинаются с буквы А и состоят из одной или двух букв.

1.2. Папки (каталоги)

По мере роста задач число файлов на диске сильно возрастает и, даже при умело подобранных именах файлов, становится сложно следить за порядком на диске и ориентироваться в файлах. Группа файлов на одном носителе, объединяемых по какому-либо критерию, может храниться в папке (folders). В MS-DOS использовалось понятие каталог или директорий (directory). Аналогия между папками и каталогами не является полной. Каждый каталог можно считать папкой, но не каждой папке соответствует каталог на диске, а если и соответствует, то он может находиться в совершенно ином месте файловой структуры. Если в папке (каталоге) хранится имя файла, то говорят, что этот файл находится в данном каталоге. Каждая папка в Windows 9x имеет пиктограмму и имя также как и файл (но, как правило, без расширения).

(Любая) папка может быть зарегистрирована в другой папке. Поэтому файловая структура на дисках является иерархической многоуровневой или древовидной, в корне которой находится главная папка , или корневой каталог (ROOT DIRECTORY) На каждом диске имеется одна такая папка, которая обозначается символом " \ ". Корневой каталог создается при форматировании диска и не может быть ни переименован, ни удален. Следует заметить, что на гибких магнитных дисках папки создавать не принято.

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

MS-DOS поддерживает концепцию текущего накопителя и текущих каталогов . Первоначально текущим является накопитель, с которого производилась загрузка системы, и соответственно каталог. Каталог, с которым в настоящий момент работает пользователь, называется текущим. Точно также определяется текущий накопитель. Текущий каталог текущего диска называется рабочим. Windows также поддерживает эту концепцию, но несколько иначе.Например, смена рабочей папки в приложениях происходит неявно – при открытии и сохранении документов.

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


Рис. 1

На рис.1 каталог Documents зарегистрирован в каталоге My folder, поэтому говорят, что Documents - подкаталог My folder, а My folder - надкаталог, или родительский каталог, для Documents.

С каждой папкой (но не главной), аналогично, как и с файлом, связывается ряд свойств. У папок устанавливается атрибут Directory (D), который отличает ее от файла, а также ассоциируется дата и время создания.

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

[диск:][полный_маршрут\]имя.тип.

В квадратных кавычках обозначаются необязательные параметры.

Если в полном имени используются символы, недопустимые для коротких имен (в среде MS-DOS), спецификацию необходимо заключать в кавычки.

Пример полного имени файла: A:\PROGRAM\PASCAL\LAB.PAS.

Например, к файлу DEMO.EXE, находящемуся в подкаталоге PROGRAM, можно обращаться:

DEMO.EXE, если текущим является каталог PROGRAM;

PROGRAM\DEMO.EXE, если текущий каталог корневой;

-..\demo.exe, если текущий каталог PASCAL.

1.3. Ярлыки

Средствами Windows 9x обеспечивается на дисках создание еще одного компонента файловой системы – ярлыков. Ярлык (shortcut) представляет собой файл, содержащий указатель (ссылку) на некоторый объект в дереве ресурсов – другой файл, папку или периферийное устройство. (Файловые структуры всех доступных дисков, а также некоторые устройства ввода – вывода объединяются в дерево ресурсов .) Одному объекту может соответствовать несколько ярлыков, находящихся в разных папках. При удалении ярлыка уничтожается только ссылка на объект, который при этом никак не изменяется. При двойном щелчке на ярлыке документа будет неявно запущено приложение, которое связано с этим документом, а сам документ загружен в него для обработки. Чаще всего ярлыки размещают на рабочем столе, чтобы облегчить доступ к постоянно используемым объектам. Именуется ярлык по тем же правилам, что и файл, но ему приписывается стандартное расширение LNK (от LiNK –связь). Пиктограмма ярлыка совпадает с пиктограммой объекта, для которого ярлык создан, но имеет загнутую стрелку в левом нижнем углу.

Если ярлык создается для приложения MS-DOS или командного файла, то вместо ярлыка формируется файл с расширением PIF. Этот файл в среде Windows 95 может рассматриваться как ярлык специального вида, ссылающийся на исполняемый файл для среды MS-DOS.

1.4. Рабочий стол

После загрузки системы Windows 9x на экране монитора показывается Рабочий стол (Desktop), (как считается) самая большая папка. Рабочий стол и сам является объектом системы, но в отличие от объектов, находящихся на нем, он не может быть перенесен или скопирован ни в один из них. На рабочем столе допускаются размещать любые объекты из дерева ресурсов, обычно на нем находятся только стандартные (системные) папки и ярлыки для тех объектов, доступ к которым осуществляется наиболее часто.

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

Папка Мой компьютер (My computer) – является образом компьютера и позволяет получить доступ к его ресурсам. Получив доступ к некоторому объекту, можно выполнить с ним требуемые операции или изменить его свойства;

Папка Корзина (Recycle Bin). В эту папку попадают удаляемые файлы и ярлыки, чтобы имелась возможность их при необходимости восстановить. Размер корзины регулируется.

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

Контрольные вопросы:

1. Что такое файл, имя и расширение файла, шаблон?

2. Какие файлы называются исполняемыми?

3. Что такое папка (каталог), подкаталог, корневой и родительский каталог?

4. Какие папки являются стандартными?

5. Дать определение спецификации, или полного имени файла.

6. Что такое ярлык?


КОМАНДЫ MS-DOS

Запуск команд производится из командной строки после получения приглашения к работе или из командного файла. Приглашение выдается, когда ОС готова к работе.

Формат команд MS-DOS:

команда [параметры] .

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

Существуют два типа команд MS-DOS: встроенные (внутренние) и загружаемые (внешние). Встроенные команды - простейшие, наиболее часто употребляемые, являющиеся составной частью командного процессора сommand.com и в каталоге не отображаются. (Например, DIR, COPY, DEL и другие.) К загружаемым командам относятся остальные команды, постоянно хранящиеся в файлах на диске (например, FORMAT).Прежде чем запустить на выполнение эти команды, необходимо убедиться в их наличии на диске. Рассмотрим некоторые команды MS-DOS.

3.1 Для смены текущего дисковода надо набрать имя дисковода, который должен стать текущим, затем символ ":" .

Например,

команда осуществляет переход с диска A: на диск С:.

3.2 Изменение текущего каталога

CD (CHDIR) [дисковод:] путь

Например,

CD PROGRAM - переход в подкаталог PROGRAM;

CD.. - переход в родительский каталог.

3.3 Вывод файла на экран.

TYPE [дисковод:][маршрут\]имя.тип.

Например,

TYPE \PROGRAM\PASCAL\lab.txt ;

TYPE AUTOEXEC.BAT .

2.4 Удаление файла или группы файлов

DEL [дисковод:][маршрут\]имя.тип.

В этой команде допускается использование шаблона.

Например,

DEL*.* - удаление всех файлов текущего каталога.

2.5 Просмотр каталога

DIR [дисковод:][маршрут\][имя.тип] .

Для каждого файла команда сообщает его имя, тип, размер файла в байтах, дату создания и время создания или последнего обновления файла. В конце сообщается о размере свободного пространства. Ключ ""/P "" останавливает ввод содержимого каталога по мере заполнения экрана, для продолжения ввода нажать любую клавишу. При использовании ключа " /W " на экран выводятся только имена файлов (и расширения) по 5 в строку.

2.6 Создание подкаталога

MD (MKDIR) [дисковод:] путь

2.7 Удаление подкаталога

RD (RMDIR) [дисковод:] путь

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

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

REN[диск:][ маршрут\]старое_имя новое_имя.

Эта команда позволяет изменить имя соответствующего файла без изменения его содержимого. Команда допускает использование шаблона.

2.9 Очистка экрана

2.10 Вывод версии операционной системы

При вводе этой команды на экране появляется номер версии операционной системы, который зависит от года создания версии. Знание версии необходимо, так как средства год от года наращиваются и команды и программы, написанные для более поздних версий, не будут работать вообще или выполняться по-другому.

2.11 Установка текущего времени

TIME [чч:mm:cc:дд]

Этой командой устанавливается текущее время при загрузке MS-DOS или в любой другой момент работы на машине. При запуске команды без параметров выдается текущее время и запрашивается новое, нажав на клавишу , можно согласиться с текущим временем.

2.12 Установка текущей даты

DATE [мм:дд:гг]

Команда устанавливает текущую дату аналогично команде TIME по установлению текущего времени.

2.13 Просмотр дерева подкаталогов

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

2.14 Копирование отдельных файлов

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

COPY [диск:][маршрут\]исф[диск:][ маршрут \][инф] ,

где исф - имя старого файла с расширением, инф - имя нового файла с расширением. Ключ /V позволяет производить копирование с проверкой правильности копирования. В этой команде допускается использование шаблона.

При использовании команды COPY для обмена информацией между периферийными устройствами вместо имен файлов подставляют в команду специальные имена CON, PRN, NIL и др., которые имеют следующие значения:

CON - консоль: клавиатура для ввода данных, видеодисплей для вывода результатов и контроля диалога;

PRN -основной принтер, связанный с вашей системой;

NUL -псевдоустройство (несуществующее) для тестирования программ.

Команда COPY позволяет объединить несколько файлов в один знаком "+". При таком объединении (конкатенации) исходные файлы не меняются, а в новый файл будут записаны текущее время и дата.

1) COPY PASCAL\*.PAS B: ,

происходит копирование всех файлов с типом PAS из подкаталога PASCAL на диск В:

2) COPY FILE.EXT PRN ,

вывод файла FILE.EXT на печать.

3) COPY CON FILE.EXT ,

ввод данных с клавиатуры в файл FILE.EXT, при этом конец файла порождает комбинация клавиш (создание файла в MS-DOS).

4) COPY FILE1.EXT+FILE2.EXT+FILE3.EXT BOOK.EXT ,

объединение нескольких файлов в один BOOK.EXT.

2.15 Защита файлов от записи

ATTRIB [+R ¦ -R] [+A ¦-A] [ диск:][маршрут\]имя_файла.

R - устанавливает защиту файла от записи;

R - отменяет защиту файла от записи;

A - устанавливает для файла архивный статус;

A - отменяет для файла архивный статус;

ATTRIB +R FILE.EXT - нельзя записывать информацию в этот файл;

ATTRIB FILE.EXT -делается запрос о возможности записи данных в FILE.EXT. Ответ операционной системы:

R_A:\FILE.EXT , т.е. файл недоступен для записи.

2.16. Переадресация данных:

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

TYPE FILE.TXT > PRN

ECHO Завтра собрание группы > PRN

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

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

PROGRAM < FILE.TXT

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

2.17. Организация конвейеров.

Можно выстроить команды или программы в цепочку так, что вывод на экран первой из них будет использован как ввод с клавиатуры для следующей A1|A2|A3.

ECHO Y | DEL *.* >NUL – автоматически ответит Y (Да) на запрос «Вы уверены…» при удалении всех элементов каталога.

Происходит по (конвейеру) | передача данных из одной программы в другую. Гораздо эффективнее использование | (конвейера) с командами фильтрами и переадресации.

2.18.Фильтры FIND, MORE, SORT.

а) Поиск указанных данных в дисковом файле (номер телефона, адрес, любая фраза):

FIND “фраза” [путь\] имя файла,

где /C – счётчик обнаружения, т.е. сколько раз обнаружена фраза, а сами строки не выводятся;

/N – выводится ещё и номер строки (кроме самой строки);

/V – выводятся все строки, не содержащие данную фразу.

FIND “группа” FILE.TXT – выводится строка из файла, содержащая слово “группа”.

DIR | FIND /V “COM” – выводятся на экран все файлы, кроме файлов с расширением COM.

FIND “car” AB.DAT, B.DAT, C.DAT – расходы на автомобиль.

б) Постраничный вывод на экран

MORE < FILE.TXT

TYPE FILE.EXT | MORE

в) Сортировка данных.

SORT (по умолчанию сортировка по 1 символу по алфавиту в порядке возрастания),

где /R - сортировка по убыванию;

/+n – начиная с колонки n, в строке будет происходить сортировка.

ввод информации с клавиатуры, Ù Z – признак конца вводимой информации.

Это желательно записать в файл, т.е. SORT < CON > FILE.TXT.

DIR | SORT – отсортированы элементы каталога по именам файлов (каталогов).

DIR | SORT /+10 > FILE.EXT -

список файлов будет упорядочен по расширениям (WINDOWS 9X).

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

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

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

Файловая система включает:

Совокупность всех файлов на логическом диске;

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

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

Каждая ОС имеет свою файловую систему.

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

Распределение дисковой памяти;

Присвоение имени файлу;

Отображение имени файла в соответствующий физический адрес во внешней памяти;

Обеспечение доступа к данным;

Защита и восстановление данных;

Типы файлов

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

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

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

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

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

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

Простое имя определяет файл в пределах одного каталога. Файла могут иметь одинаковые символьные имена, если они расположены в разных каталогах. «Много файлов – одно простое имя».

Полное имя представляет собой последовательность простых символьных имен всех каталогов, через которые проходит путь от корня до данного файла, и самого имени файла. Полное имя файла однозначно определяет файл в файловой системе. «Один файл – одно полное имя»

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

Если ОС поддерживает несколько устройств внешней памяти (жесткий диск, дисковод, CD ROM), то хранение файлов может быть организовано двумя способами:

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

2. Монтирование файловых систем (ОС UNIX). Пользователь имеет возможность объединить файловые системы, находящиеся на разных устройствах, в единую файловую систему, которая будет иметь единое дерево каталогов.

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

Файловая система ОС должна предоставить пользователю набор операций для работы с файлами в виде системных вызовов. Этот набор включает системные вызовы: create (создать файл), read (читать), write (запись), close (закрыть) и некоторых других. При работе с одним файлом, как правило, выполняется не одна операция, а последовательность. Например, при работе в текстовом редакторе. Какая бы операция не выполнялась над файлом, ОС должна выполнить ряд универсальных для всех операций действий:

1. По символьному имени файла найти его характеристики, которые хранятся в файловой системе на диске;

2. Скопировать характеристики файла в ОП;

3. На основании характеристик файла проверить права доступа на выполнение запрашиваемой операции (чтение, запись, удаление);

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

Работа с файлом начинается с системного вызова OPEN , который копирует характеристики файла и проверят права доступа, и завершается системным вызовом CLOSE, который освобождает буфер с характеристиками и делает невозможным продолжение работы с файлом без его повторного открытия.

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

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

Общее. В теории информатики определены следующие три основных типа структур данных – линейная, табличная, иерархическая. Пример книга: последовательность листов – линейная структура. Части, разделы, главы, параграфы – иерархия. Оглавление – таблица – связывает – иерархическую с линейной. У структурированных данных появляется новый атрибут - Адрес. И так:

      Линейные структуры (списки, вектора). Обычные списки. Адрес каждого элемента однозначно определяется его номером. Если все элементы списка имеют равную длину – вектора данных.

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

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

Упорядочение структур данных. Основной способ – сортировка. ! При добавлении нового элемента в упорядоченную структуру – возможно изменения адреса у существующих. Для иерархических структур – индексация – каждому элементу уникальный номер – который далее используется в сортировке и поиске.

    Основные элементы файловой системы

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

Файл - это именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные. Три параметра:

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

    уникальное собственное имя (фактически – адрес).

    данные одного типа – тип файла.

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

Первая, в современном понимании, развитая файловая система была разработана фирмой IBM для ее серии 360 (1965-1966 годы). Но в нынешних системах она практически не применяется. Использовала списочные структуры данных (ЕС- том, раздел, файл).

Большинство из Вас знакомо с файловыми системами современных ОС. Это прежде всего MS DOS, Windows, а некоторые с построением файловой системы для различных вариантов UNIX.

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

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

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

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

    Журналирование в файловых системах. Общие принципы.

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

Для минимизации проблем связанных с целостностью и минимизации времени перезапуска системы, журналируемая файловая система хранит список изменений, которые она будут проводить с файловой системой перед фактической записью изменений. Эти записи хранятся в отдельной части файловой системы, называемой «журналом» или «логом». Как только эти записи журнала (лога) безопасно записаны, журналируемая файловая система вносит эти изменения в файловую систему и затем удаляет эти записи из «лога» (журнала регистраций). Записи журнала организованы в наборы связанных изменений файловой системы, что очень похоже на то, как изменения добавляемые в базу данных организованны в транзакции.

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

Классический вид журналируемой файловой системы это хранение в журнале (логе) изменений метаданных файловой системы и хранение изменений всех данных файловой системы, включая изменения самих файлов.

    Файловая система MS-DOS (FAT)

Файловая система MS-DOS представляет собой древовидную файловую систему для небольших дисков и простых структур каталогов, в корне которой находится корневой каталог, а листьями являются файлы и другие каталоги, возможно пустые. Размещение файлов под управлением этой файловой системы происходит по кластерам, размер которых может колебаться от 4 КБ до 64 КБ кратно 4, без использования свойства смежности смешанным способом выделения дисковой памяти. Например, на рисунке показано три файла. Файл File1.txt является достаточно большим: он задействует три следующих друг за другом блока. Небольшой файл File3.txt использует пространство только одного размещаемого блока. Третий файл File2.txt. является большим фрагментированным файлом. В каждом случае точка входа указывает на первый распределяемый блок, принадлежащий файлу. Если файл использует несколько распределяемых блоков, то предшествующий блок указывает на следующий в цепочке. Значение FFF отождествляется с концом последовательности.

Дисковый раздел FAT

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

Таблица размещения файлов состоит из 16-разрядных элементов и содержит следующую информацию о каждом кластере логического диска:

    кластер не используется;

    кластер используется файлом;

    плохой кластер;

    последний кластер файла;.

Так как каждому кластеру должен быть присвоен уникальный 16-разрядный номер, то следовательно, FAT поддерживает максимально 216, или 65 536 кластеров на одном логическом диске (да еще некоторую часть кластеров резервирует для своих нужд). Таким образом получаем предельный размер диска, обслуживаемого MS-DOS, в 4 ГБ. Размер кластера можно увеличить или уменьшить в зависимости от размера диска. Однако, когда размер диска превышает некоторую величину, кластеры становятся слишком большого размера что ведет к внутренней дефрагментации диска. Кроме информации о файлах, в таблице размещения файлов может быть помещена информация и о каталогах. При этом каталоги рассматриваются как специальные файлы с 32-байтовыми элементами для каждого файла, содержащегося в этом каталоге. Корневой каталог имеет фиксированный размер – 512 записей для жесткого диска, а для дискет этот размер определяется объемом дискеты. Кроме того, корневой каталог расположен сразу же после второй копии FAT, поскольку в нем находятся файлы, необходимые загрузчику MS-DOS.

При поиске файла на диске MS-DOS вынуждена просматривать структуру каталога, чтобы найти его. Например, чтобы запустить исполняемый файл С:\Program\NC4\nc.exe находит исполнимый файл, выполнив следующие действия:

    читает корневой каталог диска C: и ищет в нем каталог Program;

    читает начальный кластер Program и ищет в этом каталоге запись о вложенном каталоге NC4;

    читает начальный кластер вложенного каталога NC4 и ищет в нем запись о файле nc.exe;

    читает все кластеры файла nc.exe.

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

Достоинства FAT

    Является лучшим выбором для логических дисков небольшого размера, т.к. стартует с минимальными накладными расходами. На дисках, размер которых не превышает 500 МБ, она работает с приемлемыми характеристиками.

Недостатки FAT

    Поскольку размер записи о файле ограничен 32 байтами, а информация должна включать в себя и размер файла и дату, и атрибуты и т.д., то размер под название файла также ограничен и не может превышать 8+3 символа на каждый файл. Использование так называемых коротких имен файлов делает FAT менее привлекательной для использования по сравнению с другими файловыми системами.

    Использование FAT на дисках, объем которых превышает 500 МБ нерационально по причине дефрагментации диска.

    Файловая система FAT не обладает никакими средствами защиты и поддерживает минимальные возможности по обеспечению безопасности информации.

    Скорость выполнения операций в FAT происходит обратно пропорционально глубине вложенности каталогов и объему диска.

    Файловая система UNIX – систем (ext3)

Современная, мощная и бесплатная операционная система Linux предоставляет широкую территорию для разработки современных систем и пользовательского программного обеспечения. Некоторые из наиболее интересных разработок в недавних ядрах Linux это новые, высоко производительные технологии для управления хранением, размещением и обновлением данных на диске. Один из наиболее интересных механизмов – это файловая система ext3, которая интегрируется в ядро Linux начиная с версии 2.4.16, и уже доступна по умолчанию в Linux дистрибутивах от компаний Red Hat и SuSE.

Файловая система ext3 является журналируемой файловой системой, 100% совместимой со всеми утилитами созданными для создания, управления и тонкой настройки файловой системы ext2, которая используется в Linux системах несколько последних лет. Перед детальным описанием различий между файловыми системами ext2 и ext3, уточним терминологию файловых систем и хранения файлов.

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

Файловые системы созданы на разделах диска для упрощения хранения и организации данных в форме файлов и директорий. Linux, как Unix система, использует иерархическую файловую систему составленную из файлов и директорий, которые соответственно содержат либо файлы либо каталоги. Файлы и директории в файловой системе Linux становятся доступным пользователю путем их монтирования (команда «mount»), которая обычно является частью процесса загрузки системы. Список файловых систем доступных для использования хранится в файле /etc/fstab (FileSystem TABle). Список файловых систем не смонтированных в данные момент системой хранится в файле /etc/mtab (Mount TABle).

В момент монтирования файловой системы в процессе загрузки, бит в заголовке («чистый бит» / «clean bit») стирается, это означает что файловая система используется, и что структуры данных используемые для управления размещением и организации файлов и директорий, в данной файловой системы могут быть изменены.

Файловая система расценивается как целостная если все блоки данных в ней либо используются, либо свободны; каждый размещенный блок данных занят одним и только одним файлом или директорией; все файлы и директории могут быть доступны после обработки серии других директорий в файловой системе. Когда система Linux намеренно прекращает работу используя команды оператора, все файловые системы размонтируются. Размонтирование файловой системы в процессе завершения работы устанавливает «чистый бит» в заголовок файловой системы, указывая на то, что файловая система была размонтирована должным образом и, тем самым, может рассматриваться как целостная.

Года отладки и переработки файловой системы и использование улучшенных алгоритмов для записи данных на диск в большой степени уменьшили повреждение данных вызываемых приложениями или самим ядром Linux, но устранение повреждения и потери данных в связи с отключением питания и другими системными проблемами до сих пор является сложной задачей. В случае аварийной остановки или простого отключения Linux системы без использования стандартных процедур остановки работы «чистый бит» в заголовке файловой системы не устанавливается. При следующей загрузке системы, процесс монтировки обнаруживает, что система не маркирована как «чистая», и физически проверяет ее целостность использую Linux/Unix утилиту проверки файловой системы "fsck" (File System ChecK).

Существует несколько журналируемых файловых систем доступных для Linux. Наиболее известные из них: XFS, журналируемая файловая система разработанная Silicon Graphics, но сейчас выпущенная открытым кодом (open source); RaiserFS, журналируемая файловая система разработанная специально для Linux; JFS, журналируемая файловая система первоначально разработанная IBM, но сейчас выпущенная как открытый код; ext3 – файловая система разработанная доктором Стефаном Твиди (Stephan Tweedie) в Red Hat, и несколько других систем.

Файловая система ext3 – это журналируемая версия Linux файловой системы ext2. Файловая система ext3 имеет одно значительно преимущество перед другими журналируемыми файловыми системами – она полностью совместима с файловой системой ext2. Это делает возможным использование всех существующих приложений разработанных для манипуляции и настройки файловой системы ext2.

Файловая система ext3 поддерживается ядрами Linux версии 2.4.16 и более поздними, и должна быть активизирована использованием диалога конфигурации файловых систем (Filesystems Configuration) при сборке ядра. В Linux дистрибутивы, такие как Red Hat 7.2 и SuSE 7.3 уже включена встроенная поддержка файловой системы ext3. Вы можете использовать файловую систему ext3 только в том случае, когда поддержка ext3 встроена в ваше ядро и у вас есть последние версии утилит «mount» и «e2fsprogs».

В большинстве случаев перевод файловых систем из одного формата в другой влечет за собой резервное копирование всех содержащихся данных, переформатирование разделов или логических томов, содержащих файловую систему, и затем восстановление всех данных на эту файловую систему. В связи с совместимостью файловых систем ext2 и ext3, все эти действия можно не проводить, и перевод может быть сделать с помощью одной команды (запущенной с полномочиями root):

# /sbin/tune2fs -j <имя-раздела >

Например, перевод файловой системы ext2 расположенной на разделе /dev/hda5 в файловую систему ext3 может быть осуществлен с помощью следующей комманды:

# /sbin/tune2fs -j /dev/hda5

Опция "-j" команды "tune2fs" создает журнал ext3 на существующей ext2 файловой системе. После перевода файловой системы ext2 в ext3, вы так же должны внести изменения в записи файла /etc/fstab, для указания что теперь раздел является файловой системой "ext3". Так же вы можете использовать авто определение типа раздела (опция «auto»), но все же рекомендуется явно указывать тип файловой системы. Следующий пример файл /etc/fstab показывает изменения до и после перевода файловой системы для раздела /dev/hda5:

/dev/ hda5 /opt ext2 defaults 1 2

/dev/ hda5 /opt ext3 defaults 1 0

Последнее поле в /etc/fstab указывает этап в загрузке, во время которого целостность файловой системы должна быть проверена с помощью утилиты «fsck». При использовании файловой системы ext3, вы можете установить это значение в «0», как показано на предыдущем примере. Это означает что программа "fsck" никогда не будет проверять целостность файловой системе, в связи с тем что целостность файловой системы гарантируется путем отката в журнале.

Перевод корневой файловой системы в ext3 требует особого подхода, и лучше всего его проводить в режиме одного пользователя (single user mode) после создания RAM диска поддерживающего файловую систему ext3.

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

Файловая система ext3 поддерживает три различных режима журналирования, которые могут быть активированы из файла /etc/fstab. Эти режимы журналирования следующие:

    Журнал / journal – запись всех изменений данных файловой системы и мета-данных. Наиболее медленный из всех трех режимов журналирования. Этот режим минимизирует шанс потери изменений файлов которые вы проводите в файловой системе.

    Последовательный / ordered – записываются изменения только мета-данных файловой системы, но записывает обновления данных файла на диск перед изменениями ассоциируемых мета-данных файловой системы. Этот режим журналирования ext3 установлен по умолчанию.

    Обратная запись / writeback – записываются только изменения мета-данных файловой системы, основан на стандартном процессе записи изменений данных файлов. Это наиболее быстрый метод журналирования.

Различия между этими режимами журналирования одновременно и едва заметны, и основательны. Использование режима «журнал» требует, что бы файловая система ext3 записывала каждое изменение файловой системы дважды – первый раз в журнал, а затем в саму файловую систему. Это может снизить общую производительность вашей файловой системы, но этот режим наиболее любим пользователями, потому что он минимизирует шанс потери изменения данных ваших файлов, так как и изменения мета - данных и изменения данный файлов записывается в журнал ext3 и может быть повторено при перезагрузке системы.

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

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

Указание журналируемого режима, используемого в ext3 файловой системе производиться в файле /etc/fstab для этой файловой системы. «Последовательный» режим используется по умолчанию, но вы можете указать различные режимы журналирования, путем изменения опций для требуемого раздела в файле /etc/fstab. Например, запись в /etc/fstab указывающая на использование режима журналирования «обратная запись» будет выглядеть следующим образом:

/dev/hda5 /opt ext3 data=writeback 1 0

    Файловая система семейства Windows NT (NTFS)

      Физическая структура NTFS

Начнем с общих фактов. Раздел NTFS, теоретически, может быть почти какого угодно размера. Предел, конечно, есть, но я даже не буду указывать его, так как его с запасом хватит на последующие сто лет развития вычислительной техники - при любых темпах роста. Как обстоит с этим дело на практике? Почти так же. Максимальный размер раздела NTFS в данный момент ограничен лишь размерами жестких дисков. NT4, правда, будет испытывать проблемы при попытке установки на раздел, если хоть какая-нибудь его часть отступает более чем на 8 Гб от физического начала диска, но эта проблема касается лишь загрузочного раздела.

Лирическое отступление. Метод инсталляции NT4.0 на пустой диск довольно оригинален и может навести на неправильные мысли о возможностях NTFS. Если вы укажете программе установки, что желаете отформатировать диск в NTFS, максимальный размер, который она вам предложит, будет всего 4 Гб. Почему так мало, если размер раздела NTFS на самом деле практически неограничен? Дело в том, что установочная секция просто не знает этой файловой системы:) Программа установки форматирует этот диск в обычный FAT, максимальный размер которого в NT составляет 4 Гбайт (с использованием не совсем стандартного огромного кластера 64 Кбайта), и на этот FAT устанавливает NT. А вот уже в процессе первой загрузки самой операционной системы (еще в установочной фазе) производится быстрое преобразование раздела в NTFS; так что пользователь ничего и не замечает, кроме странного "ограничения" на размер NTFS при установке. :)

      Структура раздела - общий взгляд

Как и любая другая система, NTFS делит все полезное место на кластеры - блоки данных, используемые единовременно. NTFS поддерживает почти любые размеры кластеров - от 512 байт до 64 Кбайт, неким стандартом же считается кластер размером 4 Кбайт. Никаких аномалий кластерной структуры NTFS не имеет, поэтому на эту, в общем-то, довольно банальную тему, сказать особо нечего.

Диск NTFS условно делится на две части. Первые 12% диска отводятся под так называемую MFT зону - пространство, в которое растет метафайл MFT (об этом ниже). Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой - это делается для того, чтобы самый главный, служебный файл (MFT) не фрагментировался при своем росте. Остальные 88% диска представляют собой обычное пространство для хранения файлов.

Свободное место диска, однако, включает в себя всё физически свободное место - незаполненные куски MFT-зоны туда тоже включаются. Механизм использования MFT-зоны таков: когда файлы уже нельзя записывать в обычное пространство, MFT-зона просто сокращается (в текущих версиях операционных систем ровно в два раза), освобождая таким образом место для записи файлов. При освобождении места в обычной области MFT зона может снова расширится. При этом не исключена ситуация, когда в этой зоне остались и обычные файлы: никакой аномалии тут нет. Что ж, система старалась оставить её свободной, но ничего не получилось. Жизнь продолжается... Метафайл MFT все-таки может фрагментироваться, хоть это и было бы нежелательно.

      MFT и его структура

Файловая система NTFS представляет собой выдающееся достижение структуризации: каждый элемент системы представляет собой файл - даже служебная информация. Самый главный файл на NTFS называется MFT, или Master File Table - общая таблица файлов. Именно он размещается в MFT зоне и представляет собой централизованный каталог всех остальных файлов диска, и, как не парадоксально, себя самого. MFT поделен на записи фиксированного размера (обычно 1 Кбайт), и каждая запись соответствует какому либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами, причем самый первый метафайл - сам MFT. Эти первые 16 элементов MFT - единственная часть диска, имеющая фиксированное положение. Интересно, что вторая копия первых трех записей, для надежности (они очень важны) хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска - восстановить его положение можно с помощью его самого, "зацепившись" за самую основу - за первый элемент MFT.

        Метафайлы

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

Метафайлы находятся корневом каталоге NTFS диска - они начинаются с символа имени "$", хотя получить какую-либо информацию о них стандартными средствами сложно. Любопытно, что и для этих файлов указан вполне реальный размер - можно узнать, например, сколько операционная система тратит на каталогизацию всего вашего диска, посмотрев размер файла $MFT. В следующей таблице приведены используемые в данный момент метафайлы и их назначение.

копия первых 16 записей MFT, размещенная посередине диска

файл поддержки журналирования (см. ниже)

служебная информация - метка тома, версия файловой системы, т.д.

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

корневой каталог

карта свободного места тома

загрузочный сектор (если раздел загрузочный)

файл, в котором записаны права пользователей на использование дискового пространства (начал работать лишь в NT5)

файл - таблица соответствия заглавных и прописных букв в имен файлов на текущем томе. Нужен в основном потому, что в NTFS имена файлов записываются в Unicode, что составляет 65 тысяч различных символов, искать большие и малые эквиваленты которых очень нетривиально.

        Файлы и потоки

Итак, у системы есть файлы - и ничего кроме файлов. Что включает в себя это понятие на NTFS?

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

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

Довольно интересно обстоит дело и с данными файла. Каждый файл на NTFS, в общем-то, имеет несколько абстрактное строение - у него нет как таковых данных, а есть потоки (streams). Один из потоков и носит привычный нам смысл - данные файла. Но большинство атрибутов файла - тоже потоки! Таким образом, получается, что базовая сущность у файла только одна - номер в MFT, а всё остальное опционально. Данная абстракция может использоваться для создания довольно удобных вещей - например, файлу можно "прилепить" еще один поток, записав в него любые данные - например, информацию об авторе и содержании файла, как это сделано в Windows 2000 (самая правая закладка в свойствах файла, просматриваемых из проводника). Интересно, что эти дополнительные потоки не видны стандартными средствами: наблюдаемый размер файла - это лишь размер основного потока, который содержит традиционные данные. Можно, к примеру, иметь файл нулевой длинны, при стирании которого освободится 1 Гбайт свободного места - просто потому, что какая-нибудь хитрая программа или технология прилепила в нему дополнительный поток (альтернативные данные) гигабайтового размера. Но на самом деле в текущий момент потоки практически не используются, так что опасаться подобных ситуаций не следует, хотя гипотетически они возможны. Просто имейте в виду, что файл на NTFS - это более глубокое и глобальное понятие, чем можно себе вообразить просто просматривая каталоги диска. Ну и напоследок: имя файла может содержать любые символы, включая полый набор национальных алфавитов, так как данные представлены в Unicode - 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла - 255 символов.

      Каталоги

Каталог на NTFS представляет собой специфический файл, хранящий ссылки на другие файлы и каталоги, создавая иерархическое строение данных на диске. Файл каталога поделен на блоки, каждый из которых содержит имя файла, базовые атрибуты и ссылку на элемент MFT, который уже предоставляет полную информацию об элементе каталога. Внутренняя структура каталога представляет собой бинарное дерево. Вот что это означает: для поиска файла с данным именем в линейном каталоге, таком, например, как у FAT-а, операционной системе приходится просматривать все элементы каталога, пока она не найдет нужный. Бинарное же дерево располагает имена файлов таким образом, чтобы поиск файла осуществлялся более быстрым способом - с помощью получения двухзначных ответов на вопросы о положении файла. Вопрос, на который бинарное дерево способно дать ответ, таков: в какой группе, относительно данного элемента, находится искомое имя - выше или ниже? Мы начинаем с такого вопроса к среднему элементу, и каждый ответ сужает зону поиска в среднем в два раза. Файлы, скажем, просто отсортированы по алфавиту, и ответ на вопрос осуществляется очевидным способом - сравнением начальных букв. Область поиска, суженная в два раза, начинает исследоваться аналогичным образом, начиная опять же со среднего элемента.

Вывод - для поиска одного файла среди 1000, например, FAT придется осуществить в среднем 500 сравнений (наиболее вероятно, что файл будет найден на середине поиска), а системе на основе дерева - всего около 10-ти (2^10 = 1024). Экономия времени поиска налицо. Не стоит, однако думать, что в традиционных системах (FAT) всё так запущено: во-первых, поддержание списка файлов в виде бинарного дерева довольно трудоемко, а во-вторых - даже FAT в исполнении современной системы (Windows2000 или Windows98) использует сходную оптимизацию поиска. Это просто еще один факт в вашу копилку знаний. Хочется также развеять распространенное заблуждение (которое я сам разделял совсем еще недавно) о том, что добавлять файл в каталог в виде дерева труднее, чем в линейный каталог: это достаточно сравнимые по времени операции - дело в том, что для того, чтобы добавить файл в каталог, нужно сначала убедится, что файла с таким именем там еще нет:) - и вот тут-то в линейной системе у нас будут трудности с поиском файла, описанные выше, которые с лихвой компенсируют саму простоту добавления файла в каталог.

Какую информацию можно получить, просто прочитав файл каталога? Ровно то, что выдает команда dir. Для выполнения простейшей навигации по диску не нужно лазить в MFT за каждым файлом, надо лишь читать самую общую информацию о файлах из файлов каталогов. Главный каталог диска - корневой - ничем не отличается об обычных каталогов, кроме специальной ссылки на него из начала метафайла MFT.

      Журналирование

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

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

Пример 2: более сложный случай - идет запись данных на диск. Вдруг, бах - отключается питание и система перезагружается. На какой фазе остановилась запись, где есть данные, а где чушь? На помощь приходит другой механизм системы - журнал транзакций. Дело в том, что система, осознав свое желание писать на диск, пометила в метафайле $LogFile это свое состояние. При перезагрузке это файл изучается на предмет наличия незавершенных транзакций, которые были прерваны аварией и результат которых непредсказуем - все эти транзакции отменяются: место, в которое осуществлялась запись, помечается снова как свободное, индексы и элементы MFT приводятся в с состояние, в котором они были до сбоя, и система в целом остается стабильна. Ну а если ошибка произошла при записи в журнал? Тоже ничего страшного: транзакция либо еще и не начиналась (идет только попытка записать намерения её произвести), либо уже закончилась - то есть идет попытка записать, что транзакция на самом деле уже выполнена. В последнем случае при следующей загрузке система сама вполне разберется, что на самом деле всё и так записано корректно, и не обратит внимания на "незаконченную" транзакцию.

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

Файлы NTFS имеют один довольно полезный атрибут - "сжатый". Дело в том, что NTFS имеет встроенную поддержку сжатия дисков - то, для чего раньше приходилось использовать Stacker или DoubleSpace. Любой файл или каталог в индивидуальном порядке может хранится на диске в сжатом виде - этот процесс совершенно прозрачен для приложений. Сжатие файлов имеет очень высокую скорость и только одно большое отрицательное свойство - огромная виртуальная фрагментация сжатых файлов, которая, правда, никому особо не мешает. Сжатие осуществляется блоками по 16 кластеров и использует так называемые "виртуальные кластеры" - опять же предельно гибкое решение, позволяющее добиться интересных эффектов - например, половина файла может быть сжата, а половина - нет. Это достигается благодаря тому, что хранение информации о компрессированности определенных фрагментов очень похоже на обычную фрагментацию файлов: например, типичная запись физической раскладки для реального, несжатого, файла:

кластеры файла с 1 по 43-й хранятся в кластерах диска начиная с 400-го кластеры файла с 44 по 52-й хранятся в кластерах диска начиная с 8530-го...

Физическая раскладка типичного сжатого файла:

кластеры файла с 1 по 9-й хранятся в кластерах диска начиная с 400-го кластеры файла с 10 по 16-й нигде не хранятся кластеры файла с 17 по 18-й хранятся в кластерах диска начиная с 409-го кластеры файла с 19 по 36-й нигде не хранятся....

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

      Безопасность

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

Права файловой системы NTFS неразрывно связаны с самой системой - то есть они, вообще говоря, необязательны к соблюдению другой системой, если ей дать физический доступ к диску. Для предотвращения физического доступа в Windows2000 (NT5) всё же ввели стандартную возможность - об этом см. ниже. Система прав в своем текущем состоянии достаточно сложна, и я сомневаюсь, что смогу сказать широкому читателю что-нибудь интересное и полезное ему в обычной жизни. Если вас интересует эта тема - вы найдете множество книг по сетевой архитектуре NT, в которых это описано более чем подробно.

На этом описание строение файловой системы можно закончить, осталось описать лишь некоторое количество просто практичных или оригинальных вещей.

Эта штука была в NTFS с незапамятных времен, но использовалась очень редко - и тем не менее: Hard Link - это когда один и тот же файл имеет два имени (несколько указателей файла-каталога или разных каталогов указывают на одну и ту же MFT запись). Допустим, один и тот же файл имеет имена 1.txt и 2.txt: если пользователь сотрет файл 1, останется файл 2. Если сотрет 2 - останется файл 1, то есть оба имени, с момента создания, совершенно равноправны. Файл физически стирается лишь тогда, когда будет удалено его последнее имя.

      Symbolic Links (NT5)

Гораздо более практичная возможность, позволяющая делать виртуальные каталоги - ровно так же, как и виртуальные диски командой subst в DOSе. Применения достаточно разнообразны: во-первых, упрощение системы каталогов. Если вам не нравится каталог Documents and settings\Administrator\Documents, вы можете прилинковать его в корневой каталог - система будет по прежнему общаться с каталогом с дремучим путем, а вы - с гораздо более коротким именем, полностью ему эквивалентным. Для создания таких связей можно воспользоваться программой junction (junction.zip(15 Kb), 36 кб), которую написал известный специалист Mark Russinovich (http://www.sysinternals.com). Программа работает только в NT5 (Windows 2000), как и сама возможность. Для удаления связи можно воспользоваться стандартной командой rd. ВНИМАНИЕ: Попытка удаления связи с помощью проводника или других файловых менеджеров, не понимающих виртуальную природу каталога (например, FAR), приведет к удалению данных, на которые ссылается ссылка! Будьте осторожны.

      Шифрование (NT5)

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

mob_info