Интернет-журнал 'Домашняя лаборатория', 2007 №3 - Мёрфи
Шрифт:
Интервал:
Закладка:
Поскольку в 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. Тогда кластеров, не до конца Заполненных данными, будет мало. Также можно использовать сжатие дисков (при этом все содержимое диска фактически хранится в одном файле), но это очень опасно в плане надежности хранения.
Предотвратить фрагментацию файлов труднее. В какой-то степени механизмы ее предотвращения заложены в