Сколько файлов может содержать диск

Обновлено: 19.05.2024

Все что до "Загрузочного блока" и включая его одинаково у всех ОС. Дальше начинаются различия.

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

2.2 Реализация файлов

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

2.2.1 Непрерывные файлы

Выделяется каждому файлу последовательность соседних блоков.

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

Преимущества такой системы:

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

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

Диск сильно фрагментируется

Сейчас такая запись почти не используется, только на CD-дисках и магнитных лентах.

2.2.2 Связные списки

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

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

Номер следующего блока хранится в текущем блоке.

Нет потерь дискового пространства на фрагментацию

Нужно хранить информацию только о первом блоке

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

Уменьшается размер блока из-за хранения служебной информации

2.2.3 Связные списки при помощи таблиц в памяти

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

FAT (File Allocation Table) - таблица размещения файлов загружаемая в память.

Рассмотри предыдущий пример, но в виде таблицы.

Таблица размещения файлов

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

Основной не достаток этого метода - всю таблицу надо хранить в памяти. Например, для 20Гбайт диска, с блоком 1Кбайт (20 млн. блоков), потребовалась бы таблица в 80 Мбайт (при записи в таблице в 4 байта).

Такие таблицы используются в MS-DOS и Windows.

2.2.4 i - узлы

С каждым файлом связывается структура данных, называемая i-узлом (index-node- индекс узел), содержащие атрибуты файла и адреса всех блоков файла.

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

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

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

Такие узлы используются в UNIX.

2. 3 Реализация каталогов

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

В зависимости от системы это может быть:

дисковый адрес всего файла (для непрерывных файлов)

номер первого блока (связные списки)

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

Также она хранит атрибуты файлов.

Варианты хранения атрибутов:

В каталоговой записи (MS-DOS)

Варианты реализации каталогов

2. 3.1 Реализация длинных имен файлов

Раньше операционные системы использовали короткие имена файлов, MS-DOS до 8 символов, в UNIX Version 7 до 14 символов. Теперь используются более длинные имена файлов (до 255 символов и больше).

Методы реализации длинных имен файлов:

Просто выделить место под длинные имена, увеличив записи каталога. Но это займет много места, большинство имен все же меньше 255.

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

Второй метод можно реализовать двумя методами:

Имена записываются сразу после заголовка (длина записи и атрибутов)

Имена записываются в конце каталога после всех заголовков (указателя на файл и атрибутов)

Реализация длинных имен файлов

2. 3.2 Ускорение поиска файлов

Если каталог очень большой (несколько тысяч файлов), последовательное чтение каталога мало эффективно.

2. 3.2.1 Использование хэш-таблицы для ускорения поиска файла.

Алгоритм записи файла:

Создается хэш-таблица в начале каталога, с размером n (n записей).

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

Исследуется элемент таблицы соответствующий хэш-коду.

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

Если используется, то создается связный список, объединяющие все описатели файлов с одинаковым хэш-кодом.

Алгоритм поиска файла:

Имя файла хэшируется

По хэш-коду определяется элемент таблицы

Затем проверяются все описатели файла из связного списка и сравниваются с искомым именем файла

Если имени файла в связном списке нет, это значит, что файла нет в каталоге.

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

2. 3.2.2 Использование кэширования результатов поиска файлов для ускорения поиска файла.

Алгоритм поиска файла:

Проверяется, нет ли имени файла в кэше

Если нет, то ищется в каталоге, если есть, то берется из кэша

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

2.4 Совместно используемые файлы

Иногда нужно чтобы файл присутствовал в разных каталогах.

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

А - совместно используемый файл.

Такая файловая система называется ориентированный ациклический граф (DAG, Directed Acyclic Graph).

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

Есть два решения этой проблемы:

Использование i-узлов, в каталогах хранится только указатель на i-узел. Такие ссылки называются жесткими ссылками.

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

2.4.1 Жесткие ссылки

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

Поэтому в этом случае при удалении файла i-узел лучше не удалять.

Файл будет удален только после того, как счетчик будет равен 0.

Иллюстрация проблемы, которая может возникнуть

2.4.2 Символьные ссылки

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

Удаление ссылки тоже никак не скажется на файле.

Но возникают накладные расходы, чтобы получить доступ к i-узлу, должны быть проделаны следующие шаги:

Прочитать файл-ссылку (содержащий путь)

Пройти по всему этому путь, открывая каталог за каталогом

2.5 Организация дискового пространства

2.5.1 Размер блока

Если принято решение хранить файл в блоках, то возникает вопрос о размере этих блоков.

Есть две крайности:

Большие блоки - например, 1Мбайт, то файл даже 1 байт займет целый блок в 1Мбайт.

Маленькие блоки - чтение файла состоящего из большого числа блоков будет медленным.

Скорости чтения/записи и эффективность использования диска,
в системе с файла одинакового размера 2 Кбайта.

В UNIX системах размер блока фиксирован, и, как правило, равен от 1Кбайта до 4Кбайт.

В MS-DOS размер блока может быть от 512 до 32 Кбайт в зависимости от размера диска, поэтому FAT16 использовать на дисках больше 500 Мбайт не эффективно.

В NTFS размер блока фиксирован (от 512байт до 64 Кбайт), как правило, равен примерно 2Кбайтам (от 512байт до 64 Кбайт).

2.5.2 Учет свободных блоков

Основные два способа учета свободных блоков :

Связной список блоков диска, в каждом блоке содержится номеров свободных блоков столько, сколько вмешается в блок. Часто для списка резервируется нужное число блоков в начале диска.
Недостатки:
- Требует больше места на диске, если номер блока 32-разрядный, требуется 32бита для номера
- Излишние операции ввода/вывода, т.к. в памяти не хранятся все блоки, а, например, только один блок

Битовый массив (бит-карта) - для каждого блока требуется один бит.

Основные два способа учета свободных блоков

2.5.3 Дисковые квоты

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

Два вида лимитов:

Жесткие - превышены быть не могут

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

Наиболее распространенные квоты:

Объем использования диска

Количество открытых файлов

2.6 Надежность файловой системы

2.6.1 Резервное копирование

Случаи, для которых необходимо резервное копирование:

Аварийные ситуации, приводящие к потере данных на диске

Случайное удаление или программная порча файлов

Основные принципы создания резервных копий:

Создавать несколько копий - ежедневные, еженедельные, ежемесячные, ежеквартальные.

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

Применять инкрементные резервные копии - сохраняются только измененные файлы

Сжимать резервные копии для экономии места

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

Хранить резервные копии в защищенном месте, не доступном для посторонних.

Существует две стратегии:

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

Логическая архивация - работает с файлами и каталогами. Применяется чаще физической.

2.6.2 Непротиворечивость файловой системы

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

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

В Windows - scandisk.

Если произошел сбой, то во время загрузки они проверяют файловую систему (если файловая система журналируемая, такая проверка не требуется).

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

Два типа проверки на непротиворечивость системы:

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

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

2.7 Производительность файловой системы

Так как дисковая память достаточно медленная. Приходится использовать методы повышающие производительность.

2.7.1 Кэширование

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

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

Ситуация схожа со страничной организацией памяти, можно применять те же алгоритмы.

Нужно чтобы измененные блоки периодически записывались на диск.

В UNIX это выполняет демон update (вызывая системный вызов sync).

В MS-DOS модифицированные блоки сразу записываются на диск (сквозное кэширование).

2.7.2 Опережающее чтение блока

Если файлы считываются последовательно, и когда получен к-блок, можно считать блок к+1 (если его нет в памяти). Что увеличивает быстродействие.

2.7.3 Снижение времени перемещения блока головок

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

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

зависит от фаловой системы на диске.
общее количество:
NTFS - Неограниченно Пока память на диске не кончится.
FAT32 не более 65534.
Для каждой папки - не помню. в фат12 что-то около 64 кажется.

вот еще для фат32:
Максимальное количество файлов в корневом каталоге 512
Максимальное количество файлов в некорневом каталоге Неограничено

после несколько десятков тысяч уже зависать нереально будет ответ таков
бесконечное!! !
все зависиот от обьема физической памяти логичиского диска.. .
Парится ни должно никогда, только если у тебя стоит антивирус любого типа, тогда будет слегка париться, потому что антивирус следит за тем где ты лазиешь. Значит чем больше файлов в папке и чем больше они весят, теб дольше антивирус будет их обрабатывать. неограниченное колличество. Пока память на диске не кончится. :) и ты посмотри - тока 1 чел нормально ответил из 6ти.. . делаем выводы - в стране 5/6 - полные идиоты (по крайней мере по компам)

И кто это адекватно ответил? первый? чушь вообще ))

в fat32 папка 65534

макс размер файла 4 гигабайта

ntfs папка 4,294,967,295

макс размер файла 256 терабайт

Я думаю, что имели ввиду человека, который с практической точки зрения ответил в формате "как есть", а не как должно быть теоретически. Будет виснуть, если будет стоять антивирь, а он стоять будет, а значит и виснуть будет. Просто необходимо понимать для чего задаётся этот вопрос, если человек озвучивает, что в перспективе (например, через год) файлов будет уева-тутуева, то будет ли виснуть? А на самом деле вопрос, возможно, стоял по-другому: придётся ли мне через год менять структуру, всё переделывать, только уже с большим багажом на плечах, боясь допустить ошибку, прервав рабочие процессы, начать обкатывать новую систему с нуля?
Ответ такой, сегментируйте файлы, чтобы в ближайшие 5 лет на нём не скопилось более 10 тысяч файлов и папок. Найдите среди них что-то общее и просто сегментируйте их, чтобы избежать дополнительных трудностей, которые сожрут овер9000 часов рабочего времени через год.

Я понимаю, что отвечаю поздно, но просто эти ответы до сих пор выдаются Поисковыми Системами, и люди их читают, значит вопрос до сих пор актуальный)




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

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

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

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

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

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

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

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

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

Рис. 1.4. Пример иерархической файловой системы

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

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

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

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

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

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

Рис. 1.5. Иерархическая структура папок

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

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

сколько файлов может содержать папка? У меня 30К папок в папке 1. Каждая из папок имеет 1 файл изображения. Есть ли ограничение на количество файлов в папке может храниться?

Я использую Windows Server 2003, IIS6.

Примечание: предполагая NTFS, так как никто в здравом уме не будет использовать FAT ни для чего другого, кроме USB-накопителей или карт памяти, не говоря уже о сервере (ok, это мысль-это страшно).

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

NTFS имеет максимум 4,294,967,295 (2 32 - 1) файлов на томе. Некоторые из них уже используются самой файловой системой, и папка также должна считаться файлами.

30,000 не так уж много файлов. Но Microsoft рекомендует что ты выключить автоматическое создание DOS-совместимых коротких имен, если вы двигаетесь мимо 300,000, как найти уникальное короткое имя становится трудно, то.

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

разберем по файловой системе:

•жир aka FAT16

жир, для таблицы распределения файлов, является преемником оригинальной файловой системы FAT12, поставляемой с MS-DOS много, много лет назад.

Maximum максимальный размер диска: 4 гигабайта

◦максимальный размер файла: 4 ГБ

◦максимальное количество файлов на диске: 65,517

Maximum максимальное количество файлов в одной папке: 512 (если я правильно помню, корневая папка "/" имела нижний предел 128).

•FAT32

" там нет практических лимит на общий размер всех файлов в папке, хотя там может быть ограничения на количество файлов в папке."FAT32 был введен для преодоления некоторых ограничений FAT16.

◦максимальный размер диска: 2 ТБ

◦максимальный размер файла: 4 ГБ

◦максимальное количество файлов на диске: 268,435,437

◦максимальное количество файлов в одной папке: 65 534

•NTFS

NTFS, или " новая технология Файловая система", введенная в Windows NT, является полностью переработанной файловой системой.

◦максимальный размер диска: 256 терабайт

◦максимальный размер файла: 256 терабайт

◦максимальное количество файлов на диске: 4,294,967,295

◦максимальное число файлов в одной папке: 4,294,967,295

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

Также обратите внимание, что ограничение NTFS в 256 терабайт вполне может быть просто ограничение реализации - я читал, что формат NTFS может поддерживать диски до 16 эксабайт (16 раз 1,152,921,504,606,846,976 байт).

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

  • скорость доступа к данным;
  • объем адресной информации файла;
  • степень фрагментированности дискового пространства;
  • максимально возможный размер файла.

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

  • непрерывное размещение (непрерывные файлы);
  • сводный список блоков (кластеров) файла;
  • сводный список индексов блоков (кластеров) файла;
  • перечень номеров блоков (кластеров) файла в структурах, называемых i-узлами (index-node – индекс-узел).

Простейший вариант физической организации – непрерывное размещение в наборе соседних кластеров (рис. 7.15a). Достоинство этой схемы – высокая скорость доступа и минимальный объем адресной информации, поскольку достаточно хранить номер первого кластера и объем файла. Размер файла при такой организации не ограничивается.

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

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

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

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


Рис. 7.15. Варианты физической организации файлов

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

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

Вариант физической организации файлов


Рис. 7.16. Вариант физической организации файлов

Такая таблица , называемая FAT -таблицей (File Allocation Table ), используется в файловых системах MS- DOS и Windows ( FAT 16 и FAT 32). Файлу выделяется память на диске в виде связного списка кластеров. Номер первого кластера запоминается в записи каталога, где хранятся характеристики этого файла. С каждым кластером диска связывается индекс . Индексы располагаются в FAT -таблице в отдельной области диска. Когда память свободна, все индексы равны нулю. Если некоторый кластер N назначен файлу, то индекс этого кластера либо становится равным номеру M следующего кластера файла, либо принимает специальное значение , являющееся признаком того, что кластер является последним для файла. Вообще индексы могут содержать следующую информацию о кластере диска (для FAT 32):

  • не используется (Unused) – 0000.0000;
  • используется файлом (Cluster in use by a file) – значение, отличное от 000.000, FFFF.FFFF и FFFF.FFF7;
  • плохой кластер ( Bad cluster ) – FFFF.FFF7;
  • последний кластер файла (Last cluster in a file) – FFFF.FFFF.

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

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

Вариант физической организации файлов


Рис. 7.17. Вариант физической организации файлов

Эффективный метод организации файлов, используемый в Unix -подобных операционных системах, состоит в связывании с каждым файлом структуры данных, называемой i-узлами. Такой узел содержит атрибуты файла и адреса кластеров файла (рис. 7.18). Преимущество такой схемы перед FAT -таблицей заключается в том, что каждый конкретный i-узел должен находиться в памяти только тогда, когда открыт соответствующий ему файл . Если каждый узел занимает n байт , а одновременно может быть открыто k файлов, то массив i-узлов займет в памяти k * n байт , что значительно меньше, чем FAT - таблица .

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

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


Рис. 7.18. вариант физической организации файлов

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

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

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

Для хранения адреса файла выделено 15 полей, каждое из которых состоит из 4 байт . Если размер файлов меньше или равен 12 кластерам, то номера этих кластеров непосредственно перечисляются в первых двенадцати полях адреса. Если кластер имеет размер 8 Кбайт, то можно адресовать файл размеров до 8 Кбайт * 12 = 98304 байт . Если размер кластера превышает 12 кластеров, то следующее 13 поле содержит адрес кластера, в котором могут быть расположены номера следующих кластеров, и размер файла может возрасти до 8192 * (12 + 2048) = 16.875.520 байт .

Следующий уровень адресации, обеспечиваемый 14-м полем, позволяет адресовать до 8192 * (12 + 2048 + 20482) = 3,43766*1020 байт . Если и этого недостаточно, используется следующее 15-е поле . В этом случае максимальный размер файла может составить 8192 * (12 + 2048 + 20482 + 20483) = 7,0403*1013 байт .

При этом объеме самой адресной информации составит всего 0,05% от объема адресуемых данных (задачи. ).

Метод перечисления адресов кластеров файла задействован и в файловой системе NTFS , применяемой в Windows NT/2000/2003. Для сокращения объема адресной информации в NTFS адресуются не кластеры файла, а непрерывные области, состоящие из смежных кластеров диска. Каждая такая область называется экстентом ( extent ) и описывается двумя числами: номером начального кластера и количеством кластеров.

Читайте также: