KnigaRead.com/

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

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Антон Орлов, "Тайны и секреты компьютера" бесплатно, без регистрации.
Перейти на страницу:

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


Таблица FAT

Таблица FAT — это как бы уменьшенное изображение строения всего жесткого диска (рис. 8.2). Она состоит из отдельных записей-"строчек" с информацией о последовательности кластеров в файлах.



Рис. 8.2. Если вы хотите наглядно представить себе, что такое FAT, то запустите программу дефрагментации диска из Windows95/98 и отобразите сведения о диске. Вот FAT — это примерно то же самое, только там вместо цветных квадратиков — отдельные записи, описывающие состояние каждого кластера диска.


В каждой записи FAT содержится информация следующих видов:

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

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

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

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

Каждая запись в FAT имеет вполне определенную длину — 12, 16 или 32 бита. В зависимости от длины отдельных таких записей в FAT ее разновидности так и называются — FAT12, FAT16 и FAT32.

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

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

Узнать, какая файловая система установлена на вашем жестком диске, в операционных системах Windows можно в окне "Свойства диска". (Файловая система FAT16 обозначается как просто "FAT".)

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

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

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


Каталоги

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

А хранится она в каталогах.

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

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

В файлах каталогов, созданных в Windows95 и более старших версиях этой операционной системы, в каждом дескрипторе хранится как длинное имя файла, так и короткое — вида progra~1.exe, которое находится в том же месте дескриптора, что и в каталогах, созданных в MS-DOS. Таким образом обеспечивается возможность работы с созданными в Windows каталогами в старых операционных системах — эти системы смотрят в файл каталога и считывают оттуда лишь короткие имена файлов, а системы Windows умеют считывать из дескрипторов еще и длинные имена. Естественно, что при копировании или перемещении средствами MS-DOS файлов, созданных в Windows, длинные имена теряются, так как в этом случае операционная система MS-DOS копирует данные о файлах из одного файла каталога в другой, а так как она не умеет читать ту часть дескрипторов этих файлов, в которой записаны их длинные имена, то она их и игнорирует.

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

Так как каталог — это обычный файл, то пустой каталог все равно будет занимать место на диске. К примеру, создайте на пустой дискете пустую папку и посмотрите обьем дискеты. На ней будет занято 512 байт (рис. 8.3).



Рис. 8.3. Пустая папка тоже занимает место.


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



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


Кэширование

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

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

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*