▊I.2. Схема хранения данных на дискете Золотое правило Мэрфи: у каждого облада﹣ теля золота - свои правила. Закон Мэрфи Опишем схему хранения данных, используемую в MSX-DOS: 1) для хранения данных используются стандартные 512-байтные сектора; 2) никакие сектора или области на дискете не резервируются; 3) распределение секторов данных и объединение секторов, образующих файл данных, выполняется независимо от обслуживания самих секторов дан﹣ ных, с помощью механизма, получившего название \/T0/1 ▁▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▚ ▕ Таблица Размещения Файлов ▕ ▕ (ТРФ или FAT ▊ "Files Allocation Table") ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▔ \/T1/1- 4) каждая дискета имеет каталог, который служит для учета файлов, хранящихся на дискете. Описанная схема хранения данных предполагает существование ▇четырех различных типов секторов, один из которых используется для хранения данных, а три других имеют специальное назначение. Любая дискета имеет ▇программу загрузки операционной системы,▁ записы﹣ вающуюся в самом первом секторе дискеты (▇нулевом секторе▁), который на﹣ зывается ▇загрузочным сектором (англ. ▊ "boot sector")▁. Программа загрузки всегда записывается в загрузочный сектор любой форматируемой дискеты независимо от того, будет ли данная дискета ког﹣ да-нибудь использоваться для запуска операционной системы. Сектор с программой загрузки и запуска системы представляет собой ▧пeрвый▁ специ﹣ альный тип сектора в MSX-DOS. ▧Второй▁ специальный тип сектора используется для хранения Таблицы Размещения Файлов (FAT). FAT занимает два или три (в зависимости от па﹣ раметров форматирования) сектора, непосредственно следующих за сектором с программой загрузки. Таблица Размещения Файлов служит для индикации занятости секторов данных на дискете. ▧Третий▁ и последний специальный тип сектора используется для хранения ▇каталога▁ ("Directory", директории, Справочник) дискеты. Каталог распо﹣ лагается вслед за Таблицей Размещения Файлов и занимает ▇семь▁ секторов на дискете. Эти сектора специального назначения занимают ⁃двенадцать первых сек﹣ ⁃торов односторонней дискеты▁ или ⁃четырнадцать - двухсторонней▁. Все ос﹣ тальные сектора ("Data Area") используются для хранения ▇данных. Каталог и Таблица Размещения Файлов располагаются в начале дискеты. На первый взгляд это представляется оптимальным размещением. Однако при доступе к файлу операционная система MSX-DOS сначала должна найти эле﹣ мент этого файла в каталоге, а потом обратиться собственно к данным на носителе. В среднем, расстояние между каталогом и файлом на дискете составляет 20 треков, то есть, практически половину дискеты. Перемеще﹣ ние головок чтения-записи в дисководе является самой медленной опера﹣ цией. Так что расстояние между каталогом и самим файлом может иметь важное значение с точки зрения временных характеристик работы. Если бы каталог располагался в середине дискеты, то среднее рассто﹣ яние до секторов данных уменьшилось бы вдвое, т.е. до 10 треков. С дру﹣ гой стороны, работа с пространством данных, состоящим из двух частей (по обе стороны от каталога) будет значительно сложнее. Для операцион﹣ ных систем персональных компьютеров выгода от размещения каталога в се﹣ редине дискеты слишком мала, чтобы браться за разрешение возникающих при этом дополнительных проблем. Итак, область памяти на диске распределена следующим образом: \/T0/1 ▁▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▚ ▕ Загрузочный ▕ Информация о дискете и ▕ ▕ сектор ▕ программа, запускающая MSX-DOS ▕ ▕("boot sector")▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊ ▕ Таблица Разме-▕ ▕ ▕ щения Файлов ▕ Информация о занятости кластеров дискеты ▕ ▕ ("FAT") ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊ ▕ Каталог ▕ Информация о файлах ▕ ▕ ("Directory") ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊ ▕ Область данных▕ Область для размещения содержимого файлов ▕ ▕ ("Data Area") ▕ ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▔ \/T1/1- Приведем схему расположения и нумерации секторов для: \/T0/1 ▁▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▚ ▕ ▕ ▕ a) ▇одностороннего диска▁: ▕ ▕ ▕ ▕ ▁▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▚ ▕ ▕ ▕O сектор▕1 сектор▕2 сектор▕3 сектор▕4 сектор▕ ▕ ▕ ▇▊▊▲▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▔ ▕ ▕ ▕ ▕◀▊▊▊▊▊▊FAT ▊▊▊▊▊▶▕◀▊▊ Копия FAT ▊▊▶▕ ▕ ▕ ▕ ▕ ▕ Загрузочный сектор ("Boot sector") ▕ ▕ ▕ ▕ ▕ ▕ ▁▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▚ ▕ ▕ ▕5 сектор▕6 сектор▕7 сектор▕8 сектор▕9 сектор▕A сектор▕B сектор▕ ▕ ▕ ▇▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▔ ▕ ▕ ▕◀▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊ Каталог ("Directory") ▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▶▕ ▕ ▕ ▕ ▕ ▕ ▕ ▁▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▚ ▕ ▕ ▕C сектор▕D сектор▕E сектор▕F сектор▕10 сектор▕11 сектор▕ ... ▕ ▕ ▕ ⁃▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊ ▕ ▕ ▕ 2-й кластер ▕ 3-й кластер ▕ 4-й кластер ▕ ... ▕ ▕ ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▔ ▕ ▕ ▕◀▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊ Область данных ("Data Area") ▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▶▕ ▕ ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊ ▕ ▕ ▕ b) ▇двухстороннего диска:▁ ▕ ▕ ▕ ▕ ▁▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▚ ▕ ▕ ▕0 сектор▕1 сектор▕2 сектор▕3 сектор▕4 сектор▕5 сектор▕6 сектор▕ ▕ ▕ ▇▊▊▲▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▔ ▕ ▕ ▕ ▕◀▊▊▊▊▊▊▊▊▊ FAT ▊▊▊▊▊▊▊▊▊▊▶▕◀▊▊▊▊▊▊ Копия FAT ▊▊▊▊▊▊▊▶▕ ▕ ▕ ▕ ▕ ▕ Загрузочный сектор ("Boot sector") ▕ ▕ ▕ ▕ ▕ ▕ ▁▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▚ ▕ ▕ ▕7 сектор▕8 сектор▕9 сектор▕A сектор▕B сектор▕C сектор▕D сектор▕ ▕ ▕ ▇▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▔ ▕ ▕ ▕◀▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊ Каталог ("Directory") ▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▶▕ ▕ ▕ ▕ ▕ ▕ ▕ ▁▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▏▊▊▊▊▚ ▕ ▕ ▕E сектор▕F сектор▕10 сектор▕11 сектор▕12 сектор▕13 сектор▕ ...▕ ▕ ▕ ⁃▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▊▊▊▊ ▕ ▕ ▕ 2-й кластер ▕ 3-й кластер ▕ 4-й кластер ▕ ...▕ ▕ ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▔ ▕ ▕ ▕◀▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊ Область данных ("Data Area") ▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▶▕ ▕ ▕ ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▔ \/T1/1- ▇Обратите внимание, что первый кластер области данных имеет номер 002!