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

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

Читать: Тайны и секреты компьютера - Антон Орлов на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

Это и есть обьем файла, являющегося этим каталогом. Или, если у вас установлен пакет программ Norton Utilities для Windows, посмотрите на отчет программы Norton Speed Disk (рис. 8.4), — в нем показывается покластерная структура жесткого диска и указываются, какие файлы расположены в каждом кластере. В отчете вы увидите, что некоторые кластеры содержат файлы с именами каталогов — то есть файлы самих этих каталогов.


Рис. 8.4. Если хотите убедиться, что каталог реально из себя представляет файл с информацией об именах и физическим размещении других файлов на диске, посмотрите отчет программы Norton SpeedDisk. Она показывает, какие файлы записаны в том или ином кластере. Вы обязательно найдете записи вроде тех, что здесь — а это названия папок, не обычных файлов!

Кэширование

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

Но сам файл каталога тоже еще нужно считать. Для этого, вообще говоря, всегда должен быть выполнен весьма сложный алгоритм: считать файл корневого каталога диска, располагающийся всегда в одном и том же известном месте — сразу после FAT, найти в нем информацию о первом кластере того каталога, в котором содержится файл, который в конце концов должен быть считан, перейти к записи FAT, соответствующей найденному номеру первого кластера этого каталога, узнать из FAT, в каких кластерах содержится файл каталога, считать его, а потом повторить этот алгоритм сначала, до тех пор, пока не доберешься до каталога, непосредственно содержащего файл… Ясно, что весь этот процесс — «поход» в корневой каталог и затем по дереву каталогов, постоянное обращение то к файлам-каталогам, то к FAT, а лишь затем считывание самого файла — занимает немало времени. Поэтому операционные системы используют специальные методики для упрощения и ускорения работы с файлами. Самая простая и распространенная — это кэширование, то есть помещение часто используемых данных в оперативную память. Так, всегда кэшируется FAT, а также информация о структуре каталогов и располагающихся в них файлах. В операционных системах Windows95/98 задать количество кэшируемого материала можно в окне "Файловая система" вкладки «Быстродействие» пункта «Система» Панели управления (рис. 8.5).


Рис. 8.5. В операционных системах Windows95/98 здесь можно указать, сколько путей к папкам и файлам операционная система запомнит и будет потом использовать.

Если установить в этом окне параметр "Настольный компьютер", то операционной системой будет запоминаться информация о местоположении первых кластеров 32 каталогов и 677 файлов, к которым в последнее время происходило обращение, а если "Сервер сети" — то о первых кластерах 64 каталогов и 2729 файлов. Эта информация располагается в оперативной памяти и тем самым сокращает в какой-то степени ее обьем, доступный другим приложениям, но в любом случае выигрыш во времени и сбережении головок жесткого диска от износа при кэшировании очевиден.

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

Разделы

В начале жесткого диска, в его самом первом секторе самой первой дорожки располагается небольшая программа — так называемая "главная загрузочная запись" Master Boot Record. В том же секторе помещается Корневая Таблица Разделов ("Root Partition Table"), в которой располагаются сведения о разбиении всего физического пространства жесткого диска на разделы — участки диска с определенной файловой системой на них.

Раздел — это кольцевидная зона поверхности жесткого диска, находящаяся между двумя определенными цилиндрами. В Корневой Таблице Разделов указывается для каждого раздела, с какого сектора какой дорожки какого цилиндра он начинается и на каких заканчивается, сколько в нем всего секторов, какой тип файловой системы на нем установлен и является ли данный логический диск в данный момент загрузочным — то есть должна ли операционная система загружаться именно с него. Согласно стандартам IBM PC, всего в Корневой Таблице Разделов может быть описано не более четырех различных разделов, так как ее размер не должен превышать 512 байт вместе с Master Boot Record.

Внутренняя структура раздела определяется той файловой системой, которая на нем создана. Однако в начале каждого раздела обязательно располагается Загрузочная запись раздела ("Boot Record") — небольшая программа, выполняющая начальную загрузку операционной системы. Один из разделов, описанных в Корневой Таблице Разделов, помечается как «загрузочный», или «активный», и при загрузке компьютера Master Boot Record считывает Корневую Таблицу разделов, а затем считывает и запускает Boot Record того раздела, который помечен в этой таблице как загрузочный. (Сама Master Boot Record запускается BIOS'ом, запрограммированным считывать с диска и запускать на исполнение содержимое его первого сектора.)

С понятием «раздела» тесно связано понятие "логического диска", использующееся в операционных системах MS DOS и Windows. "Логический диск" — это некоторая часть жесткого диска, представляемая операционной системе как отдельное физическое устройство — как отдельный жесткий диск. При наличии нескольких логических дисков проще организовывать хранение данных, в частности, можно разнести системные файлы и данные пользователя.

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

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

Все изложенное проиллюстрировано на рис. 8.6.


Рис. 8.6. Структура жесткого диска, на котором в MS-DOS или Windows выделено несколько логических дисков.

Операционные системы MS-DOS и Windows допускают создание на жестком диске лишь одного Расширенного раздела DOS. Остальные разделы при этом могут содержать не более одного логического диска (то есть границы этих дисков попросту совпадают с границами разделов) и именуются Первичными разделами DOS.

В начале каждого логического диска размещается его Загрузочная запись ("Boot Record"), содержащая в себе информацию о размерах кластера на данном диске, а также о местах начала и конца обеих копий FAT, если на этом диске используется именно такая файловая система. Если логический диск является загрузочным (а это возможно в том случае, если он расположен в Первичном разделе DOS, помеченном в Корневой Таблице Разделов как активный, — в этом случае Master Boot Record загрузит Boot Record именно этого диска в память и запустит ее), то в его Boot Record содержится также и программа, обеспечивающая считывание файлов операционной системы, отвечающих за ее начальный запуск. Эта программа может считывать лишь определенные секторы диска (обычно, хоть и не обязательно, находящиеся сразу за корневым каталогом), поэтому и файлы начального запуска операционной системы обязательно должны располагаться в местах, известных BootRecord.[21]

На логических дисках, не являющихся загрузочными (например, расположенным в Расширенном разделе Dos), Boot Record служит просто для хранения информации о файловой системе.

Для разбиения нового жесткого диска на разделы часто используется программа Microsoft FDisk, входящая в состав MS-DOS и Windows 9x. При работе FDisk создаются Таблицы Разделов и все Загрузочные записи.

Если вы подготавливаете с помощью FDisk к работе новый чистый жесткий диск, единственный в компьютере, то FDisk следует скопировать на загрузочную дискету (вы можете найти эту программу в Windows 95/98 в подкаталоге Command папки, где установлена Windows) при ее изготовлении, а затем загрузиться с этой дискеты и запустить программу. После запуска FDisk вы увидите вопрос о включении поддержки больших дисков. Согласившись на ее использование, вы сможете создавать разделы с файловой системой FAT32. Сделать это стоит. Затем вы перейдете в основное меню программы (рис. 8.7), после чего можете выполнять разбиение диска. Интерфейс у программы достаточно понятный, так что работать с ней легко, если, конечно, знать о значении всех терминов.


Рис. 8.7. Microsoft FDisk

После окончания работы fdisk не забудьте отформатировать полученные логические диски командой format (из них диск С: — как системный: format C: /s). Все — жесткий диск готов для установки на него операционной системы.

Например, сначала на пустом диске выделите Primary Dos Partition — основной раздел DOS размером в 2–4 гигабайта. Все остальное место отведите под Extended DOS Partition — дополнительный раздел DOS, если вы, конечно, не собираетесь работать с Unix или Linux. В Extended DOS Partition выделите 3–5 логических дисков обьемом до 2 гигабайт, а остальное отведите под один большой диск.

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

У программы FDisk есть также некоторые неявные параметры, которые могут иногда помочь восстановить работоспособность компьютера. Скажем, некоторые вирусы в результате своей деятельности уничтожают содержимое Master Boot Record, и компьютер перестает загружаться, так как не может найти и использовать Корневую Таблицу Разделов (ведь именно это делает программа, записанная в Master Boot Record). Исправить эту ситуацию можно, загрузив компьютер с дискеты, содержащей FDisk, и введя команду fdisk/mbr. Если у вас два или больше жестких дисков, то ключ должен выглядеть как /cmbr <номер диска> для восстановления загрузочной записи на соответствующем устройстве.

Возможности FDisk по работе с диском несколько ограничены — в частности, она умеет выделять только один Первичный раздел DOS на одном жестком диске. Поэтому на дисках, подготовленных с помощью FDisk, присутствуют лишь Первичный раздел DOS, содержащий загрузочный логический диск (по традиции обозначаемый буквой С) и Расширенный раздел DOS, содержащий цепочку логических дисков. Программа Disk Administrator, входящая в состав Windows 2000/XP, является более мощной и позволяет использовать Корневую Таблицу Разделов по максимуму, создавая на диске до 4 Первичных разделов DOS.

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

Если на жестком диске уже есть информация, но его разбиение на логические диски вас не устраивает, то его можно изменить с помощью той же Partition Magic. Эта программа самостоятельно перестроит структуру диска, не стирая данные. Существует много специальной литературы об эффективной работе с ней, в том числе и книг, так что если интересуетесь, почитайте их или ознакомьтесь с ее Руководством пользователя. Partition Magic также может использоваться вместо FDisk или Disk Administrator, так как ее интерфейс удобнее, а сама она работает быстрее, чем упомянутые программы.

Размеры и обьемы

Размер одного кластера определяется размером логического диска и установленным типом файловой системы. Операционные системы MS-DOS, Windows 3.11 и первые версии Windows 95 могли работать лишь с файловой системой FAT16. Размер одной записи в FAT16 (содержащей номер следующего кластера файла), как уже было сказано, составляет 16 бит. Поскольку 2 в 16-й степени составляет 65536, то и количество номеров кластеров, а, следовательно, и самих кластеров при использовании 16-разрядной таблицы размещения файлов на одном логическом диске не может быть больше 65536. Так как максимальный размер кластера в FAT16 согласно стандартам может составлять 32 кб (это, впрочем, не фиксированное ограничение), то и максимальный размер логического диска с FAT16 будет 32*65536=2 гигабайта.

Поскольку в FAT16 может адресоваться не более 65536 кластеров, то в ней не может быть больше 65536 записей. При длине одной записи в 16 бит обьем самой FAT16 составит тогда 128 кб.

В файловой системе FAT32 для указания номеров следующих кластеров в файле используется записи длиной в 32 бита. Следовательно, всего в ней может адресоваться 232= 4294967296 кластеров. При размере кластера в 32 кб максимальный обьем логического диска с FAT32 составит 232*32 кб=131 гб (а размер самой FAT тогда составит 16 гигабайт!), что превышает размеры большинства существующих сейчас моделей винчестеров. Поэтому возможность выделения на логическом диске такого большого количества кластеров используется для того, чтобы уменьшить размер кластера — обычно он для FAT32 составляет 4 кб. Но даже при таком малом размере кластера максимальный обьем логического диска составит 16 гб, поэтому обычно все возможности системы FAT32 не используются и количество кластеров на диске меньше 232.

Так как, во-первых, для размещения информации о кластере в FAT32 используется в два раза больше места, чем в FAT16, а, кроме того, количество кластеров при использовании FAT32 бывает куда как больше, чем 65536, например, при размере кластера в 4 кб и размере диска в 8 гб кластеров будет 2147483648, то размер самой 32-разрядной таблицы FAT значительно больше размера 16-разрядной — в данном случае 8 мегабайт против 128 кб. Это, в частности, приводит к тому, что на компьютерах с малым количеством оперативной памяти вся 32-разрядная FAT не умещается в оперативной памяти при ее недостаточном количестве и при работе с файлами операционной системе приходится часто считывать ее нужный фрагмент с диска, что вызывает снижение быстродействия. Кроме того, при большом количестве кластеров таблица FAT занимает весьма много места на диске и тем самым сокращает его полезный обьем, тем более что на диске всегда имеется две ее копии — одна из них резервная. (Именно поэтому обьем установленного в компьютер и отформатированного жесткого диска всегда меньше того обьема, который указывает для него производитель, — потому что некоторую часть диска занимают две копии FAT и некоторая служебная информация.)

С файловой системой FAT32 могут напрямую работать операционные системы Windows (за исключением Windows 3.11 и первых версий Windows95), а также Linux с помощью особых программ.

Информация о типе файловой системы, размере кластера, размере самой таблицы FAT, а также о количестве копий FAT на жестком диске содержится в Boot Record, находящейся сразу перед первой копией FAT.

Проблемы кластерной организации

Потери

Кластерная организация данных на жестком диске, обеспечивая возможность многократного удаления и создания файлов, приводит к двум большим проблемам. Первая — это потери дискового пространства. Так как в подавляющем большинстве случаев размер файлов не кратен размерам кластеров, то последний кластер, помеченный в FAT как принадлежащий какому-либо файлу, оказывается заполненным не полностью. Это место уже не может стать частью другого файла, и поэтому не может быть использовано. Если файлов много, то общее количество такого «потерянного» места становится немалым. Особенно такая потеря проявляется при размещении на жестком диске большого количества мелких файлов, размер которых меньше размера кластера. Так, при размере кластера в 32 килобайта 10 файлов по 3 килобайта займут на жестком диске не 30 килобайт, как могло бы показаться, а 320. В самом крайнем случае для сохранения файла размером один байт операционная система выделит на диске один кластер размером 32 килобайта.

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

Информацию о размере кластера и количестве их на диске можно получить, используя программу Scandisk для Windows 95/98 (рис. 8.8).


Рис. 8.8. Информация программы ScanDisk.

Фрагментация

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

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

Пути решения

Путь решения проблемы потерь дискового пространства напрашивается сразу — уменьшить размер кластера. В самом деле, если кластер имеет размер 4 кб, а не 32, то пустого места в нем может остаться в 8 раз меньше, чем при использовании кластеров в 32 кб. Используя FAT16, для этого надо уменьшить размер логического диска (в самом деле, на диске в 1 гигабайт минимальный размер кластера будет 1024*1024/65536=16 килобайт, а на диске в 512 мегабайт — 1024*512/65536=8 килобайт). В FAT32 размер кластера в 4 кб является вполне нормальным и может использоваться на логических дисках размером до 16 гигабайт.

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

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


Рис. 8.9. Не правда ли, странно? Как будто капли дождя на стекле.

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

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

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

Проблема выбора

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

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

Также имеется вопрос — а какая файловая система лучше, FAT16 или FAT32? Тут необходимо оценить, что важнее. FAT32 позволяет установить меньший размер кластера и разбивать винчестер на логические диски больших размеров — больше 2 гигабайт. Но при этом сама 32-разрядная таблица FAT занимает больше места на диске, труднее кэшируется, а файлы, записанные на диске с малым размером кластера, сильнее фрагментируются, что может привести к меньшему быстродействию FAT32 по сравнению с FAT16. Кроме того, с FAT32 не могут работать ни MS DOS, ни Windows NT. Что здесь выбрать — решать вам.

Стоит запомнить:

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

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

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

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

Путаница

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

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

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

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

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

Все описанные ситуации могут серьезно затруднить работу с файлами. Общие кластеры приводят к потерям данных, а потерянные — к трате свободного места и утере их содержимого. Чтобы исправить подобные ошибки файловой системы, используются программы для проверки дисков — например, ScanDisk из поставки Windows или Norton Disk Doctor из комплекта Norton Utilities. Эти программы анализируют FAT и структуру каталогов, и в случае обнаружения потерянных кластеров сохраняют их в отдельные файлы, а общие кластеры копируют для каждого из их файлов.

Много интересных материалов об устройствах различных файловых систем и их характеристиках можно найти на сервере www.ixbt.ru, в разделе http://www.ixbt.ru/storage[23] ].



Поделиться книгой:

На главную
Назад