Жанр: Учеба
Программно-аппаратная организация компьютера IBM PC
...два этапа. Во-первых, жесткий диск можно
разбить на части, каждая из которых может использоваться своей
операционной системой. Далее, каждую из этих частей необходимо
отформатировать в соответствии с требованиями той определенной системы,
для которой она предназначена.
Физические форматы жестких дисков:
______________________________________________________________
Тип Число Число Число Объем
компьютера сторон секторов цилиндров (МБ)
______________________________________________________________
ХТ 4 17 306 10
АТ 4 17 615 20
______________________________________________________________
Вернемся теперь к процессу форматирования. Данные на дискетах не
могут записываться и считываться произвольно. Необходимо обрамление данных
специальными электронными сигналами, записанными на дискете.
Это обрамление называется форматирующим. Поэтому, новые дискеты до их
использования должны быть отформатированы командой FORMAT операционной
системы ДОС.
Основная часть процесса форматирования состоит в записи адресных
меток, идентифицирующих каждый сектор, и указывающих его размер. Изучив
более подробно способы доступа к данным, хранящимся на дискете, Вы
увидите, что одна из ошибок, возникающих при чтении или записи, состоит в
отсутствии адресных меток.
Команда FORMAT не только размечает сектора дискет, формируя адресные
метки, но также устанавливает определенное значение в поля данных всех
секторов. Это значение (F6/16) или символьный код CHR$(246) позволяет
определять, использовался ли когда-нибудь определенный сектор или нет.
Одна из основных причин использования программной разметки
заключается, вероятно, в обеспечении средств защиты от копирования.
Операционная система ДОС позволяет считывать и записывать только сектора
стандартного размера 512 байт, хотя сами дисководы могут работать с
секторами произвольного размера. Можно написать такую программу, которая
не будет использовать средства ДОС для работы с гибким диском и будет
хранить часть своей информации или даже всю информацию в секторах
нестандартного размера, которые не будут читаться стандартными программами
ДОС. В этом и заключается основной принцип защиты от копирования в IBM/PC.
Хотя существуют различные способы защиты от копирования, наиболее простой
заключается в использовании секторов нестандартного размера. Обычно, лишь
небольшая часть информации хранится на защищенной от копирования дискете в
нестандартных секторах, а основная часть данных может храниться в обычных
512-байтных секторах.
Понятно, что все эти различные типы дискет практически несовместимы.
Одно из немногих исключений связано с одновременным использованием одно- и
двухсторонних дискет. Однако, для совместимости дискет важны даже не
физические различия. Для совместного использования дискеты должны иметь
совместимую логическую разметку (например, размещение справочника файлов).
Из-за логических различий невозможно просто перенести данные с дискеты
компьютера "Эппл" в память компьютера IBM/PC, или из операционной системы
ДОС в операционную систему СР/М-86. Для этого нужно написать специальную
программу преобразования, которая сможет выполнять эту задачу.
5.4. Стандартный накопитель информации на гибких магнитных дисках
Иногда какой-либо компании удается сделать столь хорошую продукцию,
что она становится промышленным стандартом, захватывая существенную часть
рынка за счет собственных объемов продаж и продаж близких имитаций этой
продукции.Это произошло с серией накопителей на гибких магнитных дисках ТМ
100 фирмы "Тэндон". Судя по всему, фирма "ИБМ" приняла эти дисководы в
качестве эталонных и, насколько можно о чем-либо судить в этой сфере
тщательно хранящихся секретов, только дисководы серии ТМ 100 фирмы
"Тэндон" поставляются фирмой "ИБМ" в качестве официального дисковода для
IBM/PC.
Существует четыре популярных варианта дисководов ТМ 100. Рассмотрим
эти варианты подробнее.
Устройства ТМ 100-1 предназначены для работы с односторонними дисками
с двойной плотностью записи (т.е., с 40 дорожками). Это устройство входило
в стандартный комплект первой версии IBM/PC. Позднее, одновременно с
внедрением ДОС версии 1.10, фирма "ИБМ" начала использовать дисководы ТМ
100-2, работающие по-прежнему с двойной плотностью, но уже с
двухсторонними дисками, что позволило вдвое увеличить объем хранения
информации. Ниже мы рассмотрим, как операционная система ДОС использует
разные типы дискет). Оставшиеся две модели, ТМ 100-3 и ТМ 100-4,
устройства позволяющие работать с одно- и двухсторонними дисками с
учетверенной плотностью записи, т.е. с восьмьюдесятью дорожками на
поверхности дискеты.
Не совсем понятно решение фирмы "ИБМ" использовать односторонние
дискеты наряду с двухсторонними. С точки зрения дальних перспектив
компьютера такое решение выглядит неразумным. Наиболее вероятной причиной
использования односторонних дискет является желание фирмы ИБМ снизить цену
своего компьютера, которая и так существенно превышает цену обычных
домашних компьютеров.
Имеется ряд признаков, свидетельствующих о стремлении фирмы предельно
снизить цену базовой модели. По крайней мере, это единственный аргумент
которым можно объяснить появление практически нигде не использующейся
модели с накопителем на кассетной магнитной ленте и применения
односторонних дискет в первых модификациях IBM/PC. Расчет делался на то,
что серьезные пользователи, думающие о перспективе, будут приобретать
машины, оснащенные более мощными дисками, а чтобы не отпугнуть
колеблющегося новичка высокой ценой, фирма ИБМ выбрала из всех имеющихся
дисководов устройство с наиболее умеренной ценой - устройство с
односторонними дисками.
5.5. Принципы хранения файлов
Можно использовать различные схемы для организации, хранения и учета
данных на дискете. Каждая из схем имеет свои достоинства и недостатки с
точки зрения эффективности использования пространства памяти дискеты,
скорости доступа, безопасности и качества хранения данных. (Понятие
качества хранения данных подразумевает вероятность каких-либо нарушений
при хранении и трудность восстановления данных, если нарушения произошли.)
Разработка схемы хранения данных состоит в искусстве сочетания всех этих
аспектов, иногда противоречащих друг другу.
В этом параграфе будет описана схема хранения данных, используемая в
MS-ДОС. Прежде чем перейти к подробному рассмотрению схемы хранения,
опишем ее в общих чертах. Первое, что следует подчеркнуть, это
использование для хранения данных стандартных 512-байтных секторов.
Второе. Все сектора извлекаются из общего пула свободных секторов -
никакие сектора или области на дискете не резервируются (исключение
составляет область для размещения системных файлов IBMBIO.COM и
IBMDOS.COM, о чем будет сказано ниже). Третье. Распределение секторов
данных и обьединение секторов, образующих файл данных, выполняется
независимо от обслуживания самих секторов данных, с помощью механизма,
получившего название Таблицы Распределения Файлов (ТРФ). И последнее.
Каждая дискета имеет справочник или таблицу содержимого, которая служит
для учета файлов, хранящихся на дискете файлов. Описанная схема хранения
данных предполагает существование четырех различных типов секторов, один
из которых используется для хранения данных, а три других имеют
специальное назначение.
Как уже упоминалось в предыдущей главе, любая дискета, которая должна
использоваться для запуска операционной системы, должна иметь программу
загрузки, записывающуюся в самом первом секторе дискеты. Программа
загрузки всегда записывается в первый сектор любой форматируемой дискеты
(если задан соответствующий режим форматирования) независимо от того,
будет ли она когда-нибудь использоваться для запуска системы. Сектор с
программой загрузки представляет собой первый специальный тип сектора в
ДОС.
Второй специальный тип сектора используется для хранения таблицы
таблицы размещения файлов (ТРФ). ТРФ занимает два сектора, следующих за
сектором с программой загрузки. Таблица размещения файлов служит для
индикации занятости секторов данных на дискете.
Третий и последний специальный тип сектора используется для хранения
справочника дискеты. Справочник располагается следом за ТРФ. Справочник
может иметь различные размеры: односторонние дискеты имеют четыре сектора
справочника, а двусторонние дискеты - семь.
Все эти сектора специального назначения занимают семь первых секторов
односторонней дискеты или десять - двусторонней. Bсе остальные сектора
используются для хранения данных. На рис. 5.3 показано размещение всех
этих четырех типов секторов на дискете.
Справочник и таблица размещения файлов располагаются в начале
дискеты. На первый взгляд это представляется оптимальным размещением.
Однако, при доступе к файлу ДОС сначала должен найти элемент этого файла в
справочнике, а потом обратиться собственно к данным на дискете. В среднем,
расстояние между справочником и собственно файлом на дискете составляет 20
дорожек, то есть, практически половину дискеты. Перемещение головок
чтения-записи в дисководе является самой медленной операцией. Так что
расстояние между справочником и самим файлом может иметь важное значение с
точки зрения временных характеристик работы.
Если бы справочник располагался в середине дискеты, то среднее
расстояние до секторов данных уменьшилось бы вдвое, т.е., до 10 дорожек. С
другой стороны, работа с пространством данных, состоящим из двух частей,
по обе стороны от справочника, будет значительно сложнее. Для операционных
систем персональных компьютеров выгода от размещения справочника посредине
дискеты слишком мала, чтобы браться за разрешение возникающих при этом
дополнительных проблем. Такой прием обычно используется в больших
компьютерных системах.
Далее мы подробно рассмотрим справочник дискеты и таблицу размещения
файлов. Разобравшись в этом вопросе нам легче будет понять, как
производится распределение пространства на диске между файлами.
5.6. Организация справочника
Справочник дискеты содержит список всех файлов, находящихся на
дискете. Элементы справочника содержат всю необходимую информацию о файле,
за исключением информации о размещении файла (которая хранится в ТРФ).
Каждый элемент справочника имеет длину 32 байта. Следовательно, в
512-байтном секторе помещается ровно 16 элементов справочника. На
односторонней дискете выделено 4 сектора для справочника, что позволяет
хранить 64 элемента справочника. Семь секторов справочника двусторонней
дискеты позволяет разместить 112 элементов.
Большая часть из 32 байтов элемента справочника используется для
хранения информации о файле, однако имеется ряд неиспользуемых полей,
зарезервированных для дальнейшего использования. Одно из различий между
версиями ДОС 1.00 и 1.10 заключается в использовании некоторых из этих
полей, а ДОС версии 2.00 еще более расширяет использование справочника.
Теперь подробно рассмотрим каждую часть элемента справочника.Листинг
программы 5.1 содержит об'явления форматов данных на языке Паскаль, а
листинг 5.3 содержит несколько процедур для работы со справочником -
чтения, интерпретации и записи обратно на дискету.
Программа DiskLook, входящая в пакет программ, прилагаемых к этой
книге, разработана для отображения полной информации из справочника
дискеты. Во время изучения этой главы можно использовать эту программу,
чтобы лучше понять назначение всех полей элемента справочника. Если
используется программа DiskLook, то для получения на экране информации из
справочника нужно нажать функциональную клавишу F4.
Каждый элемент справочника состоит из восьми частей или полей
следующего назначения:
ИМЯ ФАЙЛА: Это поле имеет длину восемь байт, расположенных в элементе
справочника со смещениями от 0 до 7 и содержит имя файла. Если длина имени
меньше восьми символов, то недостающие символы заменяются пробелами.
Правилами оформления имен файлов в ДОС запрещается включать пробелы в
середину имени файла. Но такие имена файлов все же могут создаваться. Это
можно делать на языке Бейсик, поскольку в нем ограничителем имени служат
кавычки. Например, следующий оператор Бейсика позволяет создать файл, имя
которого содержит пробел:
OPEN "AA BB.FIL"
Программа "IBM Typing Tutor", написанная на Бейсике, использует
файлы, имена которых содержит пробелы. При использовании программы поиска
имени файла в справочнике, не следует считать, что имя файла завершается
первым же встреченным пробелом - имя может продолжаться и после этого
пробела.
Если первый байт имени файла имеет шестнадцатеричное значение Е5,
CHR$(229), это означает, что элемент справочника не используется. Это
может значить, что он никогда не использовался или что файл, которому
соответствовал этот элемент, уже уничтожен. Проверка второго байта имени
позволяет установить отличие неиспользовавшегося элемента от элемента
уничтоженного файла (если значение второго байта больше символьного кода
"Z", этот элемент не использовался). В последних версиях ДОС
неиспользованные элементы справочника содержат в первом байте 0.
После уничтожения файла с ним происходит следующее: занимаемое им
место возвращается в общий пул (об этом будет подробнее сказано в
следующем разделе) и первый символ имени файла заменяется
шестнадцатеричным кодом Е5, CHR$(229). Вся информация в элементе
справочника, за исключением первого символа имени, сохраняется. Благодаря
этому, программа DiskLook может отображать имена уничтоженных файлов, а
программа подобная UnErase - восстанавливать файлы.
Еще один код, который может встретиться в первом байте имени файла -
это шестнадцатеричный код 2Е, который указывает на справочник нижнего
уровня.
РАСШИРЕНИЕ: Это поле имеет длину три байта, которые расположены со
смещениями от 8 до 10 от начала элемента справочника. Оно содержит
расширение имени файла. Как и в случае с самим именем, короткое расширение
дополняется пробелами. Если файл не имеет расширения, то это поле содержит
три пробела.
АТРИБУТ: Это поле состоит из одного байта, расположенного со
смещением 11 от начала элемента справочника. Поле атрибута используется
для установления признака "скрытого" файла, т.е. такого файла, имя
которого не обнаруживается обычными программами работы со справочниками.
Два бита этого байта служат для индикации атрибутов "скрытого" и
"системного" файла. Остальные шесть бит не были определены в ранних
версиях ДОС и только начиная с версии 2.00 часть из них стала
использоваться. Во всех более ранних версиях эти биты не определены и
устанавливаются в нуль.
Седьмой бит байта атрибутов с числовым значением 2 определяет скрытый
файл, а шестой, с числовым значением 4, - системный файл. Таким образом,
обычный видимый файл будет иметь нулевой байт атрибута, для скрытого файла
байт атрибута имеет значение 2, для системного файла - 4, а для скрытого
системного файла - 6.
Хотя обработка системного атрибута осуществляется независимо от
скрытого, оба эти атрибута практически совпадают по своему функциональному
назначению. При использовании любого из них файл становится "невидимым"
для обычных программ работы со справочниками. Системный атрибут
зарезервирован не для использования в будущем, а (по сведениям фирмы
"Майкрософт") для обеспечения совместимости с другими операционными
системами.
В версиях ДОС, следующих за версией 2.00 используются еще четыре
бита. Бит 0 (с единичным значением) указывает, что файл доступен только
для чтения. Такой файл защищен от изменений и уничтожения средствами ДОС.
Бит 3 (с числовым значением 8) указывает, что элемент справочника
содержит метку тома. Сама метка хранится в полях имени файла и расширения,
которые воспринимаются в этом случае как одно целое.
Бит 4 (с числовым значением 16) используется для указания элементов
справочника, соответствующих справочникам нижнего уровня. Поскольку
справочники нижнего уровня хранятся на диске подобно обычным файлам
данных, им необходим собственный элемент в корневом справочнике. В этом
элементе используются все поля, кроме размера файла, в данном случае
равного нулю. Действительный размер файла справочника нижнего уровня легко
определяется из соответствующей последовательности в ТРФ.
Бит 5 (с числовым значением 32) предусмотрен для облегчения создания
резервных копий файлов на жестких дисках. Для файлов на гибких дисках этот
атрибут практически бесполезен.
ЗАРЕЗЕРВИРОВАННОЕ ПОЛЕ: Это поле зарезервировано для возможного
использования в будущем. В первой версии ДОС это поле имело длину 12 байт,
но в дальнейшем его сократили до 10 байт, расположенных со смещениями от
12 до 21 относительно начала элемента справочника.
Любые новые операции над справочником файлов, которые могут
использовать это поле. Когда элемент справочника находится в активном
состоянии (используется), то эти байты принимают значение 00. В исходном
состоянии байты этого поля имеют шестнадцатеричные значения F6,
установленные командой FORMAT. Любые другие значения этого поля указывают
на какой-либо вариант его использования.
ВРЕМЯ: Это поле имеет длину два байта в формате 16-разрядного целого
числа без знака, расположенные со смещениями 22 и 23 относительно начала
элемента. Начиная с версии ДОС 1.10 в этом поле хранится время создания
или модификации файла. В первой версии ДОС хранилась только дата, а это
поле было частью зарезервированного поля.
Большинство операций, использующих это поле, таких как операция
распечатки содержимого справочника DIR, выдают время с точностью до минут,
хотя число хранящееся в поле времени позволяет определить время с
точностью до двух секунд.
Код времени, хранящийся как 16-разрядное целое число без знака,
вычисляется по следующей формуле:
время = часы * 2048 + минуты * 32 + секунды / 2
ДАТА : Это поле состоит из двух байт, хранящихся со смещениями 24 и
25 от начала элемента. Как и время, даты хранятся в виде целого
16-разрядного числа без знака, которое вычисляется по формуле:
Дата = (год - 1980) * 512 + Месяц * 32 + День
Диапазон изменения лет составляет от 1980 до 2099, причем хранятся
они в виде относительных величин от 0 до 199. Хотя формат позволяет
задавать относительный номер года 127 (что соответствует 2107 году),
программы ДОС позволяют работать с годами только до 2099. Никто, правда,
не ожидает, что ДОС будет использоваться так долго.
Как формат, так и размещение полей даты и времени подобраны таким
образом, чтобы вместе они образовывали единое четырехбайтовое поле,
которое можно использовать в операциях сравнения. Достаточно просто
извлекать компоненты даты и времени из соответствующих полей и вычислять
их разность. Например, для разделения даты на составные части можно
использовать следующие формулы, записанные на Паскале:
год := 1980 + поле_даты div 512
месяц := (поле_даты mod 512) div 32
день := поле_даты mod 32
НОМЕР НАЧАЛЬНОГО КЛАСТЕРА : Это двухбайтовое поле, расположенное со
смещением 26, 27 от начала элемента, содержит 16-разрядное число,
являющееся смещением до начальной точки файла в таблице размещения файлов
(ТРФ); подробнее от этом сказано в следующем разделе. Начальный кластер
является первой частью пространства данных на дискете.
РАЗМЕР ФАЙЛА : Это поле состоит из четырех байтов, размещенных со
смещениями от 28 до 31 от начала элемента. Размер файла задается в байтах
и хранится в формате четырехбайтового целого числа без знака, которое
может рассматриваться как пара двухбайтовых чисел. Размер файла не всегда
указывает точное число байтов. Для всех файлов это поле должно
соответствовать размеру файла в секторах.( Если по какой-либо причине это
не так, то процедура ДОС CHKDSK сообщит об ошибке и установит правильную
длину.)
Для программных файлов, представленных в формате типа ".COM" и для
файлов, созданных из данных фиксированной длины, только поле размера файла
позволяет точно определить, где находится конец данных. Для этих файлов
значение в поле размера файла хранится с точностью до байта.
Для файлов некоторых других форматов такая точность не обязательна и
размер файла, указанный в соответствующем поле, может отличаться от
действительного. Наиболее часто это случается с текстовыми файлами,
которые будут описаны в разделе 5.9 . Текстовые файлы в коде ASCII имеют
маркер (признак) конца файла, хранящийся в самом файле, который фиксирует
точный конец данных. По этой причине многие программы, работающие с
текстовыми файлами, не слишком заботятся о сохранении действительного
размера файла.
Например, если программа формирует текстовой файл не побайтно, а
блоками по 128 байт, то ДОС определит размер файла с точностью до 127
байт. Для программ редактирования текстов значительно эффективнее читать и
записывать данные большими блоками, чем делать это побайтно. Такой подход
является довольно распространенным и не следует чересчур доверять значению
размера файла, по крайней мере, для текстовых файлов.
Справочники нижнего уровня
__________________________
Существуют два типа справочников: корневые и справочники нижнего
уровня. Содержимое и характер использования справочников обоих типов по
существу одинаковы - те и другие хранят имена файлов и сведения о них и их
расположении на диске. Однако, характеристики этих справочников
различаются. Корневые справочники (или просто справочники) имеют
фиксированный размер и хранятся в определенном месте на дискете.
Справочник нижнего уровня является дополнением корневого справочника и
может храниться как обычный файл в любом месте на дискете. Справочники
нижнего уровня могут использоваться любой версией ДОС, следующей за
версией 2.00.
Справочники нижних уровней хранятся в пространстве данных диска как
обычные файлы. Форматы полей и содержимое справочников нижнего уровня
такие же как у корневого справочника, с той лишь разницей, что размер
справочника нижнего уровня не ограничен. Справочники нижнего уровня всегда
связаны с порождающим справочником, который может быть как корневым
справочником, так и справочником более высокого уровня.
В порождающем справочнике всегда имеется элемент для справочника
нижнего уровня,отличающийся от обычного элемента установленным битом 4
байта атрибутов и нулевым значением размера файла. Действительный размер
справочника можно определить, проследив всю цепочку в таблице размещения
файлов.
При создании справочников нижнего уровня в них выделяются два
элемента, в которых в качестве имени файла указана точка и две точки ( "."
и "..").
Элемент с одной точкой относится к этому справочнику, а элемент с
двумя точками - к его порождающему справочнику. Номера начальных кластеров
в этих элементах указывают соответственно местоположение самого
справочника и его порождающего.
Если номер начального кластера для порождающего справочника равен
нулю, то порождающим является корневой справочник.
Когда размер файла уменьшается, ДОС возвращает освободившееся место
на дискете в общий пул. Однако, если информация о файле хранится в
справочнике нижнего уровня, то освободившееся место нельзя будет
использовать, пока не будет уничтожен весь этот справочник.
5.7 Структура Таблицы Размещения Файлов (ТРФ)
Процедура распределения пространства памяти на дискете между файлами
реализуется с помощью таблицы размещения файлов (ТРФ). Использование ТРФ и
интерпретация ее содержимого представляет собою непростую задачу -
следовательно необходимо некоторое более подробное разъяснение. Основной
принцип организации ТРФ заключается в создании таблицы, каждый элемент
которой соответствует одному кластеру или фрагменту дискового пространства
выделяемого файлу. Элементы таблицы содержат признаки занятости кластера
или что он свободен и может быть отведен для файла. Доступные или
свободные элементы таблицы содержат нулевые значения. Участки пространства
на дискете, принадлежащие файлу, связаны в цепочку. Элемент справочника
файла содержит номер элемента в ТРФ, который соответствует первому из
участков, выделенных для файла. Элемент ТРФ содержит номер элемента
следующего файла и так далее, пока не будет достигнут последний участок
файла. В последнем элементе ТРФ для файла находится признак конца файла.
Схема такой организации изображена на рис. 5.4 .
Такова в общих чертах схема ТРФ. Рассмотрим теперь ее подробнее.
Во-первых, рассмотрим кластеры выделяемого пространства памяти. Для
односторонних дискет пространство выделяется по одному сектору. Для
двухсторонних дискет выделяются каждый раз два сектора .
...Поділитися у соцмережах