Жанр: Учеба
Программно-аппаратная организация компьютера IBM PC
... используется для
продолжения поиска файлов по родовому имени, начатого функцией 17. Функция
17 запускает поиск и возвращает первое из подходящих имен. Функция 18
продолжает поиск и возвращает имена всех последующих подходящих файлов.
Функция номер 19, шестнадцатиричное значение 13, используется для
удаления файла с дискеты. Заданное имя файла может быть родовым, так что
не требуется использовать функции 17 и 18 для удаления группы файлов.
Функция номер 20, шестнадцатиричное значение 14, используется для
последовательного чтения файла. Из файла считывается очередная запись.
Если чтение завершилось неудачей, то передается признак ошибки.
Функция номер 21, шестнадцатиричное значение 15, используется для
последовательной записи в файл. Если операция записи прошла неудачно, то
передается признак ошибки.
Эти функции последовательного чтения и записи, а также функции
прямого чтения и записи, 33 и 34, описанные ниже, используются только для
записей фиксированной длины - ДОС не обеспечивает средств для работы с
записями переменной длины, например, строками в текстовом файле. Для
работы с записями переменной длины Ваши программы должны осуществлять
логическую обработку записей. Одно из лучших средств для этого заключается
в описании файла в терминах ДОС как последовательного файла с записями
длиной в один байт, которые Вы сможете читать и писать посимвольно.
Функция номер 22, шестнадцатиричное значение 16, используется для
"создания" файла. Если файл с таким именем существует, то он используется
повторно; если нет - то создается новый элемент справочника файлов с
нулевой длиной данных. Эта функция также открывает файл, так что ее можно
использовать вместо функции 15, если файл необходимо открыть, независимо
то того, существует файл или нет. Функция 23, шестнадцатиричное значение
17, используется для переименования одного или нескольких файлов. Для этой
функции также могут использоваться родовые имена.
Функции с номером 24 не существует. Функция номер 25,
шестнадцатиричное значение 19, используется для определения номера
дисковода, использующегося сейчас по умолчанию. Числовой код дисковода от
0 до 3 соответствует именам от А до D. См. также функции 13 и 14.
Функция номер 26, шестнадцатиричное значение 1А, используется для
установления адреса рабочей области диска, DTA, в которой будут
выполняться операции с дискетой. Если Ваши программы не заменяют область
DTA, устанавливаемую по умолчанию, в ней будет всего 128 байт и нельзя
будет пересылать записи большей длины. DTA - это не то же самое, что буфер
чтения/записи секторов, используемый ДОС.
Функция номер 27, шестнадцатиричное значение 1В, используется для
определения адреса памяти, по которому находится таблица размещения файлов
текущего дисковода и другой информации о дискете. Эта функция может быть
использована для просмотра таблицы размещения файлов, например, чтобы
установить сколько места осталось на дискете. Начиная с версии 2.00 ДОС
эта функция обеспечивает доступ только к первой части ТРФ, которая
определяет тип дискеты.
Функции с номерами от 28 до 32 не существуют. Функция номер 33,
шестнадцатиричное значение 21, используется для чтения произвольной
записи, указываемой логическим номером записи. ДОС вычисляет положение
произвольной записи по фиксированной длине записи и ее номеру.
Функция номер 34, шестнадцатиричное значение 22, используется для
произвольной записи на дискету.
Функция номер 35, шестнадцатиричное значение 23, используется для
определения размера файла. При использовании этой функции имеет место ряд
странностей. Можно использовать родовое имя файла. Файл не должен быть
открыт. Размер файла определяется в терминах длины записи, указанной в
блоке управления неоткрытым файлом. Чтобы получить размер файла в байтах,
необходимо установить размер записи равным одному байту.
Функция номер 36, шестнадцатиричное значение 24, используется при
переходе от последовательного режима к произвольному. Она устанавливает
поле произвольной записи в ту же позицию, в которой находится текущая
последовательная запись.
Следующие две функции не относятся к обслуживанию дискет.
Функция номер 37, шестнадцатиричное значение 25, используется для
установки вектора прерывания. Поскольку вектора прерываний устанавливаются
очень просто, непонятно для чего нужна эта функция - разве что для
обеспечения дополнительной степени защиты.
Функция номер 38, шестнадцатиричное значение 26, используется для
создания нового программного сегмента в порядке подготовки к запуску
зависимой программы.
Теперь мы снова вернемся к функциям, обслуживающим файлы на дискетах.
Функция номер 39, шестнадцатиричное значение 27, используется для чтения
нескольких записей, начиная с произвольной позиции в файле.
Эта функция может быть использована вместо нескольких отдельных
вызовов функции 33, если объем памяти позволяет считывать целые блоки из
файлов.
Функция номер 40, шестнадцатиричное значение 28, используется при
записи в файл, начиная с произвольной позиции, нескольких записей.
Функция номер 41, шестнадцатиричное значение 29, используется для
преобразования имени файла в том виде, в каком оно вводится пользователем,
например, "В:CHAPTER.4", в формат блока управления файлом, который
используется ДОС. Это несомненно очень полезная функция, которая позволяет
вводить имена файлов в обычном виде и возлагать всю работу по разбору и
преобразованию на ДОС. Если необходимо, эта функция позволит Вам задать
идентификатор дисковода, имя файла или расширение имени по умолчанию,
когда они не указаны в анализируемой строке. Эта функция также позволяет
преобразовывать родовые имена файлов, включающие звездочку в формат
родового имени, состоящего из вопросительных знаков, как того требует
формат блока управления файлом.
Функция номер 42, шестнадцатиричное значение 2А, используется для
считывания системной даты. Дата выдается в виде трех двоичных чисел,
соответствующих году, месяцу и дню месяца. Как мы увидим в главе 11, дата
автоматически модифицируется при первом же запросе даты или времени после
очередной полуночи. Это происходит при любом запросе времени, включая
модификацию времени создания файла в элементе справочника файлов. Если
время не запрашивалось в промежутке от полуночи до полуночи хотя бы один
раз, то дата будет неверной.
Функция номер 43, шестнадцатиричное значение 2В, используется для
установки системной даты.
Функция номер 44, шестнадцатиричное значение 2С, используется для
считывания системного времени. Время выдается в часах, минутах, секундах и
сотых долях секунды. Счетчик таймера, использующийся для подсчета
системного времени, изменяется примерно 18 раз в секунду, так что значение
сотых долей секунды довольно приблизительно. Поскольку таймер должен
перезапускаться примерно каждые 0,0546 секунды, его нельзя использовать
для измерения очень коротких промежутков времени. Вычисление сотых долей
секунды, однако, выполняется точно по показаниям счетчика таймера и через
определенный промежуток времени значения сотых долей секунды будут
равномерно распределены в диапазоне от 0 до 99. Это означает, что Ваши
программы могут использовать системное время для генерации
псевдо-случайных чисел.
Функция номер 45, шестнадцатиричное значение 2D, используется для
установки системного времени.
Функция номер 46, шестнадцатиричное значение 2Е, используется для
управления верификацией записи на дискету. Если верификация разрешена, то
каждая операция записи будет проверяться на возможность возникновения
ошибки путем повторного считывания данных и их сравнения с исходными
данными. Маловероятно, что Вам потребуется эта функция, так как дискеты
достаточно надежны и довольно значительные проверки выполняются
автоматически. Но, если Вам потребуется верификация, то используйте
функцию 46.
Мы перечислили все имеющиеся функции ДОС. Позднее, когда мы
рассмотрим все возможности, предоставляемые системой BIOS в ПЗУ, Вы
заметите, что некоторые функции дублируются. Однако, в большинстве случаев
ДОС и BIOS в ПЗУ обслуживают совершенно различные нужды.
В следующей главе мы начинаем рассмотрение важного предмета - дискет
и форматов хранения данных на дискетах.
ГЛАВА 5. ОРГАНИЗАЦИЯ ВНЕШНЕЙ ПАМЯТИ
Дискеты стали не только стандартным, но и самым распространенным
носителем программ и данных для персональных компьютеров. В этой главе
будут приведены все необходимые сведения о дискетах, об особенностях их
структуризации. Кроме того, вы сможете кое-что узнать о защите от
копирования.
Весь материал, приведенный в настоящей главе, относится к семейству
компьютеров IВМ/РС, совместимыми с ними компьютерами, а также ко всем
компьютерам, работающим под управлением операционной системы МS-DOS.
Другие компьютеры могут использовать другие размеры дискет и форматы
данных.
Как уже указывалось в предыдущей главе, начиная с версии ДОС 2.00,
подключение к системе дискет новых типов осуществляется довольно просто.
Схема выполнения этой процедуры предполагает, что новые типы дисков
используются таким же образом, как те дискеты, которые были исходно
доступны для IBM/PC. Следовательно, вся информация, изложенная в этой
главе, может применяться и к тем новым дисковым устройствам, которые будут
добавлены в Вашу систему, за исключением конкретных чисел, задающих
специфические функции.
5.1. Устройство гибкого магнитного диска (дискеты)
Гибкие диски, как известно, являются идеальным носителем для внешней
памяти персональных компьютеров, подобных IBM/PC. Их размеры удобны, цена
не высока и они достаточно надежны в эксплуатации. При известной
осторожности в обращении дискеты очень редко портятся. Именно по этому
дискеты стали наиболее популярным носителем информации задолго до
появления компьютеров IBM/PC. Вполне естественно, что фирма ИБМ обратилась
к дискетам, выбирая носитель информации для своего компьютера IBM/PC.
Кратко рассмотрим, что собой представляет сама дискета. (Простая
схема приведена на рис.5.1.) Дискета представляет собой круглый кусок
гибкого пластика, покрытый магнитным окислом, напоминающим покрытие других
известных магнитных носителей, например, магнитных лент. Магнитные диски,
использующиеся на больших компьютерах, изготавливаются из жестких
металлических пластин, а для дискет используются гибкие пластиковые
кружки, что и дало им популярное название "гибкие" или "флоппи" - диски.
То, что эти диски были сделаны гибкими, значительно уменьшило вероятность
их повреждения при обращении с ними и это в значительной мере определило
их успех.
Круглый диск с магнитным покрытием всегда помещен в квадратный
предохранительный конверт. Внутренняя поверхность этого конверта покрыта
слоем белого фетро-подобного материала, помогающим в защите дискеты. Он
служит как для смягчения ударов, так и для улавливания пыли.
Квадратный предохранительный конверт, который по неизвестной причине
практически всегда имеет черный цвет, имеет четыре отверстия, каждое из
которых имеет свое собственное назначение. Отверстие в центре
предназначено для захвата дискеты приводом дисковода. Через это отверстие
механизм дисковода захватывает гибкий диск, чтобы привести его во
вращение.
Второе отверстие в предохранительном конверте представляет собой
продолговатую прорезь, через которую осуществляется доступ к дискете
головок чтения/записи. Через эту прорезь осуществляется процесс чтения и
записи информации.
Третье отверстие представляет собой небольшую дырочку возле
центрального отверстия. Это отверстие в конверте позволяет следить за
небольшим индексным отверстием в самой дискете. Индексное отверстие
используется для указания начала и конца дорожки на дискете. Это индексное
отверстие служит для определения точки отсчета при чтении или записи
информации.Если Вы никогда не видели индексного отверстия, осторожно
поверните дискету внутри конверта, пока оно не совместится с отверстием в
конверте. В дискетах такого типа, который используется в IBM/PC, это
единственное отверстие в пластиковом кружке.
Четвертое отверстие - квадратная прорезь на краю предохранительного
конверта - служит в качестве признака защиты записи. Практически все
магнитные носители используют те или иные признаки защиты от записи. Если
эта прорезь открыта, то запись на эту дискету может выполняться
дисководом, если же она закрыта, то дискета защищена от записи. В
конвертах некоторых дискет вообще нет такой прорези, что полностью
исключает возможность случайного стирания записанных на ней данных.
Отсутствие прорезей защиты записи характерно для многих дискет с
программным обеспечением IBM/PC, в частности, с самой операционной
системой ДОС. Эти дискеты записываются на специальных дисководах,
игнорирующих признак защиты записи.
Не следует, однако, считать, что заклеив прорезь защиты записи Вы
полностью защитите свои дискеты от случайного стирания. Закрытая прорезь
говорит только о том, что правильно работающий дисковод не будет пытаться
выполнять запись на такую дискету. Неисправный дисковод может делать все
что угодно, независимо от наличия или отсутствия признака защиты. Конечно,
маловероятно утратить данные именно таким образом, но все же это может
произойти.
5.2. Форматы хранения информации
Данные на дискете размещаются по "дорожкам". Дорожка - это замкнутая
окружность на поверхности дискеты, размещенная на определенном расстоянии
от центрального отверстия. Стандартный формат дискеты для IBM/PC имеет 40
дорожек.
Каждая дорожка разделена на части, называемые "секторами" или
"записями". Сектора представляют собой основную единицу хранения
информации на дискете. При чтении или записи устройство считывает или
записывает всегда целый сектор, независимо от объема запрашиваемой
информации несмотря на отсутствие ограничений. Хотя Вы, точнее Ваши
программы, могут организовывать свои данные в единицах произвольного
размера, компьютер и дисковод всегда работают с секторами, что, как
правило, скрыто от пользователя.
Термин "запись" иногда используется в том же смысле, что и "сектор".
Лучше будет оставить слово "запись" для обозначения логических единиц
хранения информации в наших программах и использовать слово "сектор" для
обозначения физической единицы хранения информации на дискете.
Данные могут размещаться как на одной стороне дискеты, так и на двух
сторонах. Схема размещения секторов на дискете показана на рис. 5.2.
Сейчас нужно ненадолго прерваться и договориться о терминологии.
Дискета имеет одну или две стороны; на каждой стороне по 40 дорожек; по
восемь секторов на дорожке и по 512 байт в каждом секторе. Как к ним
обращаться? В этой книге будет использоваться способ нумерации, принятый
во всех руководствах фирмы "ИБМ", хотя он и несколько противоречив.
Стороны нумеруются как 0 и 1, односторонняя дискета имеет только сторону с
номером 0 . Дорожки нумеруются с 0 по 39 ; причем дорожка 0 находится
ближе всего к внешнему краю дискеты, а дорожка 39 ближе к центру. Начало
дискеты находится на нулевой дорожке. Сектора, похоже просто чтобы сделать
их в чем-то отличающимися, нумеруются с 1 по 8. Таким образом, первый
сектор диска имеет номер 1 и располагается на нулевой дорожке нулевой
стороны.
Данные внутри сектора размещаются и адресуются произвольно. Если
пользоваться смещениями, то для первого байта смещение будет равно нулю,
для второго - единице, и так далее. В дальнейшем мы будем обращаться к
данным как по смещению (начиная с 0), так и по порядковому номеру (начиная
с 1), как в конкретном случае будет удобнее.
Сектора на дискете имеют определенную последовательность и, когда это
возможно, они используются в этой последовательности. Последовательность
начинается с самого первого сектора на дискете, за которым следуют
остальные сектора этой же дорожки (нулевой) со второго по восьмой. У
двухсторонних дискет за восьмым сектором нулевой стороны следует первый
сектор той же дорожки, но первой стороны. Как при одностороннем, так и при
двухстороннем формате дискет за последним сектором одной дорожки следует
первый сектор следующей дорожки.
Вы, вероятно, уже заметили, что на двухсторонних дискетах прежде чем
переходить к очередной дорожке, изменяется сторона, так что используется
одна дорожка на обеих сторонах, прежде чем система перейдет к следующей
дорожке. Таким образом, получается, что лучше было бы использовать при
обращении к конкретному сектору последовательность дорожка-сторона-сектор,
а не - сторона-дорожка-сектор, поскольку они используются именно в таком
порядке. Тем не менее, во всех руководствах фирмы "ИБМ" обычно указывают
сектор, задавая сторону, потом дорожку, а потом номер сектора и мы тоже
будем пользоваться такой же последовательностью.
5.3. Типы дискет и проблемы защиты от копирования
Типов дискет насчитывается значительно больше, чем используется
семейством компьютеров IBM/PC. Рассмотрим эти типы, чтобы лучше понимать,
что именно используется для IBM/PC.
Обычные гибкие диски имеют один из двух размеров. Больший формат
имеет диаметр 203 мм (8 дюймов), а меньший - 133 мм (5,25 дюйма). Недавно
появившиеся так называемые "микро-флоппи", диаметром 89 мм (3,5 дюйма),
заключены в твердую упаковку и, строго говоря, не являются гибкими
дисками.
Компьютеры IBM/PC, подобно большинству персональных компьютеров,
используют мини-диски диаметром 133 мм (5,25 дюйма), а компьютер IBM
Displaywriter (довольно близкий к РС по своим характеристикам) использует
больший формат.
Еще одной характеристикой дискеты, является плотность записи. В сфере
персональных компьютеров используются различные плотности записи, а
существующая терминология не всегда понятна. Стандартные дискеты,
используемые IBM/PC, имеют плотность записи, называемую двойной, что
позволяет записывать и считывать 40 дорожек данных на поверхности дискеты.
Другой использующийся формат называется учетверенной плотностью, что на
том же пространстве позволяет иметь 80 дорожек. Иногда плотность записи
обозначается в количестве дорожек на дюйм. Двойная плотность, нормальная
для IBM/PC, составляет 48 дорожек на дюйм (48 ТРI), а учетверенная
плотность составляет 96 дорожек на дюйм (96 ТРI).
Существует два способа разбивки (разметки) дорожек на сектора. Один
из них называется фиксированным или аппаратным, а второй - программным.
Если размер сектора задан жестко и определяется механическими
характеристиками устройства, то такая разметка называется фиксированной.
При фиксированной разметке индексные отверстия, расположенные по кругу,
обозначают начало каждого сектора и, следовательно, его положение на
дискете точно определено. Альтернативой для такой разметки служит
программная разметка.
Для стандартных дисков персональных компьютеров, размером 133 мм
(5,25 дюйма), расположение дорожек на диске и число сторон определяются
характеристиками самих дисков и дисководов и, по существу, являются
неизменными. Однако, количество секторов на дорожке и их размер
определяются программно, в процессе форматирования. Именно поэтому гибкие
диски называют дисками с программной разметкой секторов (soft-sector).
Форматирование (определение характеристик секторов) выполняется либо
программами операционной системы, либо базовой системы ввода/вывода
(BIOS).
Размер сектора 133 мм диска, поддерживаемого системой BIOS, может
составлять 128, 256, 512, и 1024 байта. ДОС (версий 1.ХХ-3.1)
ориентирована на использование секторов, размером 512 байт.
В ранних версиях ДОС использовалось ограниченное число дисковых
форматов. Начиная с версии 2.00 и во всех последующих используется четыре
основных формата. Различие между форматами определяется числом
используемых сторон диска и числом секторов на дорожке: одно- или
двухсторонний диск и 8 или 9 секторов на дорожке.
---------------------------------------------------------------
Обозначение Кол-во Количество Количество Объем
сторон секторов дорожек (Кбайт)
---------------------------------------------------------------
S-8 1 8 40 160
D-9 2 8 40 320
S-9 1 9 40 180
D-9 2 9 40 360
---------------------------------------------------------------
Причина существования четырех различных форматов проста, фирма хочет
быть уверена, что все версии ДОС смогут поддерживать программы,
разработанные для любых, самых ранних версий.
Первые модели IBM/PC оснащались односторонними гибкими дисками.
Впоследствии начали выпускаться дисководы для двухсторонних дисков.
В ранних версиях ДОС на каждой дорожке размещалось восемь 512-байтных
секторов, хотя на той же дорожке можно легко разместить и десять. Позже
установили, что достаточно надежно размещать на дорожке девять секторов,
после чего девятисекторный формат стал стандартным.
Увеличение числа форматов тесно связано с развитием операционной
системы ДОС. Первоначальная версия ДОС поддерживала всего один формат,
который я обозначил как S-8. В следующей версии появился формат D-8. В
версию 2.00 были включены девятисекторные форматы S-9 и D-9. В версии 2.10
новых форматов не появилось, а в версию 3.0 был включен формат с
учетверенной плотностью записи, который будет кратко рассмотрен несколько
позже.
Широкое применение получили только два формата: S-8 и D-9. Формат S-8
является как бы наименьшим общим делителем, он традиционно используется
для коммерческих программ, что гарантирует ее считывание в любой версии
ДОС.
Форматы с учетверенной плотностью записи
------------------------------------------
Как читатель уже наверное обратил внимание, все четыре стандартных
формата имеют одинаковое количество дорожек. Во всех этих форматах
используется по 40 дорожек. Это связано с тем, что дисководы, наиболее
часто использовавшиеся в семействе машин IBM/PC, разрабатывались для
чтения/записи сорока дорожек. Некоторые дисководы с 133-мм дисками и
практически все дисководы для 89-мм (3,5 дюйма) дисков позволяют
записывать 80 дорожек. Они получили название устройств с учетверенной
плотностью записи. Среди форматов, использующихся такими устройствами,
наибольшее распространение получили форматы QD-9 и QD-15.
_______________________________________________________________
Обозначение Количество Количество Количество Объем
сторон секторов дорожек (КБайт)
_______________________________________________________________
QD-9 2 9 80 720
QD-15 2 15 80 1200
_______________________________________________________________
Формат QD-9 отличается от D-9 только удвоенным числом дорожек. Формат
QD-9 чаще всего используется не для стандартных 133-мм дисков, а для 89-мм
(3,5 дюйма) микродисков. Дисководы с учетверенной плотностью записи могут
подключаться к обычному компьютеру IBM/PC как нестандартные устройства,
если включить в ДОС соответствующий драйвер. Предполагается, что этот
формат будет использоваться очень широко в самом ближайшем будущем.
Формат большой емкости QD-15, используемый в компьютере IBM/PC модели
АТ, имеет в каждой из 80 дорожек по 15 секторов, размером 512 байт. Это
стало возможным благодаря использованию в компьютере АТ специальных
дискет, магнитное покрытие которых отличается от обычного. Только при
условии использования этих дисков и специальных дисководов может
применяться такой формат.
Формат жесткого диска
---------------------
Накопители на жестких магнитных дисках большой емкости, такие как
10-мегабайтный жесткий диск компьютера ХТ или 20-мегабайтный диск
компьютера АТ, имеют собственные форматы, на которых необходимо
остановиться особо.
Любой диск имеет физический и логический формат. Физический формат
диска определяет размер сектора (в байтах), число секторов на дорожке (или
в цилиндре - для жестких дисков), число дорожек (цилиндров) и число
сторон. Логический формат диска определяет способ организации информации
на диске и фиксирует размещение информации различных типов.
В отличие от гибких дисков, физический и логический формат которых
устанавливается в процессе форматирования дискеты, жесткие диски поступают
к потребителю с определенным физическим форматом, который устанавливается
в процессе изготовления диска. Логическая структура жесткого диска
устанавливается пользователем, причем это должно быть сделано прежде чем
начнется использование диска операционной системой.Установка логической
структуры диска выполняется в
...Поділитися у соцмережах