Файловые системы. Типы файловых систем

05.08.2019 Приложения

Структура файловой системы. Механизм доступа к файлам.

Файл (file ) - поименованная совокупность данных. С файлами возможно производить операции как с единым целым при помощи операторов: oткрыть(open ), закрыть(close ), создать(create ), уничтожить(destroy ), копировать(copy ), переименовать(rename ), вывести(list ). Кроме того, возможны операции над отдельными компонентами файлов: прочитать(read ), записать(write ), обновить(update ), вставить(insert ), исключить(delete ).

Организация файлов

Под организацией файлов понимается способ расположения записей во внешней памяти. Существуют следующие способы организации.

· Последовательная - записи располагаются в физическом порядке, т. е. “следующая” запись - это запись, которая физически следует за предыдущей, здесь записи могут быть как фиксированной длины, так и переменной.

Записи фиксированной

длины

Записи переменной

длины

Указатели длины записи

· Индексно-последовательная - записи располагаются в логической последовательности в соответствии со значениями ключей, содержащихся в каждой записи. Доступ к индексно-последовательным записям может осуществляться последовательно, в порядке возрастания/убывания значений ключа, либо прямо по ключу, путем поиска по системному индексу.

https://pandia.ru/text/78/277/images/image012_9.gif" height="108 src=">.gif" width="214">

· Прямая - доступ к записям осуществляется произвольно по их физическим адресам на запоминающем устройстве прямого доступа.

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

Методы доступа

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

· методы доступа с очередями;

· базисные методы доступа.

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

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

Характеристики файлов

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

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

· Размер - определяет количество информации, хранящейся в файле.

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

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

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

· предоставление возможности создавать, модифицировать, уничтожать файлы;

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

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

· в системе должны быть предусмотрены средства обеспечения сохранности и восстановления информации в файлах;

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

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

· файловая система должна иметь “дружественный” интерфейс по отношению к пользователю.

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

Файловая система, входящая в состав ядра ОС, как правило, содержит следующие средства:

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

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

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

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

Размещение файлов в дисковой памяти

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

Связное распределение памяти

1 Свободен

2

3

4

5 Свободен

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

Несвязное распределение памяти

Распределение при помощи списков секторов

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

1

2 Свободен

3

4 Свободен

5

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

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

Поблочное распределение памяти

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

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

Цепочка блоков

Каталог

https://pandia.ru/text/78/277/images/image022_2.gif" width="108" height="21">.gif" width="166" height="70">

Gif" width="51" height="12">Файл Местоположение Данные Данные Данные Nil

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

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

Цепочка индексных блоков

Каталог

https://pandia.ru/text/78/277/images/image028_3.gif" width="166" height="2 src=">Файл Местоположение

Цепочка индексных блоков

https://pandia.ru/text/78/277/images/image033_0.gif" width="166" height="165 src=">left">

https://pandia.ru/text/78/277/images/image039_0.gif" width="108" height="21"> https://pandia.ru/text/78/277/images/image028_3.gif" width="166" height="2 src=">Файл Местоположение Блок 6 А(2)

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

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

Классификация, структура, характеристики файловых систем!!!

1.Понятие, структура и работа файловой системы.

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

MBR (Master Boot Record) специальная область расположенная в начале диска - содержащая необходимую для BIOS информацию для загрузки операционной системы с жесткого диска.
Таблица разделов (partition table) также расположена в начале диска, ее задача - хранить информацию о разделах: начало, длина, загрузка. На загрузочном разделе расположен загрузочный сектор (boot sector), хранящий программу загрузки операционной системы.

Отсчет начинается от MBR (от сектора с номером 0) для всех основных (primary) разделов, как для обычных, так и для расширенного, и только для основных.
Все обычные логические (not extended logical) разделы задаются сдвигом относительно начала того расширенного раздела, в котором они описаны.
Все расширенные логические (extended logical) разделы задаются сдвигом относительно начала основного расширенного раздела (extended primary).

Процесс загрузки операционной системы выглядит следующим образом:
При включении компьютера управление процессором получает BIOS ,идет загрузка (boot) с винчестера, подгружается в оперативную память компьютера первый сектор диска (MBR) и передается ему управление).

В MBR может быть записан как "стандартный" загрузчик,

так и загрузчики типа LILO/GRUB.

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

Например для загрузки операционной системы Windows NT/2k/XP/2003 в boot-секторе записывается код, загружающий с текущего раздела в память основной загрузчик (ntloader).
Для каждой файловой системы FAT16/FAT32/NTFS используется свой загрузчик. В корне раздела обязательно должен присутствовать файл ntldr. Если вы видете при попытке загрузить Windows сообщение "NTLDR is missing", то это как раз тот случай, когда файл ntldr отсутствует. Также для нормальной работы ntldr возможно нужны файлы bootfont.bin, ntbootdd.sys, ntdetect.com и правильно написанный boot.ini.

Пример boot.ini

C:\boot.ini

timeout=8
default=C:\gentoo.bin

C:\gentoo.bin="Gentoo Linux"
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP (32-bit)" /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Windows XP (64-bit)" /fastdetect /usepmtimer

Пример конфигурационного файла grub.conf

#grub.conf generated by anaconda
#
#Note that you do not have to rerun grub after making changes to this file
#
#NOTICE: You have a /boot partition. This means that
#all kernel and initrd paths are relative to /boot/, eg.
#root (hdO.O)
#kernel /vmlinuz-version ro root=/dev/sda2
#initrd /initrd-version.img
#boot=/dev/sda default=0 timeout=5
splashimage=(hdO,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux server (2.6.18-53.el 5)
root (hdO.O)
kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet-
initrd /initrd-2.6.18-53.el5.img

Структура файла lilo.conf

# LILO configuration file generated by "liloconfig"
//Секция описания глобальных параметров
# Start LILO global section
//Место, куда записан Lilo. В данном случае это MBR
boot = /dev/hda
//Сообщение, которое выводится при загрузке
message = /boot/boot_message.txt
//Вывод приглашения
prompt
//Time Out на выбор операционной системы
timeout = 1200
# Override dangerous defaults that rewrite the partition table:
change-rules
reset
# VESA framebuffer console @ 800x600x256
//Выбор видеорежима отображения меню
vga = 771
# End LILO global section
//Секция описания параметров загрузки windows
# DOS bootable partition config begins
other = /dev/hda1
label = Windows98
table = /dev/hda
# DOS bootable partition config ends
//Секция описания параметров загрузки QNX
# QNX bootable partition config begins
//Путь к операцционной системе
other = /dev/hda2
label = QNX
table = /dev/hda
# QNX bootable partition config ends
//Секция описания параметров загрузки Linux
# Linux bootable partition config begins
//Путь к образу ядра
image = /boot/vmlinuz
root = /dev/hda4
label = Slackware
read-only
# Linux bootable partition config ends


2.Наиболее известные файловые системы.

  • Advanced Disc Filing System
  • AdvFS
  • Be File System
  • CSI - DOS
  • Encrypting File System
  • Extended File System
  • Second Extended File System
  • Third Extended File System
  • Fourth Extended File System
  • File Allocation Table (FAT)
  • Files - 11
  • Hierarchical File System
  • HFS Plus
  • High Perfomance File System (HPFS)
  • ISO 9660
  • Journaled File System
  • Macintosh File System
  • MINIX file system
  • MicroDOS
  • Next3
  • New Implementation of a Log-structured F (NILFS)
  • Novell Storage Services
  • New Technology File System (NTFS)
  • Protogon
  • ReiserFS
  • Smart File System
  • Squashfs
  • Unix File System
  • Universal Disk Format (UDF)
  • Veritas File System
  • Windows Future Storage (WinFS)
  • Write Anywhere File Layout
  • Zettabyte File System (ZFS)

3.Основные характеристики файловых систем.

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

Максимальный (минимальный) размер тома;
- Максимальное (минимальное) количество файлов в корневом каталоге;
- Максимальное количество файлов в некорневом каталоге;
- Безопасность на уровне файлов;
- Поддержка длинных имен файлов;
- Самовосстановление;
- Сжатие на уровне файлов;
- Ведение журналов транзакций;

4.Краткое описание наиболее распространенных файловых систем FAT, NTFS, EXT.

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

FAT (file allocation table) означает «таблица размещения файлов».
В файловой системе FAT логическое дисковое пространство любого логического диска делится на две области:
- системную область;
- область данных.
Системная область создается при форматировании и обновляется при манипулировании файловой структурой. Область данных содержит файлы и каталоги, подчиненные корневому, и доступна через пользовательский интерфейс. Системная область состоит из следующих компонентов:
- загрузочной записи;
- зарезервированных секторов;
- таблицы размещения файлов (FAT);
- корневого каталога.
Таблица размещения файлов представляет собой карту (образ) области данных, в которой описывается состояние каждого участка области данных. Область данных разбивается на кластеры. Кластер – один или несколько смежных секторов в логическом дисковом адресном пространстве (только в области данных). В таблице FAT кластеры, принадлежащие одному файлу (некорневому каталогу), связываются в цепочки. Для указания номера кластера в системе управления файлами FAT16 используется 16-битовое слово, следовательно, можно иметь до 65536 кластеров.
Кластер – минимальная адресуемая единица дисковой памяти, выделяемая файлу или некорневому каталогу. Файл или каталог занимает целое число кластеров. Последний кластер при этом может быть задействован не полностью, что приведет к заметной потере дискового пространства при большом размере кластера.
Так как FAT используется при доступе к диску очень интенсивно, она загружается в ОЗУ и находится там максимально долго.
Корневой каталог отличается от обычного каталога тем, что он размещается в фиксированном месте логического диска и имеет фиксированное число элементов. Для каждого файла и каталога в файловой системе хранится информация в соответствии со следующей структурой:
- имя файла или каталога – 11 байт;
- атрибуты файла – 1 байт;
- резервное поле – 1 байт;
- время создания – 3 байта;
- дата создания – 2 байта;
- дата последнего доступа – 2 байта;
- зарезервировано – 2 байта;
- время последней модификации – 2 байта;
- номер начального кластера в FAT – 2 байта;
- размер файла – 4 байта.
Структура системы файлов является иерархической.

Файловая система FAT32.
FAT32 является полностью независимой 32-разрядной файловой системой и содержит многочисленные усовершенствования и дополнения по сравнению с FAT16. Принципиальное отличие FAT32 заключается в более эффективном использовании дискового пространства: FAT32 использует кластеры меньшего размера, что приводит к экономии дискового пространства.
FAT32 может перемещать корневой каталог и использовать резервную копию FAT вместо стандартной. Расширенная загрузочная запись FAT32 позволяет создавать копии критических структур данных, что повышает устойчивость дисков к нарушениям структуры FAT по сравнению с предыдущими версиями. Корневой каталог представляет собой обычную цепочку кластеров, поэтому может находиться в произвольном месте диска, что снимает ограничение на размер корневого каталога.


Файловая система NTFS.
Файловая система NTFS (New Technology File System) содержит ряд значительных усовершенствований и изменений, существенно отличающих ее от других файловых систем. С точки зрения пользователей файлы по-прежнему хранятся в каталогах, но работа на дисках большого объема в NTFS происходит намного эффективнее:
- имеются средства для ограничения доступа к файлам и каталогам;
- введены механизмы, существенно повышающие надежность файловой системы;
- сняты многие ограничения на максимальное количество дисковых секторов и/или кластеров.

Основные характеристики файловой системы NTFS:
- надежность. Высокопроизводительные компьютеры и системы совместного использования должны обладать повышенной надежностью, для этой цели введен механизм транзакций, при котором ведется журналирование файловых операций;
- расширенная функциональность. В NTFS введены новые возможности: усовершенствованная отказоустойчивость, эмуляция других файловых систем, мощная модель безопасности, параллельная обработка потоков данных, создание файловых атрибутов, определенных пользователем;
- поддержка стандарта POSIX. К числу базовых средств относятся необязательное использование имен файлов с учетом регистра, хранение времени последнего обращения к файлу и механизм альтернативных имен, позволяющий ссылаться на один и тот же файл по нескольким именам;
- гибкость. Распределение дискового пространства отличается большой гибкостью: размер кластера может изменяться от 512 байт до 64 Кбайт.
NTFS хорошо работает с большими массивами данных и большими томами. Максимальный размер тома (и файла) – 16 Эбайт. (1 Эбайт равен 2**64 или 16000 млрд. гигабайт.) Количество файлов в корневом и некорневом каталогах не ограничено. Поскольку в основу структуры каталогов NTFS заложена эффективная структура данных, называемая «бинарным деревом», время поиска файлов в NTFS не связано линейной зависимостью с их количеством.
Система NTFS обладает некоторыми средствами для самовосстановления и поддерживает различные механизмы проверки целостности системы, включая ведение журнала транзакций, позволяющий отследить по системному журналу файловые операции записи.
Файловая система NTFS поддерживает объектную модель безопасности и рассматривает все тома, каталоги и файлы как самостоятельные объекты NTFS. Права доступа к томам, каталогам и файлам зависит от учетной записи пользователя и той группы, к которой он принадлежит.
Файловая система NTFS обладает встроенными средствами сжатия, которые можно применять к томам, каталогам и файлам.

Файловая система Ext3.
Файловая система ext3 может поддерживать файлы размером до 1 ТБ. С Linux-ядром 2.4 объём файловой системы ограничен максимальным размером блочного устройства, что составляет 2 терабайта. В Linux 2.6 (для 32-разрядных процессоров) максимальный размер блочных устройств составляет 16 ТБ, однако ext3 поддерживает только до 4 ТБ.
Ext3 имеет хорошую совместимость с NFS и не имеет проблемы с производительностью при дефиците свободного дискового пространства.Еще одно достоинство ext3 происходит из того, что она основана на коде ext2. Дисковый формат ext2 и ext3 идентичен; из этого следует, что при необходимости ext3 filesystem можно монтировать как ext2 без каких либо проблем. И это еще не все. Благодаря факту, что ext2 и ext3 используют идентичные метаданные, имеется возможность оперативного обновления ext2 в ext3.
Надежность Ext3
В дополнение к ext2-compatible, ext3 наследует другие преимущества общего формата metadata. Пользователи ext3 имеют в своем распоряжении годами проверенный fsck tool. Конечно, основная причина перехода на journaling filesystem - отказ от необходимости периодических и долгих проверок непротиворечивости метаданных на диске. Однако "журналирование" не способно защитить от сбоев ядра или повреждения поверхности диска (или кое-чего подобного). В аварийной ситуации вы оцените факт преемственности ext3 от ext2 с ее fsck.
Журнализация в ext3.
Теперь, когда имеется общее понимание проблемы, посмотрим, как ext3 осуществляет journaling. В коде журнализации для ext3 используется специальный API, называемый Journaling Block Device layer или JBD. JBD был разработан для журнализации на любых block device. Ext3 привязана к JBD API. При этом код ext3 filesystem сообщает JBD о необходимости проведения модификации и запрашивает у JBD разрешение на ее проведение. Журналом управляет JBD от имени драйвера ext3 filesystem. Такое соглашение очень удобно, так как JBD развивается как отдельный, универсальный объект и может использоваться в будущем для журналирования в других filesystems.
Защита данных в Ext3
Теперь можно поговорить о том, как ext3 filesystem обеспечивает журнализацию и data, и metadata. Фактически в ext3 имеются два метода гарантирования непротиворечивости.
Первоначально ext3 разрабатывалась для журналирования full data и metadata. В этом режиме (называется "data=journal" mode), JBD журналирует все изменения в filesystem, связанные как с data, так и с metadata. При этом JBD может использовать журнал для отката и восстановления metadata и data. Недостаток "полного" журналирования в достаточно низкой производительности и расходе большого объема дискового пространства под журнал.
Недавно для ext3 был добавлен новый режим журналирования, который сочетает высокую производительность и гарантию непротиворечивости структуры файловой системы после сбоя (как у "обычных" журналируемых файловых систем). Новый режим работы обслуживает только metadata. Однако драйвер ext3 filesystem по-прежнему отслеживает обработку целых блоков данных (если они связаны с модификацией метаданных), и группирует их в отдельный объект, называемый transaction. Транзакция будет завершена только после записи на диск всех данных. "Побочный" эффект такой "грубой" методики (называемой "data=ordered" mode) - ext3 обеспечивает более высокую вероятность сохранности данных (по сравнению с "продвинутыми" журналируемыми файловыми системами) при гарантии непротиворечивости metadata. При этом происходит журналирование изменений только структуры файловой системы. Ext3 использует этот режим по умолчанию.
Ext3 имеет множество преимуществ. Она разработана для максимальной простоты развертывания. Она основана на годами проверенном коде ext2 и получила "по наследству" замечательный fsck tool. Ext3 в первую очередь предназначена для приложений, не имеющих встроенных возможностей по гарантированию сохранности данных. В целом, ext3 - замечательная файловая система и достойное продолжение ext2.Есть еще одна характеристика, положительно отличающая ext3 от остальных journaled filesystems под Linux - высокая надежность.

Файловая система ext4 является достойным эволюционным продолжением системы ext.

Файловые системы. Типы файловых систем. Операции с файлами. Каталоги. Операции с каталогами.

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

Основные цели использования файла.

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

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

Файловая система (ФС) - это часть операционной системы, включающая:

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

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

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

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

Широко известны следующие файловые системы:

    файловая система операционной системы MS - DOS , в основу которой положена таблица размещения файлов - FAT ( File Allocation Table ).

Таблица содержит сведения о расположении всех файлов (каждый файл делится на кластеры в соответствии с наличием свободного места на диске, кластеры одного файла не обязательно расположены рядом). Файловая система MS-DOS имеет значительные ограничения и недостатки, например, под имя файла отводится 12 байт, работа с жестким диском большого объема приводит к значительной фрагментации файлов;

Основные функции в такой ФС нацелены на решение следующих задач:

    именование файлов;

    программный интерфейс для приложений;

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

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

    OS /2 , называемая HPFS ( High - Performance File System - быстродействующая файловая система).

Обеспечивает возможность иметь имя файла до 254 символов. Файлы, записанные на диск, имеют минимальную фрагментацию. Может работать с файлами, записанными в MS DOS;

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

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

    файловая система операционной системы Windows 95

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

    файловые системы операционной системы Unix

Они обеспечивают унифицированный способ доступа к файловым системам ввода-вывода.

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

Типы файлов

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

Обычные файлы , или просто файлы, содержат информацию произвольного характера, которую заносит в них пользователь или которая образуется в результате работы системных и пользовательских программ. Большинство современных операционных систем (например, UNIX, Windows, OS/2) никак не ограничивает и не контролирует содержимое и структуру обычного файла. Содержание обычного файла определяется приложением, которое с ним работает. Например, текстовый редактор создает текстовые файлы, состоящие из строк символов, представленных в каком-либо коде. Это могут быть документы, исходные тексты программ и т. п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют коды символов, они часто имеют сложную внутреннюю структуру, например исполняемый код программы или архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип файлов - их собственные исполняемые файлы.

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

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

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

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

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

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

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

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

Имена файлов

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

Простое, или короткое, символьное имя идентифицирует файл в пределах одного каталога. Простые имена присваивают файлам пользователи и программисты, при этом они должны учитывать ограничения ОС как на номенклатуру символов, так и на длину имени. До сравнительно недавнего времени эти границы были весьма узкими. Так, в популярной файловой системе FAT длина имен ограничивались схемой 8.3 (8 символов - собственно имя, 3 символа - расширение имени), а в файловой системе s5, поддерживаемой многими версиями ОС UNIX, простое символьное имя не могло содержать более 14 символов. Однако пользователю гораздо удобнее работать с длинными именами, поскольку они позволяют дать файлам легко запоминающиеся названия, ясно говорящие о том, что содержится в этом файле. Поэтому современные файловые системы, а также усовершенствованные варианты уже существовавших файловых систем, как правило, поддерживают длинные простые символьные имена файлов. Например, в файловых системах NTFS и FAT32, входящих в состав операционной системы Windows NT, имя файла может содержать до 255 символов.

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

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

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

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

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

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

Атрибуты файлов

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

    тип файла (обычный файл, каталог, специальный файл и т. п.);

    владелец файла;

    создатель файла;

    пароль для доступа к файлу;

    информация о разрешенных операциях доступа к файлу;

    времена создания, последнего доступа и последнего изменения;

    текущий размер файла;

    максимальный размер файла;

    признак «только для чтения»;

    признак «скрытый файл»;

    признак «системный файл»;

    признак «архивный файл»;

    признак «двоичный/символьный»;

    признак «временный» (удалить после завершения процесса);

    признак блокировки;

    длина записи в файле;

    указатель на ключевое поле в записи;

    длина ключа.

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

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

Значения атрибутов файлов могут непосредственно содержаться в каталогах, как это сделано в файловой системе MS-DOS (рис. 7.6, а). На рисунке представлена структура записи в каталоге, содержащая простое символьное имя и атрибуты файла. Здесь буквами обозначены признаки файла: R - только для чтения, А - архивный, Н - скрытый, S - системный.

Рис. 7.6. Структура каталогов: а - структура записи каталога MS-DOS (32 байта), б - структура записи каталога ОС UNIX

Другим вариантом является размещение атрибутов в специальных таблицах, когда в каталогах содержатся только ссылки на эти таблицы. Такой подход реализован, например, в файловой системе ufs ОС UNIX. В этой файловой системе структура каталога очень простая. Запись о каждом файле содержит короткое символьное имя файла и указатель на индексный дескриптор файла, так называется в ufs таблица, в которой сосредоточены значения атрибутов файла (рис. 7.6, б).

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

Операции над файлами

Большинство современных ОС рассматривают файл как неструктурированную последовательность байт переменной длины. В стандарте POSIX над файлом определены следующие операции:

    int open ( char * fname , int flags , mode _ t mode )

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

Параметр char * fname задает имя файла.int flags - это битовая маска, определяющая режим открытия файла.Файл может быть открыт только на чтение, только на запись и начтение и запись; кроме того, можно открывать существующий файл,а можно пытаться создать новый файл нулевой длины.Необязательный третий параметр mode используется толькопри создании файла и задает атрибуты этого файла.

    off _ t lseek ( int handle , off _ t offset , int whence )

Эта операция перемещает указатель чтения/записи в файле.Параметр offset задает количество байт, на которое нужно сместитьуказатель, а параметр whence - откуда отсчитывать смещение.Предполагается, что смещение можно отсчитывать от начала файла(SEEK_SET), от его конца (SEEK_END) и от текущегоположения указателя (SEEK_CUR). Операция возвращает положениеуказателя, отсчитываемое от начала файла. Таким образом, вызовlseek(handle, 0, SEEK_CUR) возвратит текущее положение указателя,не передвигая его.

    int read(int handle, char * where, size_t how_much)

Операция чтения из файла. Указатель where задает буфер,куда нужно поместитьпрочитанные данные; третий параметр указывает, сколько данных надо считать.Система считывает требуемое число байт из файла, начиная с указателячтения/записи в этом файле, и перемещает указатель к концу считаннойпоследовательности. Если файл кончился раньше, считывается столько данных,сколько оставалось до его конца. Операция возвращает количествосчитанных байт. Если файл открывался только для записи, вызов readвозвратит ошибку.

    int write(int handle, char * what, size_t how_much)

Операция записи в файл. Указатель what задает начало буфера данных;третий параметр указывает, сколько данных надо записать.Система записывает требуемое число байт в файл, начиная с указателячтения/записи в этом файле, заменяя хранившиеся на в этом месте данные,и перемещает указатель к концу записанного блока. Если файл кончился раньше,его длина увеличивается. Операция возвращает количество записанных байт.

Если файл открывался только для чтения, вызов write возвратит ошибку.

    int ioctl(int handle, int cmd, ...) ; int fcntl ( int handle , int cmd , ...)

Дополнительные операции над файлом. Первоначально, по-видимому,предполагалось, что ioctl - это операции над самим файлом,а fcntl - это операции над дескриптором открытого файла,но потом историческое развитие несколько перемешало функции этих системныхвызовов. Стандарт POSIX определяет некоторые операции как наддескриптором, например дублирование (в результате этой операции мы получаемдва дескриптора, связанных с одним и тем же файлом), так и над самим файлом,например, операцию truncate - обрезать файл до заданной длины.В большинстве версий Unix операцию truncate можноиспользовать и для вырезания данных из середины файла. При считывании данныхиз такой вырезанной области считываются нули, а сама эта область незанимает физического места на диске.

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

Большинство реализаций стандарта POSIX предлагает и своидополнительные операции. Так, в Unix SVR 4 этими операциямиможно устанавливать синхронную или отложенную запись и т.д.

    caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int handle, off_t offset)

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

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

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

Примерно та же модель работы с файлами принята в CP / M ,а набор файловых системных вызовов MS DOS фактическископирован с вызовов Unix v 7 . В свою очередь, OS /2 и Windows NT унаследовали принципы работы с файламинепосредственно от MS DOS .

Напротив, в системах, не имеющих Unix в родословной,может использоваться несколько иная трактовка понятия файла.Чаще всего файл трактуется как набор записей. Обычно система поддерживаетзаписи как постоянной длины, так и переменной. Например, текстовый файлинтерпретируется как файл с записями переменной длины, а каждой строке текстасоответствует одна запись. Такова модель работы с файлами в VMS и в ОС линии OS /360 -MVS фирмы IBM.

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

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

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

Виды файловой системы

На каждом компьютерном устройстве применим особый тип ФС. Особо распространенные следующие ее типы:

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

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

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

В зависимости от того какие свойственные особенности присущи системе, с такими данными она и будет эффективно работать. А это и есть предпосылкой классификации ее на типы и виды.

Взгляд на файловую систему с точки зрения программирования

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

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

Ниже мы рассмотрим все существующие на сегодня ФС и их достоинства и недостатки.

FAT
Это самый древний тип файловой системы, который был разработан еще в далеком 1977 году. Она работала с операционкой ОС 86-DOS и не способна работать с жесткими носителями информации, и рассчитана на гибкие их типы и хранение информации до одного мегабайта. Если ограничение размера инфы сегодня не актуально, то иные показатели остались востребованными в неизменном виде.

Эта файловая система использовалась ведущей компанией разработчиком программных приложений – Майкрософт для такой операционки, как ОС MS-DOS 1.0.
Файлы этой системы имеют ряд характерных свойств:

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

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

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

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

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

NTFS
С операционкой ОС Windows NT работает современная файловая система NTFS, в принципе на нее она и была нацелена. В ее составе действует утилита convert, которая отвечает за конвертацию томов с формата HPFS или FAT, в формат томов NTFS.

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

Эта файловая система позволяет создавать информационные файлы с именами длинной в 255 символов.

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

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

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

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

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

Очень многие пользователи сталкиваются с уведомлением о том, что повреждена система RAW. Это действительно ФС или нет? Таким вопросом задаются многие. Оказывается, это не совсем так. Если объяснять на уровне языка программирования, то RAW – это ошибка, а именно логическая ошибка, которая внедрена уже в операционку Windows в целях обезопасить ее от выхода из строя. Если техника выдает какие-то сообщения по поводу RAW, значит нужно иметь в виду, что под угрозой структура файловой системы, которая работает неверно либо ей грозит постепенное разрушение.

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

UDF
Это файловая система для оптических дисков, котрая имеет свои особенности:

Наименования файлов не должны превышать 255 символов;
- именной регистр может быть как нижним, так и верхним.

Работает она с операционкой Windows XP.

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

Файловые системы. Типы файловых систем. Операции с файлами. Каталоги. Операции с каталогами.

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

Основные цели использования файла.

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

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

Файловая система (ФС) - это часть операционной системы, включающая:

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

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

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

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

Широко известны следующие файловые системы:

    файловая система операционной системы MS - DOS , в основу которой положена таблица размещения файлов - FAT ( File Allocation Table ).

Таблица содержит сведения о расположении всех файлов (каждый файл делится на кластеры в соответствии с наличием свободного места на диске, кластеры одного файла не обязательно расположены рядом). Файловая система MS-DOS имеет значительные ограничения и недостатки, например, под имя файла отводится 12 байт, работа с жестким диском большого объема приводит к значительной фрагментации файлов;

Основные функции в такой ФС нацелены на решение следующих задач:

    именование файлов;

    программный интерфейс для приложений;

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

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

    OS /2 , называемая HPFS ( High - Performance File System - быстродействующая файловая система).

Обеспечивает возможность иметь имя файла до 254 символов. Файлы, записанные на диск, имеют минимальную фрагментацию. Может работать с файлами, записанными в MS DOS;

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

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

    файловая система операционной системы Windows 95

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

    файловые системы операционной системы Unix

Они обеспечивают унифицированный способ доступа к файловым системам ввода-вывода.

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

Типы файлов

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

Обычные файлы , или просто файлы, содержат информацию произвольного характера, которую заносит в них пользователь или которая образуется в результате работы системных и пользовательских программ. Большинство современных операционных систем (например, UNIX, Windows, OS/2) никак не ограничивает и не контролирует содержимое и структуру обычного файла. Содержание обычного файла определяется приложением, которое с ним работает. Например, текстовый редактор создает текстовые файлы, состоящие из строк символов, представленных в каком-либо коде. Это могут быть документы, исходные тексты программ и т. п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют коды символов, они часто имеют сложную внутреннюю структуру, например исполняемый код программы или архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип файлов - их собственные исполняемые файлы.

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

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

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

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

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

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

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

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

Имена файлов

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

Простое, или короткое, символьное имя идентифицирует файл в пределах одного каталога. Простые имена присваивают файлам пользователи и программисты, при этом они должны учитывать ограничения ОС как на номенклатуру символов, так и на длину имени. До сравнительно недавнего времени эти границы были весьма узкими. Так, в популярной файловой системе FAT длина имен ограничивались схемой 8.3 (8 символов - собственно имя, 3 символа - расширение имени), а в файловой системе s5, поддерживаемой многими версиями ОС UNIX, простое символьное имя не могло содержать более 14 символов. Однако пользователю гораздо удобнее работать с длинными именами, поскольку они позволяют дать файлам легко запоминающиеся названия, ясно говорящие о том, что содержится в этом файле. Поэтому современные файловые системы, а также усовершенствованные варианты уже существовавших файловых систем, как правило, поддерживают длинные простые символьные имена файлов. Например, в файловых системах NTFS и FAT32, входящих в состав операционной системы Windows NT, имя файла может содержать до 255 символов.

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

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

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

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

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

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

Атрибуты файлов

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

    тип файла (обычный файл, каталог, специальный файл и т. п.);

    владелец файла;

    создатель файла;

    пароль для доступа к файлу;

    информация о разрешенных операциях доступа к файлу;

    времена создания, последнего доступа и последнего изменения;

    текущий размер файла;

    максимальный размер файла;

    признак «только для чтения»;

    признак «скрытый файл»;

    признак «системный файл»;

    признак «архивный файл»;

    признак «двоичный/символьный»;

    признак «временный» (удалить после завершения процесса);

    признак блокировки;

    длина записи в файле;

    указатель на ключевое поле в записи;

    длина ключа.

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

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

Значения атрибутов файлов могут непосредственно содержаться в каталогах, как это сделано в файловой системе MS-DOS (рис. 7.6, а). На рисунке представлена структура записи в каталоге, содержащая простое символьное имя и атрибуты файла. Здесь буквами обозначены признаки файла: R - только для чтения, А - архивный, Н - скрытый, S - системный.

Рис. 7.6. Структура каталогов: а - структура записи каталога MS-DOS (32 байта), б - структура записи каталога ОС UNIX

Другим вариантом является размещение атрибутов в специальных таблицах, когда в каталогах содержатся только ссылки на эти таблицы. Такой подход реализован, например, в файловой системе ufs ОС UNIX. В этой файловой системе структура каталога очень простая. Запись о каждом файле содержит короткое символьное имя файла и указатель на индексный дескриптор файла, так называется в ufs таблица, в которой сосредоточены значения атрибутов файла (рис. 7.6, б).

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

Операции над файлами

Большинство современных ОС рассматривают файл как неструктурированную последовательность байт переменной длины. В стандарте POSIX над файлом определены следующие операции:

    int open ( char * fname , int flags , mode _ t mode )

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

Параметр char * fname задает имя файла.int flags - это битовая маска, определяющая режим открытия файла.Файл может быть открыт только на чтение, только на запись и начтение и запись; кроме того, можно открывать существующий файл,а можно пытаться создать новый файл нулевой длины.Необязательный третий параметр mode используется толькопри создании файла и задает атрибуты этого файла.

    off _ t lseek ( int handle , off _ t offset , int whence )

Эта операция перемещает указатель чтения/записи в файле.Параметр offset задает количество байт, на которое нужно сместитьуказатель, а параметр whence - откуда отсчитывать смещение.Предполагается, что смещение можно отсчитывать от начала файла(SEEK_SET), от его конца (SEEK_END) и от текущегоположения указателя (SEEK_CUR). Операция возвращает положениеуказателя, отсчитываемое от начала файла. Таким образом, вызовlseek(handle, 0, SEEK_CUR) возвратит текущее положение указателя,не передвигая его.

    int read(int handle, char * where, size_t how_much)

Операция чтения из файла. Указатель where задает буфер,куда нужно поместитьпрочитанные данные; третий параметр указывает, сколько данных надо считать.Система считывает требуемое число байт из файла, начиная с указателячтения/записи в этом файле, и перемещает указатель к концу считаннойпоследовательности. Если файл кончился раньше, считывается столько данных,сколько оставалось до его конца. Операция возвращает количествосчитанных байт. Если файл открывался только для записи, вызов readвозвратит ошибку.

    int write(int handle, char * what, size_t how_much)

Операция записи в файл. Указатель what задает начало буфера данных;третий параметр указывает, сколько данных надо записать.Система записывает требуемое число байт в файл, начиная с указателячтения/записи в этом файле, заменяя хранившиеся на в этом месте данные,и перемещает указатель к концу записанного блока. Если файл кончился раньше,его длина увеличивается. Операция возвращает количество записанных байт.

Если файл открывался только для чтения, вызов write возвратит ошибку.

    int ioctl(int handle, int cmd, ...) ; int fcntl ( int handle , int cmd , ...)

Дополнительные операции над файлом. Первоначально, по-видимому,предполагалось, что ioctl - это операции над самим файлом,а fcntl - это операции над дескриптором открытого файла,но потом историческое развитие несколько перемешало функции этих системныхвызовов. Стандарт POSIX определяет некоторые операции как наддескриптором, например дублирование (в результате этой операции мы получаемдва дескриптора, связанных с одним и тем же файлом), так и над самим файлом,например, операцию truncate - обрезать файл до заданной длины.В большинстве версий Unix операцию truncate можноиспользовать и для вырезания данных из середины файла. При считывании данныхиз такой вырезанной области считываются нули, а сама эта область незанимает физического места на диске.

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

Большинство реализаций стандарта POSIX предлагает и своидополнительные операции. Так, в Unix SVR 4 этими операциямиможно устанавливать синхронную или отложенную запись и т.д.

    caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int handle, off_t offset)

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

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

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

Примерно та же модель работы с файлами принята в CP / M ,а набор файловых системных вызовов MS DOS фактическископирован с вызовов Unix v 7 . В свою очередь, OS /2 и Windows NT унаследовали принципы работы с файламинепосредственно от MS DOS .

Напротив, в системах, не имеющих Unix в родословной,может использоваться несколько иная трактовка понятия файла.Чаще всего файл трактуется как набор записей. Обычно система поддерживаетзаписи как постоянной длины, так и переменной. Например, текстовый файлинтерпретируется как файл с записями переменной длины, а каждой строке текстасоответствует одна запись. Такова модель работы с файлами в VMS и в ОС линии OS /360 -MVS фирмы IBM.